DevToolPal
繁

ULID 產生器

產生 ULID:26 個字元、可依時間排序的唯一 ID,使用安全亂數,一次最多 1000 個。

本機處理,不會上傳

選項

ULID

0 字元 · 0 B

功能介紹

這個工具在你的瀏覽器中產生 ULID。ULID 和 UUID 一樣是 128 位元的識別碼,但它以 26 個字元表示,並且會依建立時間排序。因此 ULID 很適合用作資料庫主鍵、事件和日誌 ID、檔案名稱,以及任何想依建立順序列出、又不想另外加時間戳記欄位的資料。

ULID 由兩個部分組成:

  • 時間戳記(前 10 個字元): 自 Unix epoch 起算的毫秒數,48 位元,可以一直用到 10889 年。
  • 亂數(後 16 個字元): 來自瀏覽器密碼學亂數產生器的 80 位元。

ULID 使用 Crockford Base32 字母表 0123456789ABCDEFGHJKMNPQRSTVWXYZ。它排除了 I、L、O 和 U,所以 ID 容易唸出、不容易打錯,而且不含任何在 URL 中需要跳脫的字元。

使用方式

  1. 選擇需要的 ID 數量,從 1 到 1000。
  2. 如果 ID 即使在同一毫秒內建立多個也必須維持順序,請開啟 單調遞增。此時每個新 ID 的亂數部分會加一。
  3. 如果你的系統以小寫儲存 ID,請開啟 小寫。ULID 不分大小寫,標準形式是大寫。
  4. 複製清單或下載成文字檔。再按一次產生即可取得一批新的 ID。

範例

01ARZ3NDEKTSV4RRFFQ69G5FAV

其中 01ARZ3NDEK 是時間戳記 1469922850259(2016-07-30 23:54:10.259 UTC),TSV4RRFFQ69G5FAV 是亂數部分。相隔一秒建立的兩個 ULID,前幾個字元會相同,這就是為什麼單純的字串排序就能把它們依時間排好。

ULID 與 UUID 的比較

隨機的 UUID v4 會讓新資料列分散在 B-tree 索引的各處,在大型資料表上會拖慢寫入速度。ULID 大致是遞增的,所以新資料列會落在索引的尾端,就像自動遞增整數一樣,同時又能在多台機器之間不經協調就保持唯一。代價是 ULID 會透露大約的建立時間。如果這一點很重要,請使用 UUID v4。

常見問題

› 什麼是 ULID?

ULID(Universally Unique Lexicographically Sortable Identifier,可依字典序排序的通用唯一識別碼)是一種 128 位元的 ID,以 26 個 Crockford Base32 字元表示。前 10 個字元編碼毫秒時間戳記,後 16 個字元是亂數。

› ULID 還是 UUID:該用哪一個?

如果你希望 ID 能依建立時間排序,例如當作資料庫鍵或日誌 ID,就用 ULID。如果 ID 不能透露建立時間,就用 UUID v4。UUID v7 則是同樣依時間排序的標準替代方案。

› 單調遞增模式有什麼作用?

同一毫秒內建立的 ID 通常會各自取得獨立的亂數部分,所以它們在該毫秒內的順序是隨機的。在單調遞增模式下,亂數部分改為每次加一,因此這批 ID 中的每一個都會嚴格排在前一個之後。

› ID 的產生方式安全嗎?

安全。亂數部分來自瀏覽器的密碼學亂數產生器,而且不會傳送任何內容到伺服器。