阿里巴巴中间件TDDL用于连接数据库,分表分库查询

1.创建数据源

          由DBA来做。

           一般数据源有3层:

          (1)Matrix

                     分库分表,数据路由,对应一个应用,下面有若干个group

          (2)Group

                     主备切换,读写分离,对应一组主备数据库,下面有若干atom

          (3)Atom

                     对应一个数据库实例


2.创建分库分表规则

              (1)编写规则文件

                        实际上就是spring配置文件的一部分

[html] view plain copy print ?
  1. xml version="1.0" encoding="gb2312"?>  
  2.   
  3.   
  4. "http://www.springframework.org/dtd/spring-beans.dtd">  
  5.   
  6. <beans>  
  7.   
  8.      
  9.   
  10.     <bean id="vtabroot" class="com.taobao.tddl.interact.rule.VirtualTableRoot" init-method="init">  
  11.   
  12.          
  13.   
  14.         <property name="defaultDbIndex" value="TDDL_DEFAULT_GROUP" />  
  15.   
  16.          
  17.   
  18.         <property name="dbType" value="MYSQL">property>  
  19.   
  20.          
  21.   
  22.         <property name="tableRules">  
  23.   
  24.             <map>  
  25.   
  26.                  
  27.   
  28.                 <entry key="user" value-ref="user_bean">entry>  
  29.   
  30.                  
  31.   
  32.                 <entry key="admin" value-ref="admin_bean">entry>  
  33.   
  34.                  
  35.   
  36.                 <entry key="picture" value-ref="picture_bean">entry>  
  37.   
  38.             map>  
  39.   
  40.         property>  
  41.   
  42.     bean>  
  43.   
  44.      
  45.   
  46.         <property name="dbNamePattern" value="TDDL_{0000}_GROUP" />  
  47.   
  48.          
  49.   
  50.        <property name="dbRuleArray">  
  51.   
  52.              
  53.   
  54.             <value>(#user_id,1,64#.longValue() % 64).intdiv(32)value>  
  55.   
  56.         property>  
  57.   
  58.          
  59.   
  60.         <property name="tbNamePattern" value="user_{0000}">property>  
  61.   
  62.          
  63.   
  64.         <property name="tbRuleArray">  
  65.   
  66.              
  67.   
  68.             <value>#user_id,1,64#.longValue() % 64value>  
  69.   
  70.         property>  
  71.   
  72.          
  73.   
  74.         <property name="allowFullTableScan" value="true" />  
  75.   
  76.     bean>  
  77.   
  78.      
  79.   
  80.         <property name="dbNamePattern" value="TDDL_DEFAULT_GROUP" />  
  81.   
  82.         <property name="tbNamePattern" value="admin_{00}">property>  
  83.   
  84.         <property name="tbRuleArray">  
  85.   
  86.             <value>#user_id,1,4#.longValue() % 4value>  
  87.   
  88.         property>  
  89.   
  90.     bean>  
  91.   
  92.      
  93.   
  94.     <bean id="picture_bean" class="com.taobao.tddl.interact.rule.TableRule">  
  95.   
  96.         <property name="dbNamePattern" value="TDDL_DEFAULT_GROUP" />  
  97.   
  98.         <property name="tbNamePattern" value="picture">property>  
  99.   
  100.     bean>  
  101. beans>  
(#user_id,1,64#.longValue() % 64).intdiv(32)#user_id,1,64#.longValue() % 64#user_id,1,4#.longValue() % 4

              (2)使用规则

                         1)远端配置

                                在tddl 的ops中->TDDL配置管理->新增配置,然后将编写的规则文件内容复制进去,提交即可

                         2)本地配置

                                将规则文件放置在项目路径中即可


3.创建应用

              (1)添加依赖

[html] view plain copy print ?
  1. <dependency>  
  2.     <groupId>com.taobao.tddlgroupId>  
  3.     <artifactId>tddl-clientartifactId>  
  4.     <type>jartype>  
  5. dependency>  
		com.taobao.tddltddl-clientjar
              (2)在spring配置文件中配置tddl

[html] view plain copy print ?
  1. <bean id="s2sTddlGroupDataSource" class="com.taobao.tddl.jdbc.group.TGroupDataSource" init-method="init">  
  2.      <property name="appName" value="${alibaba.intl.s2s.tddl.appname}">property>  
  3.        
  4.   
  5.      <property name="dbGroupKey" value="${alibaba.intl.s2s.tddl.groupname}">property>  
  6.      <property name="dataSourceType" value="DruidDataSource">property>  
  7.      <property name="dynamicRule" value="true">property>  
  8.        
  9. bean>  
    

                         appName指的是应用的名称,需要和在tddl ops上配置的appName一致

                         dynamicRule表示配置放在diamond上,useLocalConfig表示配置放置在本地,appRuleFile表示本地的规则文件的路径   

              (3)有了这个数据源之后,就可以将数据源配置到jdbc、ibatis等Template中了

[html] view plain copy print ?
  1. <bean id="s2sSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  2.     <property name="configLocation" value="/biz/sqlmap-s2s.xml" />  
  3.     <property name="dataSource" ref="s2sTddlGroupDataSource" />  
  4. bean>  
    

              然后就可以像使用一个数据库一张表一样进行开发了


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部