Generátor UUID

Přidat na web Metainformace

Ostatní nástroje

Generování UUID/GUID

Generování UUID/GUID

Univerzální jedinečný identifikátor (UUID), známý také jako globálně jedinečný identifikátor (GUID), je široce používán v počítačových systémech.

Jedná se o 128bitový kód, který je generován systémem na základě proměnných a konstant: aktuální čas, MAC adresa, SHA-1 hash, jmenný prostor MD5. Konečný výsledek generování UUID, zobrazený jako 32místný alfanumerický kód oddělený pomlčkami, se může zdát libovolný, ale ve skutečnosti je výsledkem složitých výpočtů. Počítač tedy kód „nevymýšlí“, ale tvoří jej ze specifických technických veličin, které jsou v daném čase relevantní.

Pravděpodobnost, že bude stejný UUID vygenerován na dvou různých počítačích v různých časech, má tendenci k nule, což umožňuje použít výsledné kódy pro bodovou/místní identifikaci dat bez odkazu na koordinační centrum. Dnes je UUID/GUID všudypřítomný v online i offline sítích a efektivně funguje nejen v globálním internetovém prostoru, ale také v samostatných počítačových systémech.

Historie UUID

128bitové kódy UUID byly poprvé použity americkou společností Apollo Computer v 80. letech 20. století. Byly založeny na jednodušších 64bitových kódech používaných v Domain/OS a našly široké použití v počítačovém prostředí Open Software Foundation.

S příchodem prvních platforem Windows byl globálně jedinečný identifikátor zobecněn a standardizován. Microsoft převzal design DCE od Apollo Computer a zaregistroval jmenný prostor URN v RFC 4122. V roce 2005 byl tento jmenný prostor navržen jako nový standard organizací IETF a UUID bylo standardizováno v rámci ITU.

Dříve v roce 2002 byly zjištěny problémy s výkonem systému při používání UUID jako primárních klíčů v místních databázích. Ty byly opraveny ve verzi 4 přidáním nenáhodné přípony na základě systémového času počítače. Takzvaný přístup COMB (Combined GUID Time Identifier) ​​zvýšil rizika duplikace kódu, ale zároveň výrazně zlepšil výkon při práci s Microsoft SQL Server.

S rozvojem IT technologií přestal být univerzální unikátní identifikátor vysoce specializovaným technickým nástrojem a dnes jej může používat každý. Pravděpodobnost opakování vygenerovaných kódů se nerovná nule, ale má tendenci k ní a lze jimi identifikovat jakoukoli digitální informaci, poté je lze sloučit do jednotlivých datových polí s minimálním rizikem opakování.

Výhody UUID

Generátory globálních jedinečných kódů nevyžadují centralizované srovnávání/synchronizaci dat a jsou volně dostupné všem uživatelům. Mezi hlavní výhody UUID patří:

  • Minimální rizika „kolize“ (opakování) kódů. I přes jejich masivní používání bývá pravděpodobnost opakování nulová.
  • Možnost spojovat různá pole dat pomocí UUID jako primárních (jedinečných) klíčů.
  • Zjednodušená distribuce dat na více rozptýlených serverech.
  • Možnost generovat kódy offline.

Unikátní identifikační kódy napsané ve formátu xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx umožňují rozptýleným systémům rozpoznat informace bez koordinace z jediného datového centra: s téměř nulovou pravděpodobností chyb/opakování. Tato funkce spolu se snadným používáním a malými požadavky na výkon počítače činí UUID žádaným a nepostradatelným v celé řadě odvětví IT a autonomních počítačových systémů.

Univerzální unikátní identifikátor

Univerzální unikátní identifikátor

UUID může generovat kódy pomocí různých algoritmů a proměnných/konstantních hodnot.

Existuje celkem 5 verzí identifikátoru, které při vygenerování používají systémové datum/čas a MAC adresy, bezpečnostní protokoly DCE, MD5 hash, SHA-1 a jmenný prostor.

Ve všech případech je konečný výsledek zobrazen ve formátu xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (číslo v šestnáctkové soustavě, skládající se z malých latinských písmen a číslic a rozdělené pomlčkami do pěti bloků: 8-4 -4-4- 12), M znamená verzi, N znamená variantu UUID.

