1. 程式人生 > >通用唯一識別碼——UUID(Python)

通用唯一識別碼——UUID(Python)

命名 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)