8個UUID版本以及何時使用它們

banq發表於2024-07-01


通常,當我們有多個編號版本時,數字越大的版本越新,並且被認為更好。相比之下,UUID 有 8 個版本(v1 到 v8),它們各不相同,並且都在標準中定義。

在這裡,我將從高層次解釋它們是什麼,並連結到 RFC 的特定部分,以防您需要更多詳細資訊。

  • UUID 版本 1 (v1)由時間戳、單調計數器和 MAC 地址生成。
  • UUID 版本 2 (v2)保留用於沒有已知詳細資訊的安全 ID 2
  • UUID 版本 3 (v3)是根據您提供的一些資料的 MD5 雜湊值生成的。RFC 建議將 DNS 和 URL 列為資料候選物件。
  • UUID 版本 4 (v4)完全由隨機資料生成。這大概就是大多數人對 UUID 的看法和理解。
  • UUID 版本 5 (v5)是根據您提供的一些資料的 SHA1 雜湊值生成的。與 v3 一樣,RFC 建議將 DNS 或 URL 作為候選。
  • UUID 版本 6 (v6)由時間戳、單調計數器和 MAC 地址生成。這些資料與版本 1 相同,但順序有所改變,因此排序時將按建立時間排序。
  • UUID 版本 7 (v7)是由時間戳和隨機資料生成的。
  • UUID 版本 8(v8)是完全自定義的(除了所有版本都包含的必需版本/變體欄位)。

什麼時候應該使用它們?
有八個不同的版本,您應該使用哪個?有幾個常見的用例決定您應該使用哪個,有些已經被其他版本取代。

您通常會在 v4 或 v7 之間進行選擇。有時也會選擇 v5 或 v8。

  • 如果您只需要一個隨機 ID,請使用 v4。 這是一個不錯的預設選擇。
  • 如果您在需要排序的上下文中使用 ID,請使用 v7。例如,如果您使用 UUID 作為資料庫鍵,請考慮使用 v7。
  • 如果您想要在 UUID 中使用自己的資料,則使用 v5 或 v8,但通常情況下,您會知道是否需要它。

其它的呢?
  • 根據 RFC,v7 是對 v1 和 v6 的改進,如果可能的話,應該優先使用它們。所以你通常不會想要 v1 或 v6。如果你確實想要其中之一,你可以使用 v6。
  • v2 是為未指定的安全事項保留的。如果您正在使用這些,您可能無法告訴我或任何其他人,並且您可能不會閱讀這篇文章來了解有關它們的更多資訊。
  • v3 已被 v5 取代,後者使用更強大的雜湊。您可能知道是否需要它。

相關文章