- 首頁
- UUID 生成器
UUID 生成器
使用基於時間戳的演算法生成通用唯一識別符號(UUID),防止重複。
UUID 工作原理
UUID v1(基於時間戳): 使用當前時間戳(自 1582 年 10 月 15 日起的 100 納秒間隔)結合 MAC 地址或隨機節點識別符號。這確保了不同機器之間的唯一性,即使同時生成也能防止重複。
UUID v4(隨機): 使用加密強度的隨機數。雖然理論上可能出現重複,但機率極低(2^122 分之一),在實際應用中可以忽略不計。
UUID v7(現代時間戳): 最新的 UUID 版本,結合了 Unix 時間戳(48 位)和隨機資料(74 位)。這提供了 v1 的時間排序優勢,同時保持 v4 的隱私性,使其成為資料庫主鍵的理想選擇。
格式: UUID 是 128 位值,以 32 個十六進位制數字顯示,格式為: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
常見用例
UUID(也稱為 GUID)為您提供了幾乎無限的唯一識別符號池,無需與中央機構協調。以下是一些常見的使用場景:
資料庫主鍵
UUID 允許多個服務或分片獨立生成鍵而不發生衝突。UUID v7 越來越受歡迎,因為其前導時間戳讓插入保持區域性性友好、索引緊湊。
分散式系統
當事件由多個節點產生時,每個事件一個 UUID 可以避免集中式序列的瓶頸,並使日誌在服務邊界之間保持可追蹤。
面向公眾的識別符號
URL 中的 UUID v4 不會像遞增整數那樣暴露存在多少條記錄,也不會帶來列舉攻擊的風險。
冪等性鍵
客戶端為每個請求生成一個 UUID,這樣伺服器就可以識別重試並避免兩次處理相同的操作。
您應該使用哪個版本?
- 如果您想要簡單的隨機性而不需要其他屬性,請使用 v4 - 這是大多數應用程式最安全的預設選項。
- 如果識別符號將成為資料庫主鍵,或儲存在任何插入順序很重要的索引中,請使用 v7。嵌入的時間戳使行聚集在一起,在大規模下顯著提高寫入效能。
- 僅在您特別需要從時間戳和節點識別符號派生識別符號時使用 v1。在現代應用程式中,對於相同的用例,v7 是更好的選擇,並且不會洩露 MAC 地址。
常見問題
什麼是 UUID?
UUID(通用唯一識別符號)是一個 128 位值,通常以 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的 32 個十六進位制數字書寫。不同的版本使用不同的策略(隨機、時間戳或兩者結合)生成該值。
UUID 和 GUID 有什麼區別?
它們指的是同一個東西。GUID(全域性唯一識別符號)是 Microsoft 生態系統中使用的名稱;UUID 是 RFC 4122 和其他地方使用的名稱。格式和唯一性保證是相同的。
UUID 保證是唯一的嗎?
從數學上講並不能絕對保證 - 但 UUID v4 的碰撞機率大約為 2^122 分之一,遠低於任何實際應用的閾值。對於 UUID v1 和 v7,時間戳和節點/隨機位在實際中防止了碰撞。
我應該為資料庫主鍵使用 UUID v4 還是 UUID v7?
UUID v7 通常更適合作為主鍵。因為它的前導位是 Unix 時間戳,新行在磁碟上插入的位置彼此靠近,這使索引保持緊湊、寫入速度更快。僅在插入順序絕對不能被推斷時才使用 v4。
我需要 UUID v1 生成器嗎?
很少需要。UUID v1 包含生成機器的 MAC 地址(或隨機替代值),可能會洩露資訊。UUID v7 提供相同的時間可排序屬性,卻沒有這種顧慮,如今幾乎總是更好的選擇。
這個 UUID 生成器可以免費使用嗎?
是的。所有生成都在您的瀏覽器中進行,沒有速率限制,也不需要帳戶。您可以在這裡生成單個 UUID,或切換到批次生成器一次生成最多 500 個。