首页 > 数据库技术 > 详细

【数据库】总结常用分布式ID生成策略

时间:2018-11-10 17:20:41      阅读:217      评论:0      收藏:0      [点我收藏+]

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生成策略

原文:https://www.cnblogs.com/tWX173908/p/9934302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!