DevTool 團隊

測試資料要唯一 ID:UUID 產生器怎麼選、v4 還是 v7

造測試資料、建表主鍵、寫事件 ID 都繞不開 UUID。這篇講 UUID v4 與 v7 怎麼選、GUID 和 UUID 什麼關係,並誠實對比 iLoveDevTool 的線上 UUID 產生器與 uuidgenerator.org:批次、格式、本機產生各自的取捨。

什麼時候需要一個 UUID 產生器

給測試資料造假的主鍵、給新表定主鍵型別、給事件流編一個不衝突的 ID、在分散式服務之間傳一個不依賴中心發號的識別——這些場景的共同點是:你需要一串「幾乎不可能重複」的識別碼,而且現在就要。

UUID(通用唯一識別碼)就是這件事的標準答案。128 位、有成熟的格式規範(RFC 4122 與 2024 年的 RFC 9562),幾乎所有語言的標準庫都能產生。線上產生器的價值在於:不用寫程式碼就能拿到一批,還能按目標系統的習慣切換格式。

v4 還是 v7:一句話選法

  • v4:122 位加密安全隨機。你在大資料、老系統、別人的框架裡看到的 UUID 十有八九是 v4。不確定就用它。
  • v7:前 48 位是毫秒級 Unix 時間戳,其餘隨機。它按時間有序——做 MySQL/PostgreSQL 主鍵時索引順序插入而不是隨機打散,做事件 ID 時天然可排序。新專案值得優先考慮。

一個冷知識:v7 的前 48 位就是毫秒級時間戳,把一個 v7 的前 12 個十六進位字元按整數讀出來,就是它產生的時刻,可以直接用 Unix 時間戳轉換器核對。

iLoveDevTool 的線上 UUID 產生器

我們的線上 UUID 產生器把常用需求做直接:

  • v4、v7、nil 三種版本:v7 在同一毫秒內嚴格遞增,批次結果可直接作有序測試資料;
  • 一次最多 1000 個:整批複製為換行純文字或 JSON 陣列,貼進測試程式碼即用;
  • 格式隨切:大寫、去連字號、大括號(GUID 寫法)三個開關,滿足 Windows、Java、PostgreSQL 各自的書寫習慣;
  • 全部本機產生:隨機數來自瀏覽器的加密安全介面,不連網、不上傳。

和 uuidgenerator.org 比怎麼樣

uuidgenerator.org 是這個品類最老牌的網站,值得尊重,也值得誠實對比:

維度 uuidgenerator.org iLoveDevTool
版本 單一格式(未標註版本) v4 / v7 / nil 明確可選
批次 逐個產生 1 到 1000 個一次產生
格式選項 固定小寫連字號 大寫 / 連字號 / 大括號可切
介面語言 英文 中文優先,覆蓋 20 種語言
歷史積累 十幾年心智份額,搜尋結果常青 新工具,勝在輕與快

老站的優勢是「搜一下就能找到」的心智份額;功能維度上,我們的產生器在版本、批次與格式三項都更全。

常見問題

uuidgenerator.org 是免費的嗎?

是。uuidgenerator.org 的產生器免費可用,無需註冊。它的介面是英文的,批次與格式選項較基本;iLoveDevTool 的 UUID 產生器同樣免費,並提供 v7、1000 個批次、大小寫/連字號/大括號格式切換與中文介面。

UUID v4 和 v7 應該用哪個?

不確定就用 v4:它是絕大多數資料庫與框架的預設值,相容性最好。v7 帶 48 位毫秒時間戳前綴、按時間有序,做主鍵時索引不會被打散,日誌與事件流排序更直觀,適合新建資料表與事件 ID。存量 v4 系統不需要遷移。

GUID 和 UUID 是同一個東西嗎?

是。GUID 是微軟對 UUID 的稱呼,RFC 4122 之後兩者等價。Windows 生態常見的大括號大寫寫法,只是格式差異,用產生器的大寫與大括號選項就能得到。