Guid子串碰撞概率?

问题描述 投票:0回答:1

[如何计算两个Guid以相同的N个字符开头的概率?

情况:

我们正在考虑将GUID的前n个字符用作cosmosdb集合分区键。我们不想使用整个guid,因为我们不希望每个文档都在其自己的逻辑分区中,但是我们也可能不希望仅使用guid的第一个字符作为分区键,因为我们可能然后在一个分区中存储太多文档并超出分区限制。

示例:

因此,如果我们使用GUID的前4个(随机抽取的数字)作为分区键,我们如何大致计算每个月每个分区中将存储多少文档?对于此示例,假设我们正在谈论每月划分400万个文档。

更新

听起来每个Guid角色都有16个潜在值。 0-9和a-f(十六进制字符集)。假设Guid字符是随机的(我不确定这是真的),应该有16 ^ 4个可能的四个字符guid开始(约65k组合)。因此,最多只有65k分区。而且,如果我们假设将4,000,000个文档分配到65,000个分区中,那么每个分区应该大概是61个文档,对吧?

azure-cosmosdb guid
1个回答
0
投票

实际上,您可以通过显示数据分发情况的REST API获得收集分区的使用情况。

cosmos db中没有内置的预览功能,无法在存储数据之前显示分区使用情况。如果在使用之前确实担心该问题,则可以先自己计算。例如,使用GROUP BY按前4个字符对数据进行分区与guid。

© www.soinside.com 2019 - 2024. All rights reserved.