tddl
TDDL动态数据源使用示例说明:http://rdc.taobao.com/team/jm/archives/1645 https://www.cnblogs.com/adealjason/p/6364806.html
diamond简介和快速使用:http://jm.taobao.org/tag/diamond%E4%B8%93%E9%A2%98/
TDDL源码:https://github.com/alibaba/tb_tddl
1,配置多数据源
2.配置com.taobao.tddl.client.jdbc.TDataSource
3,配置规则tddl-rule-gcoin.xml
4,测试
1,<property name="dbRuleArray" value="#pk,1,2#.longValue() % 2"/> #pk,1,2#当sql语句中有>或<号时必须这样写,1是跨度,2是最大枚举(写大于2的也行)
当sql里既有>又有<时最大枚举无效不用设置也行
2,可用非分片字段做查询,不受规则影响既不用设置#pk,1,2#
<property name="dbIndexes" value="group_cut_0,group_cut_1" />
<property name="dbRuleArray" value="(#pk#.longValue() % 4).intdiv(2)"/>
<property name="tbRuleArray" value="#pk#.longValue() % 4 % 2"/>
<property name="tbSuffix" value="throughAllDB:[_0-_3]" />
1、两库4表tbl_userinfo_0,tbl_userinfo_1,tbl_userinfo_2,tbl_userinfo_3,建表时必须按库的顺序建
2、当使用><号查询时,使用#pk,1,4#
1,配置多个数据源
2,配置TDateSource
3,配置规则
<bean id="root" class="com.taobao.tddl.common.config.beans.AppRule" init-method="init">
<property name="readwriteRule" ref="readwriteRule" />
</bean>
<bean id="readwriteRule" class="com.taobao.tddl.common.config.beans.ShardRule">
<property name="dbtype" value="MYSQL" />
<property name="defaultDbIndex" value="group_cut_0" />
<property name="tableRules">
<map>
<!-- key表名 value规则 -->
<!-- 如果多个表对应同样的规则必须把规则bean设置成sinpleton=false或者复制3个bean -->
<entry key="tbl_userinfo" value-ref="tbl_userinfo" />
</map>
</property>
</bean>
<bean id="tbl_userinfo" class="com.taobao.tddl.common.config.beans.TableRule">
<property name="dbIndexes" value="group_cut_0,group_cut_1,group_cut_2,group_cut_3" />
<!– 分库规则 –>
<property name="dbRuleArray" value="cn.com.xmh.gfscut.dao.rule.MyDbRule.getIndex(#pk#)"/>
<property name="tbSuffixWidth" value="4"/>
<property name="tbSuffixPadding" value="_"/>
<property name="tbSuffix" value="throughAllDB:[_0000-_0015]" />
<property name="tbRuleArray" value="cn.com.xmh.gfscut.dao.rule.MyTbRule.getIndex(#pk#)"/>
<property name="disableFullTableScan" value="false"/>
</bean>
MyDbRule 自己实现