Tool
一鍵產生隨機 UUID v4。可以一次產生多筆,直接複製貼上。
UUID(Universally Unique Identifier)是一組 128 位元的唯一識別碼,格式長得像 550e8400-e29b-41d4-a716-446655440000。資料庫的 primary key、分散式系統的 ID、API 的 request ID 都會用到。UUID v4 是用亂數產生的,碰撞機率低到可以忽略。
v1 是用你電腦的 MAC 地址加上時間戳記組出來的,所以理論上可以反推是哪台機器在什麼時間產生的——有些人覺得這是安全疑慮。v4 就是純亂數,沒有任何可追溯的資訊,目前大部分場景都用 v4。還有一個比較新的 v7 是用 Unix timestamp 加亂數,好處是 ID 本身就帶有時間排序,插入資料庫的時候效能比 v4 好。這個工具產生的是最通用的 v4。
資料庫的 primary key(特別是分散式系統,不用擔心不同節點產生重複 ID)。API 的 request ID(每次請求帶一個 UUID,出問題的時候方便追蹤 log)。檔案命名(上傳檔案用 UUID 當檔名,不用怕重複覆蓋)。冪等性 key(付款 API 帶 UUID 確保同一筆交易不會被重複扣款)。基本上任何需要「保證不重複的 ID」的場景都適用。
自動遞增 ID(1, 2, 3...)簡單好懂,而且占的空間小。但在分散式系統裡會出問題——兩台 server 同時產生 ID 可能會撞號。UUID 不需要中央協調,每台機器自己產生就好,但缺點是比較長(36 個字元)、而且完全隨機的 v4 UUID 在 B-tree 索引裡的寫入效能比較差。折衷方案是兩個都用:資料庫內部用自動遞增當 primary key,對外暴露 UUID 當 public ID,這樣既安全又高效。