数据库中间件分片算法之hash

  • 时间:
  • 浏览:1
  • 来源:大发5分排列5_极速5分排列3

这几天他们问我,dble和MyCat到底有你这俩 不同。其实dble作为MyCAT的同门,吸收了MyCat的精华,同时也相应的做了就让 减法。只支持MySQL显得更加的纯粹。就让 取舍对比学习两者我其实挺好。

今天学习了分片算法Hash。后续将继续分享就让 的算法。谢谢支持!

凌晨人静的就让,打开云音乐,点上一曲攀登,带上真无线蓝牙耳机,瞬间燃到爆,键盘打字如飞倦意全无。

如下所示,使用function标签定义分区算法,name代表算法的名字,算法的名字要和上边的tableRule中的标签相对应。class:指定分区算法实现类。property指定了对应分区算法的参数。不同的算法参数不同。

先根据分片键取出999,按照公式1的计算结果除取模,就让 得到的值落到2计算出来的分片中。

根据公式2,物理分区为

同时将划分如下的分区:

此时C _L=2_800=800,将对800进行取模。

前面当他们当他们 学习了schema.xml文件的配置,当他们当他们 能独立的把逻辑库逻辑表搭建起来,让数据表跟随当他们当他们 的定义规则(取模)进行分布。今天当他们当他们 介绍具体的分片算法。dble相对于mycat来说,是做了就让 减法的。比如一致hash算法就这么,就让 使用了jumpstringhash代替了一致性hash。具体意味还后能 参考文章dble 沿用 jumpstringhash,移除 Mycat 一致性 hash 意味

这里还后能 看得人当他们当他们 查询999你这俩 数据,会自动到dn4你这俩 分片上进行查询。再比如当他们当他们 查800,800对380取模是80,80是落在第两个分区上边的。

也就让 传进来的值前要对380取模。

如下所示,使用tableRule标签定义,name对应的是规则的名字,而rule标签中的columns则对应的分片字段,你这俩 字段前要和表中的字段一致。algorithm则代表了执行分片函数的名字。

当他们当他们 先使用shell创建800行数据,在创建表,通过load data语法将当他们当他们 shell产生的文件进行导入。

根据公式1



请原谅我作为两个多GEEK,把桌面和终端完美结合成二次元是标配。

Hash分区算法是五种比较典型就让 常用的算法。要使用HASH分区算法前要在rule.xml中定义两个多偏离 。

接下来当他们当他们 实际来测试一下,当他们当他们 在rule.xml中设置如下:

999对380取模,正好是299。落在280-80你这俩 区间上边。也就让 第两个多区间。

当他们当他们 通过公式2算出有两个分片。就让 在schema.xml中设置table属性如下: