基因分库分表
Posted Dreamer who
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基因分库分表相关的知识,希望对你有一定的参考价值。
场景:
数据存储中,相互关系的表,尽量分库时落到同一个库中,避免遍历多个库查询,而且还能避免分布式事务。
一般分库或者分表我们采用取余操作,余数相同的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-generator
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-operator
https://stackoverflow.com/questions/6670715/mod-of-power-2-on-bitwise-operators
https://stackoverflow.com/questions/3072665/bitwise-and-in-place-of-modulus-operator
https://gitee.com/simpleweb/id-generator
以上是关于基因分库分表的主要内容,如果未能解决你的问题,请参考以下文章