C# 使用 ULID 取代 UUID

平時除了使用遞增的數字來當作主鍵(Id)以外,常見的就是使用 UUID 了。
但是 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

留言