UUID
UUID (Universally Unique Identifier, suom. universaalisti yksilöivä tunniste) on yleiseen käyttöön suunniteltu tunnistemuoto, jota noudattavien tunnisteiden perusteella jokaisen olion tietojärjestelmässä voi yksilöidä. UUID:t tunnetaan myös nimellä GUID (Globally Unique Identifier), jota käytetään etenkin Microsoftin järjestelmistä puhuttaessa.
UUID-tunnisteet ovat 128-bittisiä. Yleisin tekstiesitysmuoto on 32 heksadesimaalinumerona, jotka ryhmitetään yhdysviivoilla. Ryhmityksessä ensimmäinen ryhmä on kahdeksan merkkiä pitkä, seuraavat kolme neljä merkkiä pitkiä, ja viides viimeinen ryhmä kaksitoista merkkiä pitkä. Esimerkiksi tietty UUID tekstimuodossa on ca759773-5714-4bc1-a293-58064ecff9c4. GUID:t esitetään muuten samoin, mutta yleensä aaltosulkeissa (esimerkiksi {21EC2020-3AEA-4069-A2DD-08002B30309D}).
UUID:t kehitettiin alun perin 1980-luvulla Apollo Computerin Network Computing System (NCS) -hajautettua tietojärjestelmää varten. Myöhemmin Open Software Foundation otti ne käyttöön omassa Distributed Computing Environment (DCE) -järjestelmässään.[1]
Muunnelmat
[muokkaa | muokkaa wikitekstiä]Nykyään UUID on standardoitu RFC 9562 -dokumentissa (aiemmin RFC 4122). Standardi-UUID:eissa on aina kaksi kenttää, versio (version) ja muunnelma (variant).
Muunnelmabitit sijaitsevat kahdeksannen tavun yläbiteissä ja ovat yhdestä kolmeen bittiä pitkiä.
| Muunnelma | Bitit | Kuvaus |
|---|---|---|
| 0 | 0 | Apollo Computerin NCS-järjestelmän alkuperäiset UUID:t |
| 1 | 10 | Standardi-UUID:t |
| 2 | 110 | Varattu Microsoftin yhteensopivuuskäyttöön |
| 3 | 111 | Varattu |
Standardi-UUID:eiden versiokenttä sijaitsee kuudennen tavun neljässä yläbitissä,[3] mistä sen tunnistaa helposti tekstimuodon kolmannen ryhmän ensimmäisenä merkkinä. Bitit esittävät lukua väliltä 0–15.
| Versio | Kuvaus |
|---|---|
| 0 | Ei käytetä |
| 1 | Aikaleimapohjainen UUID |
| 2 | Varattu DCE:n käyttöä varten |
| 3 | MD5-pohjainen UUID |
| 4 | Satunnaisesti generoitu UUID |
| 5 | SHA-1-pohjainen UUID |
| 6 | Aikaleimapohjainen UUID |
| 7 | Unix-aikaleimapohjainen UUID |
| 8 | Järjestelmäkohtainen UUID |
| 9–15 | Varattu |
Muiden bittien sisältö riippuu muunnelmasta ja versiosta.
Näistä versioista vain versioita 4, 5, 7 ja 8 suositetaan käytettäväksi uusissa järjestelmissä. Versioiden 1 ja 6 sijasta suositetaan versiota 7[5] ja version 3 sijasta versiota 5.[6] Versio 2 ei ole yleisessä käytössä.
Versiot 1 (UUIDv1) ja 6 (UUIDv6)
[muokkaa | muokkaa wikitekstiä]Versiossa 1 on useampi kenttä:
| Nimi | Koko | Kuvaus |
|---|---|---|
time_low | 32 bittiä | 60-bittisen aikaleiman 32 alinta bittiä |
time_mid | 16 bittiä | 60-bittisen aikaleiman bitit 47-32 |
ver | 4 bittiä | Versiokenttä, arvo = 1 |
time_high | 12 bittiä | 60-bittisen aikaleiman 12 ylintä bittiä |
var | 2 bittiä | Muunnelmakenttä, bitit 10 |
clock_seq | 14 bittiä | Kellosarja |
node | 48 bittiä | Laitekohtainen tunnus |
Aikaleima määritellään 100 nanosekunnin yksikköinä nollakohdasta, joka on gregoriaanisen kalenterin käyttöönottoajankohta, keskiyö 15. lokakuuta 1582 (UTC). Kellosarja on satunnaisluvuksi (tai vähintään laitekohtaisesta tunnuksesta riippumattomaksi luvuksi) alustettu arvo, joka alustetaan uudelleen laitekohtaisen tunnuksen muuttuessa. Jos laitteen kello siirtyy taaksepäin tai on saattanut siirtyä taaksepäin, kellosarjaa kuuluu kasvattaa yhdellä.[7]
Laitekohtainen tunnus on alun perin ollut laitteen MAC-osoite, mutta nykyään suositellaan luotavaksi satunnaisesti.[8]
Versio 6 on sama kuin versio 1, paitsi että aikaleimabittien järjestys on eri: versiossa 1 aikaleimabittien vähiten merkitsevä bitti on ensin, kun taas versiossa 6 aikaleimabittien eniten merkitsevä bitti on ensin. RFC 9562 suosittaa version 7 UUID:eiden käyttöä versioiden 1 ja 6 sijasta uusissa järjestelmissä.[5]
Versiot 3 (UUIDv3) ja 5 (UUIDv5)
[muokkaa | muokkaa wikitekstiä]Versiot 3 ja 5 ovat hyvin samanlaisia. Molemmissa luodaan tiiviste nimiavaruus-UUID:sta ja vapaavalintaisesta tavujonosta (nimiavaruuskohtaisesti voidaan määritellä tavujonoissa käytettävä sisältö). Versiossa 3 käytetään MD5-tiivistettä, jonka bitteihin sijoitetaan UUID:n vaatimat versio- ja muunnelmakentät. Sen sijasta suositetaan käytettävän versiota 5,[6] jossa käytetään uudempaa SHA-1-tiivistettä. SHA-1-tiiviste on 160-bittinen, joiden ylimmästä 128 bitistä UUID muodostetaan.[9] Tiivistepohjaiset UUID:t voidaan luoda toistetusti, toisin kuin esimerkiksi satunnaisesti generoidut (versio 4).
Versio 4 (UUIDv4)
[muokkaa | muokkaa wikitekstiä]Version 4 UUID:eissa kaikki bitit muunnelma- ja versiokenttiä lukuun ottamatta generoidaan satunnaisesti. Satunnaisesti generoituja bittejä on yhteensä 122 bittiä.[10] RFC 9562 kehottaa, että jos bitit luodaan näennäissatunnaislukugeneraattorilla, käytettävä generaattori on suunniteltu kryptografiseen käyttöön.[11]
Versio 7 (UUIDv7)
[muokkaa | muokkaa wikitekstiä]Version 7 UUID:eissa ylimmät 48 bittiä esittävät Unix-aikaleimaa millisekunteina. Aikaleiman jälkeen voi olla kaksi valinnaista lisäkenttää, aikaleiman tarkennuskenttä (aikaleiman esittämiseksi tarkemmin kuin millisekunnin tarkkuudella) ja alustettu laskuri. Loput biteistä luodaan satunnaisesti version 4 tavoin.[12]
Versio 8 (UUIDv8)
[muokkaa | muokkaa wikitekstiä]Versiolle 8 ei ole määritelty erikseen muotoa, vaan jokainen järjestelmä saa määritellä versio- ja muunnelmakenttiä lukuun ottamatta sisällön itse. UUIDv8:ita käyttävä järjestelmä joutuu itse määrittelemään, kuinka yksiselitteisyys toteutetaan. Näiden UUID:eiden ei saa siten yleisesti ottaen olettaa olevan yksiselitteisiä.[13]
Erikois-UUID:t
[muokkaa | muokkaa wikitekstiä]Täysin nolla UUID (engl. nil UUID) 00000000-0000-0000-0000-000000000000 esittää varsinaisen UUID:n puutetta.[14] Maksimi-UUID:ta (engl. max UUID) FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF voi käyttää esimerkiksi esittämään luettelon loppua.[15]
Käyttötarkoituksia
[muokkaa | muokkaa wikitekstiä]- GUID:eita käytetään GUID Partition Table (GPT)-osiotauluissa, jossa jokaisella osiolla on oma GUID.
- UUID:t ovat yleinen pääavaintyyppi tietokantatauluissa. Monissa tietokantaohjelmissa (kuten MySQL:ssä,[16] MariaDB:ssä[17] ja PostgreSQL:ssä[18]) ja ohjelmointikielissä (kuten Javassa[19] ja Pythonissa[20]) on suora tuki UUID:eille.
- Microsoft Windows käyttää GUID:eita COM-objektien tunnistamiseen. Jokaisella käyttöjärjestelmässä olevalla objektilla on oma ainutkertainen numero, jotka tallennetaan rekisteriin.
- Microsoft Office -dokumenteilla ja ASF-tiedostoilla on ainutkertaiset GUIDit.
- Atom-syötteissä jokaisella viitattavalla dokumentilla on oma UUID.
- UUID:eista voidaan muodostaa myös URN etuliitteellä
urn:uuid:, esimerkiksi urn:uuid:ca759773-5714-4bc1-a293-58064ecff9c4.
Esimerkit
[muokkaa | muokkaa wikitekstiä]| UUID | Kuvaus |
|---|---|
| e2c1722e-b263-4979-8696-b909efa2f1b0 | Versio 4, satunnaisesti generoitu |
| 4b3c3593-9afe-5295-b649-7139e54e73ee | Versio 5, nimiavaruus-UUID on e2c1722e-b263-4979-8696-b909efa2f1b0 ja sen perään liitetty tavujono on teksti https://fi.wikipedia.org/wiki/UUID |
| 019c4941-a476-701e-8153-704698c5988a | Versio 7, generoitu Unix-aikaleimalla 1770755564.662 |
Katso myös
[muokkaa | muokkaa wikitekstiä]- DOI (Digital Object Identifier)
- URI (Uniform Resource Identifier)
- ISBN (International Standard Book Number)
- OID
Lähteet
[muokkaa | muokkaa wikitekstiä]- RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
- RFC 9562: Universally Unique IDentifiers (UUIDs)
Viitteet
[muokkaa | muokkaa wikitekstiä]- ↑ Zahn, Lisa; Dineen, Terence; Leach, Paul; Martin, Elizabeth; Mishkin, Nathaniel; Pato, Joseph; Wyant, Geoffrey: Network Computing Architecture, s. 10. Prentice Hall, 1990. ISBN 978-0-13-611674-5 Teoksen verkkoversio. (englanniksi)
- ↑ RFC 4122, s. 6
- ↑ RFC 9562 § 4.2
- ↑ RFC 9562 § 4.2
- ↑ a b RFC 9562 § 5.6
- ↑ a b RFC 9562 § 5.3
- ↑ a b RFC 9562 § 5.1
- ↑ RFC 9562 § 6.10, 8
- ↑ RFC 9562 § 5.5
- ↑ RFC 9562 § 5.4
- ↑ RFC 9562 § 6.9
- ↑ RFC 9562 § 5.7
- ↑ RFC 9562 § 5.8
- ↑ RFC 9562 § 5.9
- ↑ RFC 9562 § 5.10
- ↑ Functions and Operators / Miscellaneous Functions MySQL 8.4 Reference Manual. ”UUID() ... Return a Universal Unique Identifier (UUID)” Viitattu 10.2.2026. (englanniksi)
- ↑ SQL Functions: Secondary Functions: Miscellaneous Functions: UUID MariaDB Server Reference. Viitattu 10.2.2026. (englanniksi)
- ↑ 8.12. UUID Type PostgreSQL 18 Documentation. Viitattu 10.2.2026. (englanniksi)
- ↑ Class UUID Java Platform SE 8. Viitattu 10.2.2026. (englanniksi)
- ↑ uuid — UUID objects according to RFC 9562 The Python Standard Library. Viitattu 10.2.2026. (englanniksi)