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
這五個部份依序為:
- 前 8 位(32 bits)
- 中間 4 位(16 bits)
- 中間 4 位(16 bits)
- 中間 4 位(16 bits)
- 後 12 位(48 bits)
使用方式
想要生成 UUID 是一件非常容易的事情,在大部分程式語言的標準函式庫中都會有相關的模組;比方說 Python 的 uuid
模組。
import uuid
# UUIDv1
uuid1 = uuid.uuid1()
print(uuid1)
# UUIDv4
uuid4 = uuid.uuid4()
print(uuid4)
References
- Universally unique identifier – Wikipedia
- Online UUID Generator Tool (如果你想要使用線上的 UUID 生成工具,也可以考慮使用這個網站)