前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基因分库分表

基因分库分表

原创
作者头像
sdcuike
修改2020-02-10 15:55:10
1.8K0
修改2020-02-10 15:55:10
举报
文章被收录于专栏:sdcuike专栏

场景:

    数据存储中,相互关系的表,尽量分库时落到同一个库中,避免遍历多个库查询,而且还能避免分布式事务。

  一般分库或者分表我们采用取余操作,余数相同的id落到相同的库中,或分表规则一致。

 

解决理论:

参考:https://stackoverflow.com/questions/6670715/mod-of-power-2-on-bitwise-operators

根据理论:

He meant that taking number mod 2^n is equivalent to stripping off all but the n lowest-order (right-most) bits of number.

一个数取余2的n次方,那么余数就是这个数的二进制的最后n位数。所有我们可以位操作符把高位清零就可以得到余数。

int mod = number & ~(-1 << n)

所以,n的取舍关系到分库的数量或者分表的数量,即2^n 个库或表。故我们把二进制的最后n位数,即上述代码中的mod称为分库分表因子。

 

所以,需要生成的新id只要最后末尾放入分库或分表因子就达到了我们的目的。

 

参考:

 

https://github.com/baidu/uid-generato

https://github.com/johnhuang-cn/snowflake-uid

https://gitee.com/yu120/sequence

https://mp.weixin.qq.com/s/ad4tpM6cdi9r6vgfbaTzxg

https://github.com/sumory/uc/blob/master/src/com/sumory/uc/id/IdWorker.java

https://mp.weixin.qq.com/s/AHRCYOjnXAgcy2j6vziukQ

http://mziccard.me/2015/05/08/modulo-and-division-vs-bitwise-operations/

https://stackoverflow.com/questions/3072665/bitwise-and-in-place-of-modulus-operato

https://stackoverflow.com/questions/6670715/mod-of-power-2-on-bitwise-operators

https://stackoverflow.com/questions/3072665/bitwise-and-in-place-of-modulus-operato

https://github.com/Predictor/javasnowflake/blob/master/IdGenerator/src/org/predictor/idgenerator/BasicEntityIdGenerator.java

https://gitee.com/simpleweb/id-generato

————————————————

版权声明:本文为CSDN博主「A_Beaver」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/doctor_who2004/article/details/104025329

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档