2011-11-09 31 views
1

我想生成一個uuid,它應該用作跨不同系統/數據庫的唯一標識符。我閱讀了這些示例,但我不明白如何確保生成的ID在不同的系統和數據庫中是唯一的。boost :: uuid/unique跨不同數據庫

我希望你能幫助我。

問候

回答

2

一個UUID背後的想法是 - 這取決於如何產生,他們 - 有這麼多值表示的有122位*是的意外碰撞的機會 - 再次,取決於它們是如何產生的 - 非常非常非常非常非常非常小。

從維基百科摘錄的UUID版本4(裏奇 - SALZ隨機):只有一點產生十億的UUID每秒未來100年後

換句話說,,創建只是概率一個重複將約爲50%。如果地球上的每個人擁有6億個UUID,則一個重複的概率約爲50%。

...但是,這些概率僅在使用足夠的熵生成UUID時才成立。

當然,還有其他的UUID生成方案和「衆所周知的GUID」,並不是所有這些方案都適用於「全局唯一」用法。 (另外,非專業的UUID往往不會很好初級/集羣鍵工作,由於在插入碎片:SQL Server有NEWSEQUENTIALID,以幫助這個問題。)

編碼愉快。


* UUID中最多有128位,但是某些UUID版本在內部使用了一些位。我不知道什麼助推器使用,但我嫌疑人它也是UUIDv4。