数据库总结常用分布式ID生成策略
Posted twx173908
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库总结常用分布式ID生成策略相关的知识,希望对你有一定的参考价值。
1. SequenceID
数据库自增列,最常见的方式。由数据库维护,数据库唯一。
优点:
1)简单,代码方便,性能可以接受。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。
缺点:
1)数据迁移或者合库麻烦。
2)分表分库的时候麻烦。
改进方案:
通过设置各数据库的步长,或者通过HASH进行分表。
2. GUID
微软对UUID这个标准的实现。UUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符。
优点:
1)性能非常高:本地生成,没有网络消耗。
2)全球唯一,在数据迁移,合并,变更等情况下,可以从容应对。
缺点:
1)无序,无法保证趋势递增.。
2)往往是使用字符串存储,查询的效率比较低.。
3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。
4)无含义,不可读。
改进方案:
1)增加时间戳,使GUID有序。
2)增加数据库描述,使GUID可读。
3. Twitter的snowflake算法
优点:
1)不依赖于数据库,灵活方便,且性能优于数据库。
2)ID按照时间在单机上是递增的。
缺点:
1)强依赖机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。
2)在单机上是递增的,但是由于涉及到分布式环境,每台机器上的时钟不可能完全同步,也许有时候也会出现不是全局递增的情况。
4. Leaf 美团点评的分布式ID生成系统
以上是关于数据库总结常用分布式ID生成策略的主要内容,如果未能解决你的问题,请参考以下文章