通用唯一識別碼——UUID(Python)
一、概述:
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()
六、使用: