大型分布式系统中ObjectId与UUID的碰撞概率

系统主义

考虑到UUID rfc 4122(16字节)比MongoDB ObjectId(12字节)大得多,我试图找出它们的碰撞概率如何进行比较。

我知道这种情况不太可能出现,但是就我而言,大多数ID都是在大量移动客户端中生成的,而不是在一组有限的服务器中生成的。我想知道在这种情况下是否有正当理由

与通常情况下,所有ID由少量客户端生成的情况相比:

  • 自创建文档以来,可能要花费数月才能检测到冲突
  • ID是从更大的客户群中生成的
  • 每个客户端的ID生成率较低
奈莫辛

就我而言,大多数ID是在大量移动客户端中生成的,而不是在一组有限的服务器中生成的。我想知道在这种情况下是否存在正当理由。

对我来说,这听起来很糟糕。您是否使用两层体系结构?为什么移动客户端可以直接访问数据库?您真的要依靠基于网络的安全性吗?

无论如何,对碰撞概率的一些思考:

UUID和ObjectId都不依赖于它们的绝对大小,即两者都不是随机数,但是它们遵循试图系统地降低冲突概率的方案。对于ObjectId,其结构为

  • UNIX时代以来4字节秒
  • 3字节机器ID
  • 2字节进程ID
  • 3字节计数器

这意味着,与UUID相反,ObjectId是单调的(在一秒钟内除外),这可能是它们最重要的属性。单调索引将使B树的填充效率更高,它允许按id进行分页,并允许按id进行“默认排序”以使光标稳定,当然,它们还带有易于提取的时间戳。这些是您应该意识到的优化,它们可能是巨大的。

从其他3个组件的结构中可以看出,如果您在单个进程中执行> 1k次插入/秒(这实际上是不可能的,甚至不是来自服务器),冲突很有可能发生,或者如果计算机数量增加超过大约10(请参阅生日问题),或者单台计算机上的进程数过大(然后又不是随机数,但它们在计算机上确实是唯一的,但必须缩短到两个字节) )。

自然,要发生冲突,它们必须在所有这些方面匹配,因此,即使两台机器具有相同的机器哈希,它仍然需要客户端在完全相同的第二秒和相同的过程中插入相同的计数器值id,但是是的,这些值可能会冲突。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

锁定分布式系统中的文件

来自分类Dev

带分布式系统的CAP

来自分类Dev

如何在具有低重复概率的分布式系统中生成标识符?

来自分类Dev

如何在Apache Spark 1.0中构建大型分布式[稀疏]矩阵?

来自分类Dev

Hadoop分布式文件系统与分布式缓存

来自分类Dev

使用pyspark / spark采样大型分布式数据集

来自分类Dev

在现实世界的分布式系统中如何实现分布式快照算法(如Chandy Lamport)?

来自分类Dev

CoreOS和HDFS-在Linux容器/ Docker中运行分布式文件系统

来自分类Dev

在分布式系统中传递消息的简单方法

来自分类Dev

同步分布式系统中的动作

来自分类Dev

如何创建分布式文件系统

来自分类Dev

分布式系统中的CRDT是什么?

来自分类Dev

Apache Drill嵌入式和分布式系统

来自分类Dev

内存缓存VS。分布式系统中的集中式缓存

来自分类Dev

分布式系统中的大使概念是什么?

来自分类Dev

在分布式系统中安排时间指定的任务

来自分类Dev

分布式系统中如何维护套接字或通信通道

来自分类Dev

如何将scikit-learn仿真器结果留在分布式分布式系统中?

来自分类Dev

在分布式阵列系统中查找缺失的数字

来自分类Dev

分布式系统中的投票协议

来自分类Dev

在分布式系统上编译并运行

来自分类Dev

在现实世界的分布式系统中如何实现分布式快照算法(如Chandy Lamport)?

来自分类Dev

Berkeley算法-分布式系统

来自分类Dev

同步分布式系统中的动作

来自分类Dev

分布式系统中的IP地址

来自分类Dev

OpenBSD中是否有任何分布式文件系统?

来自分类Dev

Apache Drill嵌入式和分布式系统

来自分类Dev

分布式系统中的大使概念是什么?

来自分类Dev

Spring Cloud Sleuth - 在分布式系统中禁用采样

Related 相关文章

  1. 1

    锁定分布式系统中的文件

  2. 2

    带分布式系统的CAP

  3. 3

    如何在具有低重复概率的分布式系统中生成标识符?

  4. 4

    如何在Apache Spark 1.0中构建大型分布式[稀疏]矩阵?

  5. 5

    Hadoop分布式文件系统与分布式缓存

  6. 6

    使用pyspark / spark采样大型分布式数据集

  7. 7

    在现实世界的分布式系统中如何实现分布式快照算法(如Chandy Lamport)?

  8. 8

    CoreOS和HDFS-在Linux容器/ Docker中运行分布式文件系统

  9. 9

    在分布式系统中传递消息的简单方法

  10. 10

    同步分布式系统中的动作

  11. 11

    如何创建分布式文件系统

  12. 12

    分布式系统中的CRDT是什么?

  13. 13

    Apache Drill嵌入式和分布式系统

  14. 14

    内存缓存VS。分布式系统中的集中式缓存

  15. 15

    分布式系统中的大使概念是什么?

  16. 16

    在分布式系统中安排时间指定的任务

  17. 17

    分布式系统中如何维护套接字或通信通道

  18. 18

    如何将scikit-learn仿真器结果留在分布式分布式系统中?

  19. 19

    在分布式阵列系统中查找缺失的数字

  20. 20

    分布式系统中的投票协议

  21. 21

    在分布式系统上编译并运行

  22. 22

    在现实世界的分布式系统中如何实现分布式快照算法(如Chandy Lamport)?

  23. 23

    Berkeley算法-分布式系统

  24. 24

    同步分布式系统中的动作

  25. 25

    分布式系统中的IP地址

  26. 26

    OpenBSD中是否有任何分布式文件系统?

  27. 27

    Apache Drill嵌入式和分布式系统

  28. 28

    分布式系统中的大使概念是什么?

  29. 29

    Spring Cloud Sleuth - 在分布式系统中禁用采样

热门标签

归档