数据库总结常用分布式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生成策略的主要内容,如果未能解决你的问题,请参考以下文章

常见分布式全局唯一ID生成策略

6大布式唯一ID生成策略对比

6 种常见分布式唯一ID生成策略及它们的优缺点对比

几种常见的分布式全局唯一ID生成策略

系统设计分布式唯一ID生成方案总结

分布式ID生成方案总结整理