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#edit
Nykyään UUID on standardoitu dokumentissa RFC 9562 (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)#edit
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)#edit
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)#edit
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)#edit
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)#edit
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#edit
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#edit
- 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#edit
| 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#edit
Lähteet#edit
Viitteet#edit
- 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
- RFC 9562 § 5.6
- RFC 9562 § 5.3
- 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)
References#
- ^ 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)
This article is mirrored from “UUID” on Suomi Wikipedia, revision 23940348, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.
Synced with Wikipedia revision 23940348 · just now