自定义分表规则

当数据访问代理控制台提供的默认分表规则无法满足需求时,用户可以自定义分表规则。自定义分表规则支持 Groovy 表达式。

假设数据库名为 dbptest,数据表名为 user,分片数设置为 10 个,分表数为 100 个,自定义分表规则示例如下:

示例一

路由字段为 user_id(整型)= 123456

Integer.valueOf(String.valueOf(#user_id#).substring(3,5))%100

通过上面的分表规则,截取 user_id 对应字符串中序号为 3 至 5 之间(不包括 5 )的子字符串,转换为整型,并对 100 求模,计算结果为 45。

最终的路由结果为 dbptest_4.user_45。

示例二

路由字段为 user_id(整型)= 123456

Integer.valueOf(String.valueOf(#user_id#).substring(String.valueOf(#user_id#).length()-2))%100

通过上面的分表规则,截取 user_id 对应字符串的最后两位,转换为整型,并对100求模,计算结果为 56。

最终的路由结果为 dbptest_5.user_56。

示例三

路由字段为 user_id(字符型)= ‘123456’

Integer.valueOf(#user_id#.substring(3,5))%100

通过上面的分表规则,截取 user_id 中序号为 3 至 5 之间(不包括 5 )的子字符串,转换为整型,并对 100 求模,计算结果为 45。

最终的路由结果为 dbptest_4.user_45。

示例四

路由字段为 user_id(字符型)= ‘123456’

Integer.valueOf(#user_id#.substring(#user_id#.length()-2))%100

通过上面的分表规则,截取 user_id 的最后两位,转换为整型,并对 100 求模,计算结果为 56。

最终的路由结果为 dbptest_5.user_56。