UUID Generátor
Generált UUID
UUID Generátor
Bevezetés
A Globálisan Egyedi Azonosító (UUID) egy 128 bites szám, amelyet az információk azonosítására használnak számítógépes rendszerekben. Az UUID-ket az Open Software Foundation (OSF) szabványosította a Distributed Computing Environment (DCE) részeként. Ezeket az azonosítókat úgy tervezték, hogy egyediek legyenek térben és időben, így ideálisak különböző alkalmazásokhoz elosztott rendszerekben és azon túl.
Ez az UUID generátor eszköz lehetővé teszi az 1. verzió (időalapú) és a 4. verzió (véletlenszerű) UUID-k létrehozását. Ezek az azonosítók hasznosak különböző forgatókönyvekben, ahol egyedi azonosításra van szükség, például adatbázis kulcsok, elosztott rendszerek és hálózati protokollok esetén.
Hogyan működnek az UUID-k
UUID Struktúra
Az UUID-t általában 32 hexadecimális számjegyként ábrázolják, öt csoportba rendezve, amelyeket kötőjelek választanak el, a következő formában: 8-4-4-4-12, összesen 36 karakter (32 alfanumerikus karakter és 4 kötőjel). Például:
550e8400-e29b-41d4-a716-446655440000
Az UUID 128 bitje specifikus mezőkre van felosztva, amelyek mindegyike különböző információt hordoz az UUID verziójától függően:
- 32 bit a time_low mezőhöz
- 16 bit a time_mid mezőhöz
- 16 bit a time_hi_and_version mezőhöz
- 8 bit a clock_seq_hi_and_reserved mezőhöz
- 8 bit a clock_seq_low mezőhöz
- 48 bit a node mezőhöz
Íme egy diagram, amely bemutatja az UUID struktúráját:
UUID Verziók
Több verzió létezik az UUID-kből, mindegyik saját generálási módszerrel:
-
- verzió (Időalapú): A jelenlegi időbélyeget és a számítógép MAC címét használja.
-
- verzió (DCE Biztonság): Hasonló az 1. verzióhoz, de tartalmaz egy helyi domain azonosítót.
-
- verzió (Név-alapú, MD5): Egy névterület-azonosító és név hash-elésével generálódik.
-
- verzió (Véletlenszerű): Véletlenszerű vagy álnéven generált számot használ.
-
- verzió (Név-alapú, SHA-1): Hasonló a 3. verzióhoz, de SHA-1 hash-elést használ.
Ez az eszköz az 1. és 4. verzió UUID-k generálására összpontosít.
Fórmák
1. verzió UUID Generálás
Az 1. verzió UUID-k a következő összetevőkkel generálódnak:
- Időbélyeg: Egy 60 bites érték, amely a 100 nanomásodperces intervallumok számát jelenti 1582. október 15. óta (a Gergely-naptár reformjának dátuma).
- Óra szekvencia: Egy 14 bites érték, amelyet a visszaállítások elkerülésére használnak.
- Node: Egy 48 bites érték, amely általában a számítógép MAC címéből származik.
Az 1. verzió UUID generálásának képlete a következőképpen fejezhető ki:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
4. verzió UUID Generálás
A 4. verzió UUID-ket kriptográfiailag erős véletlenszám-generátorral generálják. A képlet egyszerűen:
UUID = random_128_bit_number
A specifikus bitek beállításával a verzió (4) és a variáns jelzésére.
Felhasználási esetek
Az UUID-knak számos alkalmazása van a számítástechnika és a szoftverfejlesztés különböző területein:
-
Adatbázis Kulcsok: Az UUID-ket gyakran használják elsődleges kulcsokként adatbázisokban, különösen elosztott rendszerekben, ahol több csomópont is generálhat rekordokat egyidejűleg.
-
Elosztott Rendszerek: Nagy léptékű elosztott rendszerekben az UUID-k segítenek az erőforrások, tranzakciók vagy események egyedi azonosításában több csomópont vagy adatközpont között.
-
Tartalom Címkézés: Az UUID-ket egyedi azonosítók létrehozására használják a tartalom-címkéző tárolórendszerekben.
-
Üléskezelés: A webalkalmazások gyakran használnak UUID-ket a felhasználói ülések kezelésére, biztosítva, hogy minden ülésnek egyedi azonosítója legyen.
-
IoT Eszköz Azonosítás: Az Internet of Things (IoT) alkalmazásokban az UUID-ket egyedi azonosítók létrehozására használják az egyes eszközök számára egy hálózatban.
Alternatívák
Bár az UUID-k széles körben használatosak, léteznek alternatív megközelítések az egyedi azonosítók generálására:
-
Automatikusan növekvő azonosítók: Egyszerűek és gyakran használják egyetlen adatbázis-rendszerekben, de nem alkalmasak elosztott környezetekre.
-
Időbélyeg-alapú azonosítók: Hasznosak lehetnek időrendben történő adatokhoz, de ütközési problémákkal szembesülhetnek magas egyidejűségű forgatókönyvekben.
-
Snowflake azonosítók: A Twitter által kifejlesztett azonosítók, amelyek az időbélyeget és a munkás számát kombinálják az elosztott rendszerekben történő egyedi azonosítók generálásához.
-
ULID (Globálisan Egyedi Lexikográfiai Rendezett Azonosító): Egy újabb alternatíva, amely célja, hogy emberbarátabb és rendezhetőbb legyen, mint az UUID-k.
Történelem
Az UUID-k koncepcióját először az Apollo Network Computing System-ben vezették be, majd az Open Software Foundation (OSF) szabványosította a Distributed Computing Environment (DCE) részeként az 1990-es években. Az első specifikációt 1997-ben publikálták ISO/IEC 11578:1996 néven, majd 2005-ben felülvizsgálták az ISO/IEC 9834-8:2005 részeként.
A UUID történetének kulcsfontosságú mérföldkövei:
- 1980-as évek: Az Apollo Computer kifejleszti az UUID koncepciót a Network Computing System számára.
- 1997: Az első UUID specifikációt publikálják ISO/IEC 11578:1996 néven.
- 2005: Az UUID specifikációt felülvizsgálják és publikálják az ISO/IEC 9834-8:2005 részeként.
- 2009: Az RFC 4122 meghatározza az UUID formátumát és generálási algoritmusait, amelyeket ma használnak.
Idővel az UUID-k alapvető eszközzé váltak az elosztott rendszerek és az adatbázis tervezés terén, különböző implementációkkal és alkalmazásokkal, amelyek különböző programozási nyelvekben és platformokon találhatók.
Kód példák
Íme példák az UUID-k generálására különböző programozási nyelvekben:
import uuid
## Generálj egy 4. verzió (véletlenszerű) UUID-t
random_uuid = uuid.uuid4()
print(f"4. verzió UUID: {random_uuid}")
## Generálj egy 1. verzió (időalapú) UUID-t
time_based_uuid = uuid.uuid1()
print(f"1. verzió UUID: {time_based_uuid}")
Referenciák
- Leach, P., Mealling, M., & Salz, R. (2005). A Globálisan Egyedi Azonosító (UUID) URN Névterület. RFC 4122. https://tools.ietf.org/html/rfc4122
- Nemzetközi Szabványügyi Szervezet. (2005). Információs technológia – Nyílt Rendszerek Összekapcsolása – Az OSI Regisztrációs Hatóságok működési eljárásai: Globálisan Egyedi Azonosítók (UUID-k) generálása és regisztrálása, valamint azok használata ASN.1 Objektum Azonosító összetevőkként. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Globálisan egyedi azonosító. (2023). A Wikipédiában. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. (2023). A Wikipédiában. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. (n.d.). GitHub. https://github.com/ulid/spec