Snowflake ID 是 Twitter 2010 年提出的 64-bit 整數 ID 方案,靠時間戳在前讓 ID 大致照時間排序,同時保留在多台機器上各自生成、不需要中央發號的能力。這篇整理 Snowflake 的位元結構、理論上限、Discord 與 Instagram 等各家變體的差異,解釋機器 ID 協調問題是最大的運維負擔,並比較 Snowflake 與 UUIDv7、ULID 的取捨,附上 Java、Go、Node.js 的程式碼範例。
Snowflake ID 深入解析|位元結構、各家變體與選型取捨
UUID 版本演進與 ULID 完整指南|v1 到 v7 差異與資料庫主鍵選擇
UUID 從 RFC 4122 走到 RFC 9562,歷經 v1 到 v8 多個版本,設計目標各不相同。這篇整理 v1 時間加 MAC、v4 純隨機、v6 重排到 v7 時間排序的位元結構與背景,說明為什麼 UUIDv4 當資料庫主鍵會造成 B-tree 索引碎片、拖慢寫入,以及時間可排序的 UUIDv7 與 ULID 如何解決這個問題,並比較 v7 與 ULID 的取捨、給出主鍵選型建議,簡介 Snowflake、KSUID、NanoID,附上 PostgreSQL、Java、JavaScript、Python 產生 UUIDv7 與 ULID 的程式碼範例。