通用唯一識別碼——UUID(Python)
阿新 • • 發佈:2019-02-19
命名 17. 最好 通過 進制 表示 python ids 方式
一、概述:
- UUID(Universally Unique Identity)的縮寫,是一種軟件建構的標準,通常由32字節16進制數表示(128位),它可以保證時間和空間的唯一性。目前應用最廣泛的UUID事微軟的GUIDs。
二、作用:
- UUID讓分布式系統所有元素都有唯一的辨識信息,讓每個人都可以建立與他人不同的UUID,不需考慮數據庫建立時的名稱重復問題。隨機生成字符串,當成token、用戶賬號、訂單等。
三、原理:
- UUID是指一臺機器上生成的數字,他保證同一時空所有機器都是唯一的。
- UUID由以下幾部分構成:
- (1)時間戳:根據當前時間或者時鐘序列生成字符串
- (2)全劇唯一的機器識別號,根據網卡MAC地址或者IP獲取,如果沒有網卡則以其他方式獲取。
- (3)隨機數:機器自動隨機一組序列
等等
四、算法
- uuid有5種生成算法,分別是uuid1()、uuid2()、uuid3()、uuid4()、uuid5()。
- 1、uuid1()基於時間戳
- 由MAC地址、當前時間戳、隨機數字。保證全球範圍內的唯一性。但是由於MAC地址使用會帶來安全問題,局域網內使用IP代替MAC
- 2、uuid2() 基於分布式環境DCE
- 算法和uuid1相同,不同的是把時間戳前四位換成POIX的UID,實際很少使用。註意:python中沒有這個函數
- 3、uuid3() 基於名字和MD5散列值
- 通過計算名字和命名空間的MD5散列值得到的,保證了同一命名空間中不同名字的唯一性,不同命名空間的唯一性。但是同一命名空間相同名字生成相同的uuid。
- 4、uuid4() 基於隨機數
- 由偽隨機數得到的,有一定重復概率,這個概率是可以算出來的
- 5、uuid5() 基於名字和SAHI值
- 算法和uuid3相同,不同的是使用SAHI算法
五、使用經驗:
- 1、python中沒有DCE,所以uuid2可以忽略
- 2、uuid4存在概率重復性,由於無映射性,最好不使用
- 3、如果全局的分布式環境下,最好使用uuid1
- 4、若名字的唯一性要求,最好使用uuid3或者uuid5
六、使用:
通用唯一識別碼——UUID(Python)