MongoDB中的GUID

kmbjn2e3  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(126)

我知道自动创建的唯一ID的数量是有限制的。如果我没记错的话,我想是1600万个。如果唯一实体的数量增加,这是否可以扩展,或者一个用户GUID是否也可以提供更多的唯一性?
因此,如果我使用默认对象_id,我可以将多少个唯一项放入集合中。我读到有12个字节,但根据这些字节的使用方式,意味着可能会有不同数量的唯一文档。我如何计算我可以存储多少个唯一文档?

jm81lzqq

jm81lzqq1#

理论上的最大值应该在7.9228162514e+28左右。你从哪里得到的1600万?
实际上,ObjectID由以下内容组成

  • 一个4字节的时间戳,表示ObjectId的创建,从Unix纪元开始以秒为单位度量。
  • 每个进程生成一次的5字节随机值。此随机值对于计算机和进程是唯一的。
  • 3字节递增计数器,初始化为随机值。

因此,仅3字节计数器每秒就有16777216个唯一ID。
一个5字节的值是1.0995116277e+12个可能性,所以机器和进程唯一值本身就有大约160亿个唯一组合。

相关问题