GUID是MSFT生成的128位唯一标识符。
我怀疑GUID是否是全球唯一的。我的意思是我生成的GUID,在任何系统中使用任何应用程序的人都没有其他人可以生成?真的吗?
我很惊讶微软如何知道或追踪这种独特性。
此外,生成的唯一GUID可以链接到任何实体吗?应用,变量,系统,?
GUOD所有实体可以链接到什么?任何人都可以澄清GUID的概念吗?编程语言是独立的吗?
答案 0 :(得分:5)
这两篇文章可能对您有用,应该可以帮助您理解这些ID背后的概念。
UUID的目的是使分布式系统具有唯一性 识别信息而无需重要的中央协调[...] “独特”这个词应该被理解为“实际上是独一无二的” 比“保证独特”。 [...]它 两个不同的项目可以共享相同的标识符。
需要选择标识符大小和生成过程 在实践中使这个充分不可能。
任何人都可以创建 UUID并用它来确定具有合理信心的东西 任何人都不会无意中创建相同的标识符 找出别的东西。因此,标有UUID的信息可以 稍后组合成一个数据库而无需解决 标识符(ID)冲突。
非常简单:它基本上是一种创建标识符的方法 (具有特定格式)具有非常高的独特概率。
答案 1 :(得分:1)
它基本上是各种信息位的哈希值,其总组合很可能是唯一的或非常罕见的。与任何哈希一样,冲突是可能的,它们实际发生的可能性非常低,可以忽略不计。
哈希函数利用保证或预期唯一的各种信息(例如,它可以使用MAC地址),或者其他选项将随机生成数字(128位,可能随机生成相同的数字......嗯,你可以计算,相当低: - ))
答案 2 :(得分:0)
您可能希望阅读非常相似的问题Is a GUID unique 100% of the time?的答案,其中包含维基百科的以下引用:
虽然不保证每个生成的GUID都是唯一的,但总数 唯一键的数量(2 ^ 128或3.4×10 ^ 38)是如此之大 两次生成相同数字的概率非常小。 例如,考虑包含about的可观察Universe 5×10 ^ 22颗星;那么每颗星都可以拥有6.8×10 ^ 15的独特性 的GUID。
请参阅 lx
给出的答案中的链接然后,请关注Raymond Chen GUIDs are globally unique, but substrings of GUIDs aren't的博文,了解更多详情。
一个有趣的讨论跟随另一个SO问题Simple proof that GUID is not unique,值得检查。
答案 3 :(得分:0)
可以生成全局唯一标识符。例如,MAC地址(唯一)+当前时间。当然,GUID生成器使用更复杂的算法。
答案 4 :(得分:0)
我可以想到一个简单的反例,证明即使在一个系统上GUID也不是唯一的,更不用说全球了:
for i = 0 : 2^128
generateGUID();
确实生成2^128
GUID是不可行的,但这表明在闭区间内数学上不可能存在唯一性。
但是你很可能不会遇到两个相同的GUID。