UUID-generaattori
Luotu UUID
UUID-generaattori
Johdanto
Yleisesti ainutkertainen tunniste (UUID) on 128-bittinen numero, jota käytetään tietojen tunnistamiseen tietokonejärjestelmissä. UUID:t ovat standardoituja Open Software Foundationin (OSF) toimesta osana hajautettua laskentaympäristöä (DCE). Nämä tunnisteet on suunniteltu olemaan ainutlaatuisia sekä tilassa että ajassa, mikä tekee niistä ihanteellisia erilaisiin sovelluksiin hajautetuissa järjestelmissä ja muualla.
Tämä UUID-generaattorityökalu mahdollistaa sekä version 1 (aikaperusteinen) että version 4 (satunnainen) UUID:ien luomisen. Nämä tunnisteet ovat hyödyllisiä erilaisissa skenaarioissa, joissa tarvitaan ainutkertaista tunnistamista, kuten tietokantavälikkeissä, hajautetuissa järjestelmissä ja verkko-protokollissa.
Kuinka UUID:t toimivat
UUID-rakenne
UUID esitetään tyypillisesti 32 heksadesimaalisen numeron muodossa, joka on esitetty viidessä ryhmässä, jotka on erotettu viivoilla, muodossa 8-4-4-4-12, yhteensä 36 merkkiä (32 alfanumeerista merkkiä ja 4 viivaa). Esimerkiksi:
550e8400-e29b-41d4-a716-446655440000
UUID:n 128 bittiä on jaettu erityisiin kenttiin, joista jokaisessa on eri tietoa riippuen UUID:n versiosta:
- 32 bittiä time_low-kentälle
- 16 bittiä time_mid-kentälle
- 16 bittiä time_hi_and_version-kentälle
- 8 bittiä clock_seq_hi_and_reserved-kentälle
- 8 bittiä clock_seq_low-kentälle
- 48 bittiä node-kentälle
Tässä on kaavio, joka havainnollistaa UUID-rakennetta:
UUID-versiot
UUID:lla on useita versioita, joilla on omat generointimenetelmänsä:
- Versio 1 (aikaperusteinen): Käyttää nykyistä aikaleimaa ja tietokoneen MAC-osoitetta.
- Versio 2 (DCE-turvallisuus): Samankaltainen kuin versio 1, mutta sisältää paikallisen alueen tunnisteen.
- Versio 3 (nimeen perustuva, MD5): Generoituu hashamalla nimiavaruuden tunniste ja nimi.
- Versio 4 (satunnainen): Generoituu satunnaisella tai pseudisatunnaisella numerolla.
- Versio 5 (nimeen perustuva, SHA-1): Samankaltainen kuin versio 3, mutta käyttää SHA-1-hashia.
Tämä työkalu keskittyy version 1 ja version 4 UUID:ien luomiseen.
Kaava
Version 1 UUID:n generointi
Version 1 UUID:t generoidaan seuraavien komponenttien avulla:
- Aikaleima: 60-bittinen arvo, joka edustaa 100-nanosekunnin välein kulunutta aikaa lokakuun 15. päivämäärästä 1582 (Gregorian kalenterin uudistuksen päivämäärä).
- Kellosekvenssi: 14-bittinen arvo, jota käytetään estämään kaksoiskappaleet, jos kelloa siirretään taaksepäin.
- Solmu: 48-bittinen arvo, joka yleensä johdetaan tietokoneen MAC-osoitteesta.
Version 1 UUID:n generointikaava voidaan ilmaista seuraavasti:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
Version 4 UUID:n generointi
Version 4 UUID:t generoidaan käyttäen kryptografisesti vahvaa satunnaislukugeneraattoria. Kaava on yksinkertaisesti:
UUID = random_128_bit_number
Tietyt bitit asetetaan osoittamaan versiota (4) ja varianttia.
Käyttötapaukset
UUID:lla on lukuisia sovelluksia eri tietojenkäsittelytieteen ja ohjelmistosuunnittelun aloilla:
-
Tietokannan avaimet: UUID:ita käytetään usein ensisijaisina avaimina tietokannoissa, erityisesti hajautetuissa järjestelmissä, joissa useat solmut voivat luoda tietueita samanaikaisesti.
-
Hajautetut järjestelmät: Suurissa hajautetuissa järjestelmissä UUID:t auttavat yksilöimään resursseja, tapahtumia tai tapahtumia useiden solmujen tai datakeskusten välillä.
-
Sisältöosoitus: UUID:ita voidaan käyttää luomaan ainutlaatuisia tunnisteita sisällölle sisältöosoitteellisissa tallennusjärjestelmissä.
-
Istunnon hallinta: Verkkosovellukset käyttävät usein UUID:ita käyttäjäistuntojen hallintaan varmistaen, että jokaisella istunnolla on ainutlaatuinen tunniste.
-
IoT-laitteiden tunnistus: Esineiden internetin (IoT) sovelluksissa UUID:ita voidaan käyttää yksilöimään yksittäisiä laitteita verkossa.
Vaihtoehdot
Vaikka UUID:t ovat laajalti käytettyjä, on olemassa vaihtoehtoisia lähestymistapoja ainutkertaisten tunnisteiden luomiseen:
-
Automaattisesti kasvavat ID:t: Yksinkertaisia ja yleisesti käytettyjä yksittäisissä tietokantajärjestelmissä, mutta eivät sovellu hajautettuihin ympäristöihin.
-
Aikaperusteiset ID:t: Voivat olla hyödyllisiä aikajärjestyksessä oleville tiedoille, mutta voivat kohdata törmäysongelmia korkean samanaikaisuuden skenaarioissa.
-
Lumihiutale-ID:t: Twitterin kehittämä, nämä ID:t yhdistävät aikaleiman ja työntekijän numeron luodakseen ainutlaatuisia ID:t hajautetuissa järjestelmissä.
-
ULID (Yleisesti ainutkertainen leksikografisesti järjestettävä tunniste): Uudempi vaihtoehto, joka pyrkii olemaan ihmisystävällisempi ja järjestettävämpi kuin UUID:t.
Historia
UUID:iden käsite esiteltiin ensimmäisen kerran Apollo Network Computing Systemissä ja myöhemmin standardoitiin Open Software Foundationin (OSF) toimesta osana hajautettua laskentaympäristöä (DCE) 1990-luvulla. Ensimmäinen spesifikaatio julkaistiin vuonna 1997 ISO/IEC 11578:1996 -standardina ja myöhemmin tarkistettiin vuonna 2005 osana ISO/IEC 9834-8:2005.
Tärkeitä virstanpylväitä UUID-historiassa:
- 1980-luku: Apollo Computer kehittää UUID-käsitteen heidän verkkolaskentajärjestelmänsä käyttöön.
- 1997: Ensimmäinen UUID-spesifikaatio julkaistaan ISO/IEC 11578:1996 -standardina.
- 2005: UUID-spesifikaatio tarkistetaan ja julkaistaan osana ISO/IEC 9834-8:2005.
- 2009: RFC 4122 määrittelee UUID-muodon ja generointialgoritmit, joita käytetään tänään.
Ajan myötä UUID:ista on tullut olennainen työkalu hajautetuissa järjestelmissä ja tietokannansuunnittelussa, ja niitä on sovellettu ja mukautettu eri ohjelmointikielissä ja alustoilla.
Koodiesimerkit
Tässä on esimerkkejä UUID:iden generoimisesta eri ohjelmointikielillä:
import uuid
## Generoi Version 4 (satunnainen) UUID
random_uuid = uuid.uuid4()
print(f"Version 4 UUID: {random_uuid}")
## Generoi Version 1 (aikaperusteinen) UUID
time_based_uuid = uuid.uuid1()
print(f"Version 1 UUID: {time_based_uuid}")
Viitteet
- Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
- Kansainvälinen standardointijärjestö. (2005). Tietotekniikka – Avoimet järjestelmät – OSI-rekisteriviranomaisten toimintamenettelyt: Universaalisten ainutkertaisten tunnisteiden (UUID) generointi ja rekisteröinti sekä niiden käyttö ASN.1-objektitunnisteen komponenteina. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Yleisesti ainutkertainen tunniste. (2023). Wikipediassa. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Lumihiutale-ID. (2023). Wikipediassa. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID-spesifikaatio. (n.d.). GitHub. https://github.com/ulid/spec