認識 UUID 及其產生方式
這個產生器的作用
UUID(通用唯一識別碼)是一個 128 位元的值,依照大家熟悉的 8-4-4-4-12 格式寫成 32 個十六進位數字,例如 550e8400-e29b-41d4-a716-446655440000。這個工具會在需要時產生符合 RFC 4122 規範的識別碼:你可以選擇版本 4 或版本 1,一次最多產生 100 個。
你可以切換是否加上連字號,並在小寫與大寫之間選擇,讓結果直接符合資料庫欄位、API 規格或既有程式碼所預期的格式。
什麼時候該用 UUID
只要識別碼必須各自獨立產生,而沒有一個中央機構負責發放連續號碼時,UUID 就派得上用場。常見用途包括分散式資料庫的主鍵、用來追蹤請求跨越多個服務的關聯 ID、API 呼叫的冪等鍵、絕不能重複的檔名,以及在用戶端產生的物件或工作階段參照。
由於兩台機器可以在同一瞬間各自產生識別碼而不需互相協調,UUID 特別適合微服務、離線優先的應用程式,以及事件管線。
版本 4 與版本 1 的差異
版本 4 幾乎用瀏覽器 crypto.randomUUID 與 Web Crypto API 提供的高強度密碼學亂數填滿所有位元,因此識別碼無法預測,也不會透露它是何時、在哪裡產生的。多數情況下建議採用這個版本。
版本 1 則是用目前的時間戳記,加上節點識別碼與時鐘序列組成數值,讓一批識別碼大致能依產生時間排序,但也會暴露那個時間點。若重視不可預測性就選 v4;若大致的時間先後順序比較有用,就選 v1。
格式與碰撞機率
兩個版本都維持標準的 8-4-4-4-12 排列,代表版本的數字位於第三組的開頭(4 或 1)。v4 的強度來自它的 122 個亂數位元:可能的值超過 5×10^36 個,因此即使產生了數十億個識別碼,其中任兩個相同的機率仍小到幾乎可以忽略。
關掉連字號會得到 32 個字元的精簡字串,方便用在網址或金鑰上;大寫輸出則能配合以那種形式儲存識別碼的系統。