定義
UUID是由一組32位數(shù)的16進制數(shù)字所構(gòu)成,是故UUID理論上的總數(shù)為16的32次方。
也就是說若每納秒產(chǎn)生1兆個UUID,要花100億年才會將所有UUID用完。
UUID的標準型式包含32個16進制數(shù)字,以連字號分為五段,形式為8-4-4-4-12的32個字符。示例:
550e8400-e29b-41d4-a716-446655440000
UUID亦可刻意重復以表示同類。例如說微軟的COM中,所有組件皆必須實現(xiàn)出IUnknown接口,方法是產(chǎn)生一個代表IUnknown的UUID。無論是程序試圖訪問組件中的IUnknown接口,或是實現(xiàn)IUnknown接口的組件,只要IUnknown一被使用,皆會被參考至同一個ID:00000000-0000-0000-C000-0000000000461。
目的UUID的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。如此一來,每個人都可以創(chuàng)建不與其它人沖突的UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復問題。
目前最廣泛應用的UUID,是微軟公司的全局唯一標識符(GUID),而其他重要的應用,則有Linux ext2/ext3文件系統(tǒng)、LUKS加密分區(qū)、GNOME、KDE、Mac OS X等等。另外我們也可以在e2fsprogs包中的UUID庫找到實現(xiàn)。
組成UUID是指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照開放軟件基金會(OSF)制定的標準計算,用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字
UUID由以下幾部分的組合:
(1)當前日期和時間,UUID的第一個部分與時間有關(guān),如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。
(2)時鐘序列。
(3)全局唯一的IEEE機器識別號,如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得,沒有網(wǎng)卡以其他方式獲得。
UUID的唯一缺陷在于生成的結(jié)果串會比較長。關(guān)于UUID這個標準使用最普遍的是微軟的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內(nèi)的一個十六進制的數(shù)字。而標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進行轉(zhuǎn)換2。