Generátor UUID
Vygenerovaný UUID
Generátor UUID
Úvod
Universálne jedinečný identifikátor (UUID) je 128-bitové číslo používané na identifikáciu informácií v počítačových systémoch. UUID sú štandardizované Open Software Foundation (OSF) ako súčasť Distribuovaného výpočtového prostredia (DCE). Tieto identifikátory sú navrhnuté tak, aby boli jedinečné v priestore aj čase, čo ich robí ideálnymi pre rôzne aplikácie v distribuovaných systémoch a mimo nich.
Tento nástroj na generovanie UUID vám umožňuje vytvárať verzie 1 (na základe času) a verzie 4 (náhodné) UUID. Tieto identifikátory sú užitočné v rôznych scenároch, kde je potrebná jedinečná identifikácia, ako sú kľúče databáz, distribuované systémy a sieťové protokoly.
Ako UUID fungujú
Štruktúra UUID
UUID je zvyčajne reprezentovaný ako 32 hexadecimálnych číslic, zobrazených v piatich skupinách oddelených pomlčkami, v tvare 8-4-4-4-12, čo predstavuje celkom 36 znakov (32 alfanumerických znakov a 4 pomlčky). Napríklad:
550e8400-e29b-41d4-a716-446655440000
128 bitov UUID je rozdelených do špecifických polí, pričom každé nesie rôzne informácie v závislosti od verzie UUID:
- 32 bitov pre pole time_low
- 16 bitov pre pole time_mid
- 16 bitov pre pole time_hi_and_version
- 8 bitov pre pole clock_seq_hi_and_reserved
- 8 bitov pre pole clock_seq_low
- 48 bitov pre pole node
Tu je diagram ilustrujúci štruktúru UUID:
Verzie UUID
Existuje niekoľko verzií UUID, z ktorých každá má svoj vlastný spôsob generovania:
- Verzia 1 (na základe času): Používa aktuálny časový pečiatok a MAC adresu počítača.
- Verzia 2 (DCE Security): Podobná verzii 1, ale obsahuje identifikátor miestneho domény.
- Verzia 3 (na základe názvu, MD5): Generovaná hashovaním identifikátora menného priestoru a názvu.
- Verzia 4 (náhodná): Generovaná pomocou náhodného alebo pseudo-náhodného čísla.
- Verzia 5 (na základe názvu, SHA-1): Podobná verzii 3, ale používa SHA-1 hashovanie.
Tento nástroj sa zameriava na generovanie verzií 1 a 4 UUID.
Formula
Generovanie UUID verzie 1
UUID verzie 1 sú generované pomocou nasledujúcich komponentov:
- Časová pečiatka: 60-bitová hodnota predstavujúca počet 100-nanosekundových intervalov od 15. októbra 1582 (dátum gregoriánskej reformy kresťanského kalendára).
- Sekvencia hodiniek: 14-bitová hodnota používaná na vyhnutie sa duplicitám v prípade, že sa hodiny nastavujú späť.
- Node: 48-bitová hodnota, zvyčajne odvodená z MAC adresy počítača.
Formula na generovanie UUID verzie 1 môže byť vyjadrená ako:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
Generovanie UUID verzie 4
UUID verzie 4 sú generované pomocou kryptograficky silného generátora náhodných čísel. Formula je jednoducho:
UUID = random_128_bit_number
S konkrétnymi bitmi nastavenými na označenie verzie (4) a variantu.
Použitie
UUID majú množstvo aplikácií v rôznych oblastiach počítačovej vedy a softvérového inžinierstva:
-
Kľúče databáz: UUID sa často používajú ako primárne kľúče v databázach, najmä v distribuovaných systémoch, kde môže viacero uzlov generovať záznamy súčasne.
-
Distribuované systémy: V rozsiahlych distribuovaných systémoch pomáhajú UUID jedinečne identifikovať zdroje, transakcie alebo udalosti naprieč viacerými uzlami alebo dátovými centrami.
-
Adresovanie obsahu: UUID môžu byť použité na vytvorenie jedinečných identifikátorov pre obsah v systémoch s adresovateľným obsahom.
-
Správa relácií: Webové aplikácie často používajú UUID na správu používateľských relácií, pričom zabezpečujú, že každá relácia má jedinečný identifikátor.
-
Identifikácia zariadení IoT: V aplikáciách Internetu vecí (IoT) môžu byť UUID použité na jedinečné identifikovanie jednotlivých zariadení v sieti.
Alternatívy
Aj keď sú UUID široko používané, existujú alternatívne prístupy na generovanie jedinečných identifikátorov:
-
Automaticky zvyšujúce sa ID: Jednoduché a bežne používané v systémoch s jednou databázou, ale nie sú vhodné pre distribuované prostredia.
-
ID na základe časovej pečiatky: Môžu byť užitočné pre časovo usporiadané dáta, ale môžu čeliť problémom s kolíziou v scénaroch s vysokou konkurenciou.
-
Snowflake ID: Vyvinuté spoločnosťou Twitter, tieto ID kombinujú časovú pečiatku a číslo pracovníka na generovanie jedinečných ID v distribuovaných systémoch.
-
ULID (Universally Unique Lexicographically Sortable Identifier): Novšia alternatíva, ktorá sa snaží byť priateľskejšia k používateľom a usporiadateľnejšia ako UUID.
História
Koncept UUID bol prvýkrát predstavený v systéme Apollo Network Computing a neskôr štandardizovaný Open Software Foundation (OSF) ako súčasť Distribuovaného výpočtového prostredia (DCE) v 90. rokoch. Počiatočná špecifikácia bola publikovaná v roku 1997 ako ISO/IEC 11578:1996 a neskôr revidovaná v roku 2005 ako súčasť ISO/IEC 9834-8:2005.
Kľúčové míľniky v histórii UUID:
-
- roky: Apollo Computer vyvinul koncept UUID pre ich systém sieťového výpočtu.
- 1997: Prvá špecifikácia UUID publikovaná ako ISO/IEC 11578:1996.
- 2005: Špecifikácia UUID revidovaná a publikovaná ako súčasť ISO/IEC 9834-8:2005.
- 2009: RFC 4122 definuje formát UUID a algoritmy generovania používané dnes.
V priebehu času sa UUID stali nevyhnutným nástrojom v distribuovaných systémoch a návrhu databáz, s rôznymi implementáciami a adaptáciami naprieč rôznymi programovacími jazykmi a platformami.
Kódové príklady
Tu sú príklady generovania UUID v rôznych programovacích jazykoch:
import uuid
## Generovanie UUID verzie 4 (náhodné)
random_uuid = uuid.uuid4()
print(f"UUID verzie 4: {random_uuid}")
## Generovanie UUID verzie 1 (na základe času)
time_based_uuid = uuid.uuid1()
print(f"UUID verzie 1: {time_based_uuid}")
Odkazy
- Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
- Medzinárodná organizácia pre normalizáciu. (2005). Informačné technológie – Procedúry pre prevádzku orgánov registrácie OSI: Generovanie a registrácia univerzálnych jedinečných identifikátorov (UUID) a ich použitie ako komponenty ASN.1 Object Identifier. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Universálne jedinečný identifikátor. (2023). V Wikipédii. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. (2023). V Wikipédii. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. (n.d.). GitHub. https://github.com/ulid/spec