UUID-generaattori: Luo ainutlaatuisia tunnisteita helposti

Luo universaalisti ainutlaatuisia tunnisteita (UUID) erilaisiin sovelluksiin. Luo sekä version 1 (aikaperusteisia) että version 4 (satunnaisia) UUID:ita käytettäväksi hajautetuissa järjestelmissä, tietokannoissa ja muissa.

UUID-generaattori

Luotu UUID

UUID-rakenne
Aika alhainen
📚

Dokumentaatio

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:

1550e8400-e29b-41d4-a716-446655440000
2

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:

A B C D E F A: time_low (32 bittiä) B: time_mid (16 bittiä) C: time_hi_and_version (16 bittiä) D: clock_seq_hi_and_reserved (8 bittiä) E: clock_seq_low (8 bittiä) F: node (48 bittiä)

UUID-versiot

UUID:lla on useita versioita, joilla on omat generointimenetelmänsä:

  1. Versio 1 (aikaperusteinen): Käyttää nykyistä aikaleimaa ja tietokoneen MAC-osoitetta.
  2. Versio 2 (DCE-turvallisuus): Samankaltainen kuin versio 1, mutta sisältää paikallisen alueen tunnisteen.
  3. Versio 3 (nimeen perustuva, MD5): Generoituu hashamalla nimiavaruuden tunniste ja nimi.
  4. Versio 4 (satunnainen): Generoituu satunnaisella tai pseudisatunnaisella numerolla.
  5. 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:

  1. 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ä).
  2. Kellosekvenssi: 14-bittinen arvo, jota käytetään estämään kaksoiskappaleet, jos kelloa siirretään taaksepäin.
  3. Solmu: 48-bittinen arvo, joka yleensä johdetaan tietokoneen MAC-osoitteesta.

Version 1 UUID:n generointikaava voidaan ilmaista seuraavasti:

1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2

Version 4 UUID:n generointi

Version 4 UUID:t generoidaan käyttäen kryptografisesti vahvaa satunnaislukugeneraattoria. Kaava on yksinkertaisesti:

1UUID = random_128_bit_number
2

Tietyt bitit asetetaan osoittamaan versiota (4) ja varianttia.

Käyttötapaukset

UUID:lla on lukuisia sovelluksia eri tietojenkäsittelytieteen ja ohjelmistosuunnittelun aloilla:

  1. Tietokannan avaimet: UUID:ita käytetään usein ensisijaisina avaimina tietokannoissa, erityisesti hajautetuissa järjestelmissä, joissa useat solmut voivat luoda tietueita samanaikaisesti.

  2. Hajautetut järjestelmät: Suurissa hajautetuissa järjestelmissä UUID:t auttavat yksilöimään resursseja, tapahtumia tai tapahtumia useiden solmujen tai datakeskusten välillä.

  3. Sisältöosoitus: UUID:ita voidaan käyttää luomaan ainutlaatuisia tunnisteita sisällölle sisältöosoitteellisissa tallennusjärjestelmissä.

  4. Istunnon hallinta: Verkkosovellukset käyttävät usein UUID:ita käyttäjäistuntojen hallintaan varmistaen, että jokaisella istunnolla on ainutlaatuinen tunniste.

  5. 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:

  1. Automaattisesti kasvavat ID:t: Yksinkertaisia ja yleisesti käytettyjä yksittäisissä tietokantajärjestelmissä, mutta eivät sovellu hajautettuihin ympäristöihin.

  2. Aikaperusteiset ID:t: Voivat olla hyödyllisiä aikajärjestyksessä oleville tiedoille, mutta voivat kohdata törmäysongelmia korkean samanaikaisuuden skenaarioissa.

  3. 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ä.

  4. 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ä:

1import uuid
2
3## Generoi Version 4 (satunnainen) UUID
4random_uuid = uuid.uuid4()
5print(f"Version 4 UUID: {random_uuid}")
6
7## Generoi Version 1 (aikaperusteinen) UUID
8time_based_uuid = uuid.uuid1()
9print(f"Version 1 UUID: {time_based_uuid}")
10

Viitteet

  1. Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
  2. 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
  3. Yleisesti ainutkertainen tunniste. (2023). Wikipediassa. https://en.wikipedia.org/wiki/Universally_unique_identifier
  4. Lumihiutale-ID. (2023). Wikipediassa. https://en.wikipedia.org/wiki/Snowflake_ID
  5. ULID-spesifikaatio. (n.d.). GitHub. https://github.com/ulid/spec