好文分享 — 8 種版本 UUID 的簡介與何時使用它們 / TIL: 8 versions of UUID and when to use them

根據 RFC 9562 文件定義,有 10 種 UUIDs,其中 2 種為 Nil 與 Max UUID,分別為 00000000-0000-0000-0000-000000000000FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 這 2 種,剩下 8 種就是 UUID version 1 到 UUID version 8 。

UUID version 1 到 UUID version 8 有不同的生成與排列方式,也因為如此,它們各自有適合的應用場景。

簡單來說,如果需要隨機的 UUID 的話,可以選擇 UUID v4 就好。

但 UUID v4 的生成是無序的特點,不適合作為資料庫的索引欄位使用,這時可以使用 UUID v7 取代 UUID v4 ,原因是 UUID v7 前面 48-bit 使用 Unix Epoch timestamp,所以 UUID v7 前 48-bit 可以用來排序,可以說 UUID v7 用部分有序減少 UUID v4 對資料庫效能的影響。

UUID v5 與 v8 則適合需要用自己提供的資料生成 ID 的情況。

UUID v5 其實是用我們傳入的 namespace 與 name 接在一起之後,算出其 SHA1 雜湊值之後,再生成 UUID v5;而 UUID v8 除了 version 與 variant 2 個欄位有規範之外,剩下的 bits 都可以自行決定要放什麼資料,屬於高度可客製化的 UUID 版本,而 RFC 9562 也指出 UUID v8 是給實驗使用或者讓 vendor 客製的格式,所以一般開發者不會特意使用 UUID v8,這也是你不會在函式庫中看到 UUID v8 的原因。

總結一下:

  • UUID v4 無序隨機
  • UUID v7 前 48-bit 有序
  • UUID v5 利用帶入資料的 SHA1 雜湊值生成 UUID

至於剩下的 UUID 則基本上可以忽略,不是被 v7 或者 v5 改善/取代,就是屬於特別保留的 UUID (例如 UUID v2)。

有興趣的話,可以閱讀 “TIL: 8 versions of UUID and when to use them” 1 文。

Facebook Threads X

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!