平時除了使用遞增的數字來當作主鍵(Id)以外,常見的就是使用 UUID 了。
但是 UUID 有個問題,因為是隨機產生的,資料不具有順序。而 ULID 則是採用 48bits 的 UNIX 時間(毫秒)(可以到西元 10889 年) + 80bits 的隨機內容,
最大的優點就是可以直接拿 ULID 做排序。
在使用上並沒有內建簡單產生 ULID 的方式,需要安裝第三方套件。
使用示範:
產生 ULID:
將字串轉換為 Ulid 格式,並取得建立 Ulid 的時間:
參考資料:
GitHub - ulid/spec
Github - RobThree/NUlid
但是 UUID 有個問題,因為是隨機產生的,資料不具有順序。而 ULID 則是採用 48bits 的 UNIX 時間(毫秒)(可以到西元 10889 年) + 80bits 的隨機內容,
最大的優點就是可以直接拿 ULID 做排序。
在使用上並沒有內建簡單產生 ULID 的方式,需要安裝第三方套件。
安裝
先使用 NuGet 安裝 NUlid 套件,或是使用 .NET CLI 執行以下指令安裝
dotnet add package NUlid
使用示範:
產生 ULID:
var ulid = Ulid.NewUlid();
Console.WriteLine(ulid); // 01JPWP72T52THXHFTJMZY94TG7
將字串轉換為 Ulid 格式,並取得建立 Ulid 的時間:
var ulid = Ulid.Parse("01JPWP72T52THXHFTJMZY94TG7");
Console.WriteLine(ulid); // 01JPWP72T52THXHFTJMZY94TG7
Console.WriteLine(ulid.Time); // 2025/3/21 下午 03:47:43 +00:00
參考資料:
GitHub - ulid/spec
Github - RobThree/NUlid
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com