mycat根据取模水平分表-尊龙官方平台

mycat根据取模水平分表

el/2024/3/25 17:25:00

这里使用的是mycat的取模规则,对主键进行取模,根据取模的结果决定该数据存储到哪个datanode中。

我这里有两个mysql,一个是本地的,一个是服务器上的,这俩有一张一模一样的user表,如图所示:

这里是有两个datanode,所以取模结果最高是2,在rule.xml里要配置count属性的值为2。

这里直接上结果演示,配置文件的内容见案例文件

先插入十条数据:

然后查询一下,很明显2、4、8、10是一个数据节点里的,1、3、5、7、9是一个数据节点里的。

 

然后去本地的mysql里查询一下:

再去服务器上的mysql查询一下:

如果细心能发现,我在本地和服务端两个mysql里的user表中都设置id为自增主键了,但是插入的时候还是指定了id的值,这是因为mycat的自增主键功能太烂,所以需要自己指定。

我们可以用之前实现的mysql序列,在java程序里先读出下一个序列,然后赋值给id,这也能实现自增主键。

当然也可以用uuid,nanoid,或者雪花片算法snowflake来生成分布式id

schema.xml:


select user()select user()
 

 rule.xml


idfunc1user_idfunc1sharding_idhash-intidrang-longidmod-longidmurmuridcrc32slotcreate_timepartbymonthcalldatelatestmonthidrang-modidjump-consistent-hash021602partition-hash-int.txtautopartition-long.txt2812824yyyy-mm-dd2015-01-01partition-range-mod.txt3

server.xml


0 10  0  2false   00164k1k0384mfalse123456testdbusertestdbtrue123456testdb


http://www.ngui.cc/el/5127259.html

相关文章

水平分表 er分片

在复杂业务逻辑的时候,会出现b表依赖于a表的情况(b表的外键是a表的主键),比如文章详情表(content_ext)依赖于文章表(content)。当我们对文章表进行水平分表的时候,join操…

mycat根据字符串分库分表

在开发it610项目的时候遇到了一个需求,tag表要根据tagname的首字母进行分表分库(如果首字母不是字母则视其首字母为0),一个首字母占一个分片,26个字母1个其他类型总共27个分片。 这里我选择使用枚举分片,r…

java爬虫-jsoup jsoupxpath

jsoupxpath是基于jsoup的拓展,使用路径的形式解析xml和html文档。核心类为jxdocument。jsoupxpath的节点对象jxnode不仅可以获取标签节点,还可以获取属性节点。 需要在引入jsoup依赖之后引入jsoupxpath依赖 org.jsou…

jsoup清除危险元素和脚本

org.jsoup.safety.whitelist是个白名单, 定义了什么html元素或者属性可以通过, 而其他的所有内容都将被删除。 org.jsoup.safety.cleaner是清理器,在创建cleaner对象时告诉他白名单是什么,然后就可以用于请理危险元素和脚本了。 如下所示,清…

java-实现动态数组

数组最大的优点︰快速查询。scores[2]。数组最好应用于“索引有语意”的情况,但是如果索引比较长就还是不要用数组了,比如身份证号,太长了。 java提供给我们的数组是静态数组,大小在一开始就定下来了,所以我们要创建一…

简单的时间复杂度分析

n是数据规模,o是渐进时间复杂度,描述的是n趋近于无穷的时候的算法用时,所以忽略常数,毕竟在无穷的面前常数可以忽略不计。 o(1):算法运行时间是一个常数与数据规模无关 o(n):算法运行时间与数据规模是线性关系 o(lgn): o(nlogn):…

什么是栈以及用数组实现一个栈-java

虽然栈操作看起来比数组要简单的多,但对于计算机逻辑来说是非常重要的 我们在执行程序的的时候,可能会如下列伪代码一样在方法1里调用方法2,在方法2里调用方法3,执行完毕后一层一层的返回,这就是借助程序调用的系统栈来…

什么是队列以及用数组实现队列-java

就和我们现实生活中排队一样,队列就是先进先出,从队尾进,从队首出 然后使用https://blog.csdn.net/test253506088/article/details/119538593编写的动态数组来实现一个队列arrayqueue public class arrayqueue implements queue<…

效率更高的循环队列-java

数组队列中的出队,在时间复杂度上是o(n)复杂度,因为你删除数组首端,后面的数据都要左移一位。 我们可以记录一下队首的索引和队尾索引,入队时队尾索引1,出队时队首索引-1,当队首索引与队尾索引相等时代表队…

单向链表-java

如果某个节点的next是null则代表该节点是最后一个节点,属性名为head的为第一个节点。 虚拟头结点(dummyhead)对于链表的使用者来说毫无意义,只是为了让头结点固定不改动、实现起来更方便而设计出来的一个概念。 实现代码 package blacktv.linkedlist;/*…
网站地图