ULID 產生器
產生 ULID(通用唯一字典排序標識符)。26 個字元,URL 安全,可按時間排序,相容 UUID。
產生 ULID
建立可排序的唯一標識符
產生的 ULID
點擊"產生 ULID"建立唯一標識符
常見問題
什麼是 ULID?
一個 26 字元標識符,包含 48 位元毫秒時間戳和 80 位元隨機性,因此 ID 會依照建立時間排序。
為什麼選擇 ULID 而不是 UUID?
ULID 按時間字典順序排序,更短,並且使用 URL 安全性Crockford base32,無需管理連字符。
我可以相信這個順序嗎?
跨越不同的毫秒,是的。在同一毫秒內,無法保證兩個 ULID 之間的順序。
ULID 在使用 UUID 的情況下工作嗎?
它們會放入大多數字串列和 API 中,當兩種格式必須共存時,ULID 和 UUID 之間的轉換非常簡單。
ULID 有多長?使用哪些字元?
每個 ULID 固定為 26 個字元,採用 Crockford Base32 編碼,包含數字 0-9 以及 A-Z 的字母(但不含 I、L、O 和 U)。這種固定長度讓資料庫欄位大小易於預估,並在口頭唸出或手動輸入 ID 時避免易混淆的字元。
ULID 可以安全地用於 URL 和檔案名稱嗎?
可以。ULID 只包含大寫字母和數字,沒有連字號、斜線或符號,因此在 URL、路徑片段和檔案名稱中使用時不需要百分號編碼。26 個字元的長度也很適合放入路由規則和日誌記錄中。
同一毫秒內可以產生多少個 ULID?
80 位隨機區段在每毫秒內可提供約 2^80 個數值,因此實務上幾乎不可能發生碰撞。如果您的應用程式在同一毫秒內產生多個 ID,請使用單調模式,它會將隨機部分遞增 1,以保持排序順序。
如何從 ULID 讀取時間戳?
前 10 個字元以毫秒為單位編碼 Unix 時間戳,其餘 16 個字元則是隨機數。將這 10 個字元從 Crockford Base32 解碼為數字,再使用任何 Unix 時間戳轉換工具,即可得到確切的建立時間。
ULID 結構
每個 ULID 由兩部分組成:時間戳和隨機數
01ARZ3NDEKTSV4RRFFQ69G5FAV
範例:此 ULID 在特定毫秒產生,包含 80 位隨機數
時間戳 (48 位)
Unix 紀元(1970-01-01)以來的毫秒數。提供時間排序功能,可持續到 10889 年。
隨機數 (80 位)
加密安全的隨機值。每毫秒可產生 121 萬億個唯一 ID。
技術規格
ULID 設計為可排序、URL 安全且相容 UUID
特性
- 加密安全的隨機性
- 僅用戶端產生
- 字典序可排序
- 無特殊字元(URL 安全)
規格
- 26 個字元(128 位)
- Crockford's Base32 編碼
- 48 位時間戳 + 80 位隨機數
- 每毫秒 121 萬個 ID
參考資料與資源
-
ULID Specification - GitHub
可排序的 ULID 規格——以時間戳記為前綴的唯一識別碼。
-
Universally Unique Identifier - Wikipedia
通用唯一識別碼及其各種變體的一般參考資料。