[英]mysql UUID() and java UUID.randomUUID()
我想知道我是否可以安全地用java的UUID.randomUUID()函數生成的id替換用mysql的UUID()函數生成的id?
我想在我的用戶的網址中分享這些ID,但幾次運行后,mysql UUID()輸出看起來非常相似:
3ae2c9c4-47df-11e1-8c2a-a46b34c02a9e
976de634-47e3-11e1-8c2a-a46b34c02a9e
530cc5c6-47e7-11e1-8c2a-a46b34c02a9e
...
我不是說它們不是唯一的,但這是UUID()的結果通常出現的嗎? 我想它與我機器上的某些標識符有關。
Java的UUID.randomUUID()“看起來”更隨機:
c042437b-298a-41c4-c2b6-0f83552bdb8b
e33d8ab7-d9d3-4ffe-a592-650a125d2a93
ecb12c54-5741-45c8-8b85-1825c19a9cae
...
從我對唯一性的天真理解,java方法生成的id應該是mysql的UUID()的完美替代品?
(使用java版本的另一個好處是,當我需要在回復客戶端時提供它時,我不必重新獲取使用UUID()的插入記錄)
謝謝
你使用的是Linux還是FreeBSD? 從mysql的文檔 :
第五個數字是提供空間唯一性的IEEE 802節點號。 如果后者不可用,則替換隨機數(例如,因為主機沒有以太網卡,或者我們不知道如何在操作系統上找到接口的硬件地址)。 在這種情況下,無法保證空間唯一性。 然而,碰撞應該具有非常低的概率。
目前,僅在FreeBSD和Linux上考慮接口的MAC地址。 在其他操作系統上,MySQL使用隨機生成的48位數字。
另請注意:
警告 :
雖然UUID()值是唯一的,但它們不一定是不可預測的或不可預測的。 如果需要不可預測性,則應以其他方式生成UUID值。
編輯
如果您希望用戶ID 看起來更隨機,您可以通過像MD5(UUID())
這樣的散列函數傳遞它們,這樣可以提供更有說服力的隨機字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.