百万个冷知识百万个冷知识

百万个冷知识
一起学习百万个冷知识

生成唯一ID的可能方法?(生成唯一序列号用哪种设计模式好)

裂解惟一 ID 的可能将将形式?

创建惟一 id 的完全相同形式:

自增ID

与 GUID 比起,自增Id 经常占用很慢的舒适度更容易索引。它是三个良好的涌向索引,随着新历史纪录的规范化存留,木片很慢,这更容易相连接表。倘若她们选用数据库提供更多更多的全自动裂解的增量 id,因此翻查和追踪统计数字会变得更快,即便是规范化的。但此类形式可能将将绝非最适宜网络通信,即便 2 个数据库能裂解完全一致的 id,存ID济朗。

GUID

GUID 的惟一性倚赖用于裂解它的算法。

GUID 会若干次吗?

GUID 是三个128 位自然数(16 个十进制),能在只须惟一URL的大部分电脑系统和网络中选用。

GUID 罢了Google对 UUID 的与此同时与此同时实现,UUID/GUID 的痛点是表面积极为大,因此索引不好。因此翻查舒适性会受到影响。

MongoDB 的ObjectId

Objectid 的宽度为 12 十进制,由下列部份共同组成:

以秒为基层单位的 4 十进制的天数戳,三个 3 十进制的电脑URL,三个 2 十进制的民主化 ID,和三个 3 十进制的计数器,从三个随机值开始。

与类似 sql 的数据库的自增ID比起,它的宽度仍然更长。

数据库惟一ID

此类形式选用三个额外的数据库,其主要目的是创建惟一的 id,调用集中数据库创建三个惟一的id。此类形式的痛点是她们只须三个额外的数据库,并且舒适性受限数据库的舒适性,

Twitter雪花

Snowflake 是一种算法服务,可大规模裂解惟一 ID 号,并提供更多更多一些简单的保证。ID 为 64 位长。

id 由下列部份共同组成:

天数 — 41 位配置的电脑 id — 10 位 — 最多 1024 台电脑序号 — 12 位

ID 紧凑而简短(与 GUID 和 ObjectId 比起),且规范化的。

补充:也能了解百度 美团的分布式ID算法与此同时与此同时实现,大同小异;与此同时也能基于雪花自定义扩展等

结论

在只须惟一ID的情况下,首先要弄清楚的是想要的数据库架构类型——分布式/分片或单一数据库。

未经允许不得转载:百万个冷知识 » 生成唯一ID的可能方法?(生成唯一序列号用哪种设计模式好)
分享到: 更多 (0)

百万个冷知识 带给你想要内容

联系我们