Last active
January 14, 2019 06:20
-
-
Save yangl/b1eba6cd274a144b73e73b2858c9a05d to your computer and use it in GitHub Desktop.
sharding-jdbc配置例子,注意:1.groovy整除是"intdiv()"不是"/";2.groovy三元表达式支持可能不太好,暂时先使用if else;3.ddl语句sjdbc不支持,可使用JdbcTemplate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- bc0 bc1分库分表策略 --> | |
<!-- 按uid分库:最后两位0-49在bc_0库,50-99在bc_1库 --> | |
<rdb:strategy id="balanceDatabaseStrategy" sharding-columns="uid" | |
algorithm-expression="bc_${if(uid.longValue()%100>49){1}else{0}}"/> | |
<!--algorithm-expression="bc_${uid.longValue()%100>49?1:0}"/>--> | |
<!-- 按uid%100分表 --> | |
<rdb:strategy id="balanceTableStrategy" sharding-columns="uid" | |
algorithm-expression="balance_${uid.longValue() % 100}"/> | |
<!-- 按trade_time的分表,动态表 dynamic="true" --> | |
<rdb:strategy id="balanceLogTableStrategy" sharding-columns="trade_time" | |
algorithm-expression="balance_log_${trade_time.toString('yyyyMMdd')}"/> | |
<rdb:data-source id="balanceShardingDataSource"> | |
<rdb:sharding-rule data-sources="bc_0,bc_1" default-data-source="bc_0"> | |
<rdb:table-rules> | |
<rdb:table-rule logic-table="balance" actual-tables="balance_${0..99}" | |
database-strategy="balanceDatabaseStrategy" table-strategy="balanceTableStrategy"/> | |
<rdb:table-rule logic-table="balance_log" dynamic="true" database-strategy="balanceDatabaseStrategy" | |
table-strategy="balanceLogTableStrategy"/> | |
</rdb:table-rules> | |
</rdb:sharding-rule> | |
</rdb:data-source> | |
<!-- 按uid分库:倒数第三位决定在哪个db --> | |
<rdb:strategy id="dasDatabaseStrategy" sharding-columns="uid" | |
algorithm-expression="das_${(uid.longValue() % 1000).intdiv(100)}"/> | |
<!-- 按uid分表:最后两位决定使用哪张表 --> | |
<rdb:strategy id="dasBalanceLogTableStrategy" sharding-columns="uid" | |
algorithm-expression="balance_log_${uid.longValue() % 100}"/> | |
<rdb:data-source id="dasAliyunShardingDataSource"> | |
<rdb:sharding-rule | |
data-sources="das_0,das_1,das_2,das_3,das_4,das_5,das_6,das_7,das_8,das_9"> | |
<rdb:table-rules> | |
<rdb:table-rule logic-table="balance_log" actual-tables="balance_log_${0..99}" | |
database-strategy="dasDatabaseStrategy" table-strategy="dasBalanceLogTableStrategy"/> | |
</rdb:table-rules> | |
</rdb:sharding-rule> | |
</rdb:data-source> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment