GUID 的唯一性



GUID 是 MSFT 生成的 128 位唯一标识符。

我怀疑 GUID 是否全局唯一。我的意思是我生成的 GUID,世界上任何使用任何应用程序的系统中的其他人都无法生成?这是真的吗?

我很惊讶Microsoft如何知道或跟踪这种独特性。

并且生成的单一 GUID 可以链接到任何实体?应用程序、变量、系统、?

GUOD 可以链接到哪些所有实体?任何人都可以澄清GUID的概念吗?它是编程语言不可或缺的吗?

这两篇文章可能会引起你的兴趣,它们应该可以帮助你理解这些 ID 背后的概念。

  • 通用唯一标识符 (UUID(
  • 全局唯一标识符 (GUID(

UUID 的目的是使分布式系统能够以独特的方式 在没有重要中央协调的情况下识别信息。[...] "独特"一词应理解为"实际上独一无二的",而不是 比"保证唯一"。[...]它 两个不同的项目可以共享相同的标识符。

需要选择标识符大小和生成过程,以便 这在实践中是不可能的。

任何人都可以创建一个 UUID 并使用它来识别具有合理信心的事物 任何人永远不会无意中创建相同的标识符 识别其他内容。因此,标有 UUID 的信息可以 稍后合并到单个数据库中,而无需解析 标识符 (ID( 冲突。

非常简单:它基本上是一种创建标识符的方法(具有特定格式(具有非常高的唯一概率。

它基本上是各种信息位的一种哈希值,其总组合极可能是唯一的或极其罕见的。与任何哈希一样,碰撞是可能的,它们实际发生的可能性非常低,可以忽略不计。

哈希函数利用保证或预期是唯一的各种信息(例如,它可以使用 MAC 地址(,或者另一种选择是随机生成数字(128 位,随机生成完全相同数字的机会是......好吧,你可以计算,很低:-((

您可能想阅读对非常相似的问题的回答 GUID 是否 100% 唯一? 其中包括来自维基百科的以下引文:

虽然不能保证每个生成的 GUID 都是唯一的,但总数 唯一键的数量(2^128 或 3.4×10^38(非常大,以至于 同一数字生成两次的概率非常小。 例如,考虑可观测宇宙,它包含大约 5×10^22星;然后,每颗恒星都可以有6.8×10^15个普遍唯一的恒星 图形用户界面。

查看 lx 给出的答案中的链接

然后,按照 Raymond Chen 的博客文章进行操作 GUID 是全局唯一的,但 GUID 的子字符串不是更多详细信息。

一个有趣的讨论紧随另一个 SO 问题 GUID 不是唯一的简单证明,也值得检查。

可以生成全局唯一标识符。例如,MAC 地址(唯一(+ 当前时间。当然,GUID 生成器使用更复杂的算法。

我可以想到一个简单的反例,证明 GUID 即使在单个系统上也不是唯一的,更不用说全局了:

for i = 0 : 2^128
   generateGUID();

实际上,生成2^128 GUID 是不可行的,但这表明在封闭区间内唯一性在数学上是不可能的。

不过,您绝对不太可能遇到两个相同的 GUID。

相关内容

  • 没有找到相关文章

最新更新