阿里巴巴中间件TDDL用于连接数据库,分表分库查询
1.创建数据源
由DBA来做。
一般数据源有3层:
(1)Matrix
分库分表,数据路由,对应一个应用,下面有若干个group
(2)Group
主备切换,读写分离,对应一组主备数据库,下面有若干atom
(3)Atom
对应一个数据库实例
2.创建分库分表规则
(1)编写规则文件
实际上就是spring配置文件的一部分
[html] view plain copy print ?- xml version="1.0" encoding="gb2312"?>
- "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean id="vtabroot" class="com.taobao.tddl.interact.rule.VirtualTableRoot" init-method="init">
- <property name="defaultDbIndex" value="TDDL_DEFAULT_GROUP" />
- <property name="dbType" value="MYSQL">property>
- <property name="tableRules">
- <map>
- <entry key="user" value-ref="user_bean">entry>
- <entry key="admin" value-ref="admin_bean">entry>
- <entry key="picture" value-ref="picture_bean">entry>
- map>
- property>
- bean>
- <property name="dbNamePattern" value="TDDL_{0000}_GROUP" />
- <property name="dbRuleArray">
- <value>(#user_id,1,64#.longValue() % 64).intdiv(32)value>
- property>
- <property name="tbNamePattern" value="user_{0000}">property>
- <property name="tbRuleArray">
- <value>#user_id,1,64#.longValue() % 64value>
- property>
- <property name="allowFullTableScan" value="true" />
- bean>
- <property name="dbNamePattern" value="TDDL_DEFAULT_GROUP" />
- <property name="tbNamePattern" value="admin_{00}">property>
- <property name="tbRuleArray">
- <value>#user_id,1,4#.longValue() % 4value>
- property>
- bean>
- <bean id="picture_bean" class="com.taobao.tddl.interact.rule.TableRule">
- <property name="dbNamePattern" value="TDDL_DEFAULT_GROUP" />
- <property name="tbNamePattern" value="picture">property>
- bean>
- 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 ?- <dependency>
- <groupId>com.taobao.tddlgroupId>
- <artifactId>tddl-clientartifactId>
- <type>jartype>
- dependency>
com.taobao.tddl tddl-client jar (2)在spring配置文件中配置tddl
[html] view plain copy print ?
- <bean id="s2sTddlGroupDataSource" class="com.taobao.tddl.jdbc.group.TGroupDataSource" init-method="init">
- <property name="appName" value="${alibaba.intl.s2s.tddl.appname}">property>
- <property name="dbGroupKey" value="${alibaba.intl.s2s.tddl.groupname}">property>
- <property name="dataSourceType" value="DruidDataSource">property>
- <property name="dynamicRule" value="true">property>
- bean>
appName指的是应用的名称,需要和在tddl ops上配置的appName一致
dynamicRule表示配置放在diamond上,useLocalConfig表示配置放置在本地,appRuleFile表示本地的规则文件的路径
[html] view plain copy print ?
- <bean id="s2sSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
- <property name="configLocation" value="/biz/sqlmap-s2s.xml" />
- <property name="dataSource" ref="s2sTddlGroupDataSource" />
- bean>
然后就可以像使用一个数据库一张表一样进行开发了
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
