字串hash解析分片,其實就是根據配置的hash預算位規則,將擷取的字串進行hash計算後,得到的int數值即為datanode index(分片節點索引,從0開始)。
實現步驟:
【a】建立資料庫和表
【b】配置server.xml
【c】rule.xml配置分片規則
【d】schema.xml配置分片節點、分片表等
【e】測試插入資料
【f】分析
【g】mycat原始碼中字串hash演算法
/**
* 字串hash演算法:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
* 其中s為字串的字元陣列,換算成程式的表示式為:
* h = 31*h + s.charat(i); => h = (h << 5) - h + s.charat(i);
* * @param start
* hash for s.substring(start, end)
* @param end
* hash for s.substring(start, end)
*/public static long hash(string s, int start, int end)
if (end > s.length())
long h = 0;
for (int i = start; i < end; ++i)
return h;
}
MyCat分片規則之取模分片
除了上一章總結的列舉分片之外,mycat中還有一種比較常見的分片 取模分片規則,本節將總結如何實現取模分片。a 建立資料庫和表結構 create database testmod1 create database testmod2 use testmod1 create table user id ...
MyCat分片規則之程式指定分片
a 建立資料庫和表 b 配置server.xml 0905 testdb user testdb true c 配置schema.xml分片表 分片節點等 d 配置rule.xml分片規則 e 測試插入資料 insert into user id,name values 111,0 zhangsan...
MyCat分片規則之取模範圍分片
本文介紹另外一種分片規則 取模範圍分片,先進行取模運算再根據求餘結果範圍進行分片。下面通過示例說明在mycat中如何進行取模範圍分片,具體實現步驟如下 a 建立資料庫和表 b 配置server.xml 邏輯庫資訊 使用者資訊 c 配置rule.xml,定義取模範圍分片規則 d 配置partition...