Systém tedy používá 36 znaků najednou (26 písmen a 10 čísel), takže pravděpodobnost opakování 32místných kódů je nulová, přestože je denně generují miliony uživatelů po celém světě.

Verze UUID

Verze 1

První verze jedinečného identifikátoru je při generování kódu založena na MAC adrese počítače a jeho systémovém čase, který mění svou číselnou hodnotu 1x za sekundu. Proces generování se skládá z pěti fází:

  • Spodních 32 bitů informací je převzato ze značky UTC. Jsou převedeny na 8 hexadecimálních znaků a zabírají 4 bajty.
  • Průměrně 16 bitů informací je převzato ze stejného štítku UTC a převedeno na 4 hexadecimální znaky zabírající 2 bajty.
  • Horních 12 bitů informací ze značky UTC je převzato a převedeno na další 4 hexadecimální znaky.
  • Další 1–3 bity připadají na sekvenci hodin a snižují riziko kolizí zavedením určitého stupně náhodnosti/nejistoty. Systémový čas je buď podmíněně zpomalen nebo vrácen zpět – aby se dva nebo více identifikátorů pracujících na stejném počítači současně „nekřížily“.
  • Zbývajících 6 bajtů je konstantní hodnota generovaná na základě MAC adresy zařízení. Skládá se z 12 hexadecimálních znaků a má velikost 48 bitů.

Protože algoritmus první verze UUID je neoddělitelně spjat se systémovým časem, je použití sekvence hodin povinné. V opačném případě se riziko generování stejných kódů mnohonásobně zvýší – během vteřiny, kdy systémový čas „zamrzne“ na té či oné hodnotě.

Verze 2

Druhá verze se od první liší minimálně a v praxi se používá jen zřídka. Místo sekvence hodin používá systémový identifikátor vázaný na uživatelská data nebo jiné jedinečné hodnoty, které se na jiných počítačích neopakují nebo se opakují velmi zřídka. Vliv náhodnosti ve druhé verzi je minimalizován a lze ji použít ke zlepšení zabezpečení distribuovaného výpočetního prostředí.

Verze 3 a 5

Mají mnoho společného: k vytváření kódů používají jedinečná jména a názvy (z prostoru MD5), tedy nenáhodné hodnoty. Pouze verze 3 používá standardní hash, zatímco verze 5 používá hash SHA-1. Takové identifikátory jsou méně závislé na náhodných proměnných.

Verze 4

Vygenerování této verze UUID je z více než 90 % náhodné. Má 6 bitů pro konstantní hodnoty a 122 pro libovolné. Implementace algoritmu spočívá v tom, že 128 bitů informace je nejprve vygenerováno náhodně a 6 z nich je nahrazeno daty verze a varianty.

Role generátoru pseudonáhodných čísel ve čtvrté verzi je maximální a pokud má příliš jednoduchý algoritmus, výrazně se zvyšuje riziko opakování/kolizí. Navzdory tomu je to čtvrtá verze, která je v praxi zdaleka nejběžnější a nejčastěji používaná.

Možnosti UUID

Jedinečné UUID bylo s vývojem počítačových technologií několikrát zdokonalováno a dnes je prezentováno v několika verzích.

Možnost 0

Navrženo pro práci se staršími databázemi formátu Apollo Network Computing System 1.5 z roku 1988. Tato možnost je s nimi zpětně kompatibilní a není v konfliktu s historickými UUID NCS.

Možnosti 1 a 2

Slouží k identifikaci moderních datových bloků a polí a v kanonické textové podobě se od sebe neliší, s výjimkou pořadí zápisu variantních bitů. Takže možnost 1 používá pořadí bajtů big-endian a možnost 2 používá title-endian. První je hlavní a druhý je vyhrazen pro práci s ranými GUID z Microsoft Windows.

Možnost 3

Momentálně se nepoužívá. Jedná se o vyhrazenou verzi pro budoucí použití – až budou vyčerpány možnosti předchozích možností.

Většina systémů kóduje identifikátor v big-endian, ale existují výjimky. Například zařazování v knihovnách Microsoft COM/OLE používá smíšený endian při generování kódu z bloků title-endian a big-endian. První jsou první tři součásti UUID a druhá jsou poslední dvě.