一广辰、關(guān)于UUID
UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫暇矫,是一種軟件建構(gòu)的標準,亦為開放軟件基金會組織在分布式計算環(huán)境領(lǐng)域的一部分轨域。其目的袱耽,是讓分布式系統(tǒng)中的所有元素泽裳,都能有唯一的辨識信息颁糟,而不需要通過中央控制端來做辨識信息的指定欧瘪。如此一來吊奢,每個人都可以創(chuàng)建不與其它人沖突的UUID量没。在這樣的情況下至非,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復問題钢属。
二熔萧、python的uuid模塊
python的uuid模塊提供UUID類和函數(shù)uuid1(), uuid3(), uuid4(), uuid5() 來生成1, 3, 4, 5各個版本的UUID ( 需要注意的是: python中沒有uuid2()這個函數(shù)).?
1.uuid.uuid1([node[, clock_seq]]):
?基于時間戳
使用主機ID, 序列號, 和當前時間來生成UUID, 可保證全球范圍的唯一性. 但由于使用該方法生成的UUID中包含有主機的網(wǎng)絡(luò)地址, 因此可能危及隱私.
例:
>>># make a UUID based on the host ID and current time
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
2.?uuid.uuid3(namespace, name):?
?基于名字的MD5散列值
? ??????通過計算命名空間和名字的MD5散列值來生成UUID, 可以保證同一命名空間中不同名字的唯一性和不同命名空間的唯一性, 但同一命名空間的同一名字生成的UUID相同.
例:
>>># make a UUID using an MD5 hash of a namespace UUID and a name>>> uuid.uuid3(uuid.NAMESPACE_DNS,'python.org')
UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
3. uuid.uuid4():?
基于隨機數(shù)
通過隨機數(shù)來生成UUID. 使用的是偽隨機數(shù)有一定的重復概率.?
例:
>>># make a random UUID>>> uuid.uuid4()
UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
4.?uuid.uuid5(namespace, name)?:?
基于名字的SHA-1散列值
? ??????通過計算命名空間和名字的SHA-1散列值來生成UUID, 算法與?uuid.uuid3()?相同.
例:
>>># make a UUID using a SHA-1 hash of a namespace UUID and a name>>> uuid.uuid5(uuid.NAMESPACE_DNS,'python.org')
UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
參考文檔: