Skip to content

Instantly share code, notes, and snippets.

@yangl
Last active January 14, 2019 06:20
Show Gist options
  • Save yangl/b1eba6cd274a144b73e73b2858c9a05d to your computer and use it in GitHub Desktop.
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
<!-- 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