自定義分表規(guī)則
當(dāng)數(shù)據(jù)訪問代理控制臺提供的默認(rèn)分表規(guī)則無法滿足需求時,用戶可以自定義分表規(guī)則。自定義分表規(guī)則支持 Groovy 表達(dá)式。
假設(shè)數(shù)據(jù)庫名為 dbptest,數(shù)據(jù)表名為 user,分片數(shù)設(shè)置為 10 個,分表數(shù)為 100 個,自定義分表規(guī)則示例如下:
示例一
路由字段為 user_id(整型)= 123456
Integer.valueOf(String.valueOf(#user_id#).substring(3,5))%100
通過上面的分表規(guī)則,截取 user_id 對應(yīng)字符串中序號為 3 至 5 之間(不包括 5 )的子字符串,轉(zhuǎn)換為整型,并對 100 求模,計算結(jié)果為 45。
最終的路由結(jié)果為 dbptest_4.user_45。
示例二
路由字段為 user_id(整型)= 123456
Integer.valueOf(String.valueOf(#user_id#).substring(String.valueOf(#user_id#).length()-2))%100
通過上面的分表規(guī)則,截取 user_id 對應(yīng)字符串的最后兩位,轉(zhuǎn)換為整型,并對100求模,計算結(jié)果為 56。
最終的路由結(jié)果為 dbptest_5.user_56。
示例三
路由字段為 user_id(字符型)= ‘123456’
Integer.valueOf(#user_id#.substring(3,5))%100
通過上面的分表規(guī)則,截取 user_id 中序號為 3 至 5 之間(不包括 5 )的子字符串,轉(zhuǎn)換為整型,并對 100 求模,計算結(jié)果為 45。
最終的路由結(jié)果為 dbptest_4.user_45。
示例四
路由字段為 user_id(字符型)= ‘123456’
Integer.valueOf(#user_id#.substring(#user_id#.length()-2))%100
通過上面的分表規(guī)則,截取 user_id 的最后兩位,轉(zhuǎn)換為整型,并對 100 求模,計算結(jié)果為 56。
最終的路由結(jié)果為 dbptest_5.user_56。