Skip to content

通用唯一識別碼(Universally Unique Identifier, UUID)筆記

Last Updated on 2024-06-01 by Clay

介紹

在我們替手邊資料進行編號時,若是希望每筆資料都擁有獨一無二的編號、而非單純遞增的流水號,UUID 可說是最最常見的編號方式。

那麼,什麼是 UUID 呢?

UUID (Universally Unique Identifier) 被稱為『通用唯一識別碼』,是一種用於在計算機系統中唯一存在的標準編號方式。一般來說,UUID 通常是 128 位(128-bits)長的數字,可以保證在極大的概率下唯一性,重複的機率近乎為 0,所以在實際應用中通常不會特意檢查分配的 UUID 是否重複。

UUID 最常用的標準是由 IETF(Internet Engineering Task Force)定義的 RFC 4122,標準定義中存在著 5 種不同的版本:

  • UUIDv1:基於時間戳生成,包含時間戳、時鐘序列和節點(通常是 MAC 地址)
  • UUIDv2:類似 UUIDv1,通常是根據時間戳等 v1 有的特徵加上 POSIX UID/GID
  • UUIDv3:基於名字空間(namespace)和名字生成,使用 MD5 哈希(跟 v5 相似)
  • UUIDv4:隨機生成,大部分位數是隨機數
  • UUIDv5:基於名字空間和名字生成,使用 SHA-1 哈希(跟 v3 相似)

其中 v4 是最常使用的,並且由於大部分生成的位數都是隨機的,也同樣保持著高度唯一性。


UUID 結構

UUID 的結構很清晰,通常一看到類似的格式,馬上就能反應過來「啊~是 UUID 啊~」。剛剛也提到了,UUID 擁有 128 bits,也即是 16 bytes,被分隔為 5 個區段,不同區段以連字符 (-) 分隔。

123e4567-e89b-12d3-a456-426614174000


這五個部份依序為:

  1. 前 8 位(32 bits)
  2. 中間 4 位(16 bits)
  3. 中間 4 位(16 bits)
  4. 中間 4 位(16 bits)
  5. 後 12 位(48 bits)

使用方式

想要生成 UUID 是一件非常容易的事情,在大部分程式語言的標準函式庫中都會有相關的模組;比方說 Python 的 uuid 模組。

import uuid

# UUIDv1
uuid1 = uuid.uuid1()
print(uuid1)

# UUIDv4
uuid4 = uuid.uuid4()
print(uuid4)



References


Read More

Tags:

Leave a Reply