UUID generaator
Genereeritud UUID
UUID Generaator
Sissejuhatus
Universaalselt unikaalne identifikaator (UUID) on 128-bitine number, mida kasutatakse teabe tuvastamiseks arvutisüsteemides. UUID-d on standardiseeritud Avatud Tarkvarafondi (OSF) poolt ja need on osa Jaotatud Arvutuskeskkonnast (DCE). Need identifikaatorid on loodud olema unikaalsed nii ruumis kui ka ajas, mistõttu sobivad need ideaalselt erinevateks rakendusteks jaotatud süsteemides ja mujal.
See UUID generaatori tööriist võimaldab luua nii versiooni 1 (ajaga seotud) kui ka versiooni 4 (juhuslik) UUID-sid. Need identifikaatorid on kasulikud erinevates olukordades, kus on vajalik unikaalne tuvastamine, näiteks andmebaasi võtmed, jaotatud süsteemid ja võrgu protokollid.
Kuidas UUID-d toimivad
UUID Struktuur
UUID-d esitatakse tavaliselt 32 heksadigitaalsena, mis on jagatud viieks rühmaks, mis on eraldatud sidekriipsudega, kujul 8-4-4-4-12, kokku 36 tähemärki (32 alfanumeerilist tähemärki ja 4 sidekriipsu). Näiteks:
550e8400-e29b-41d4-a716-446655440000
UUID 128 bitti jagatakse konkreetseteks väljadeks, millest igaühel on erinev teave sõltuvalt UUID versioonist:
- 32 bitti time_low väljal
- 16 bitti time_mid väljal
- 16 bitti time_hi_and_version väljal
- 8 bitti clock_seq_hi_and_reserved väljal
- 8 bitti clock_seq_low väljal
- 48 bitti node väljal
Siin on diagramm, mis illustreerib UUID struktuuri:
UUID Versioonid
UUID-sid on mitu versiooni, igaühel oma genereerimismeetod:
- Versioon 1 (ajaga seotud): Kasutab praegust ajatemplit ja arvuti MAC-aadressi.
- Versioon 2 (DCE turvalisus): Sarnane versioonile 1, kuid sisaldab kohaliku domeeni identifikaatorit.
- Versioon 3 (nimepõhine, MD5): Genereeritud, hashides nime ruumi identifikaatorit ja nime.
- Versioon 4 (juhuslik): Genereeritud, kasutades juhuslikku või pseudo-juhuslikku numbrit.
- Versioon 5 (nimepõhine, SHA-1): Sarnane versioonile 3, kuid kasutab SHA-1 hashimist.
See tööriist keskendub versiooni 1 ja versiooni 4 UUID-de genereerimisele.
Valem
Versioon 1 UUID Generatsioon
Versioon 1 UUID-d genereeritakse järgmiste komponentide abil:
- Aeg: 60-bitine väärtus, mis esindab 100-nanosekundiliste intervallide arvu alates 15. oktoobrist 1582 (Gregoriuse kalendri reformi kuupäev).
- Kellasekundi järjestus: 14-bitine väärtus, mida kasutatakse duplikaatide vältimiseks, kui kell on tagasi seatud.
- Node: 48-bitine väärtus, mis on tavaliselt tuletatud arvuti MAC-aadressist.
Versioon 1 UUID genereerimise valemit saab väljendada järgmiselt:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
Versioon 4 UUID Generatsioon
Versioon 4 UUID-d genereeritakse, kasutades krüptograafiliselt tugevat juhuslikku numbri generaatorit. Valem on lihtsalt:
UUID = juhuslik_128_bitine_number
Kus spetsiifilised bitid on seatud versiooni (4) ja variandi näitamiseks.
Kasutusalad
UUID-del on palju rakendusi arvutiteaduse ja tarkvarainsenerite erinevates valdkondades:
-
Andmebaasi võtmed: UUID-sid kasutatakse sageli peamistena andmebaasides, eriti jaotatud süsteemides, kus mitu sõlme võivad samal ajal andmeid genereerida.
-
Jaotatud süsteemid: Suurtes jaotatud süsteemides aitavad UUID-d unikaalselt tuvastada ressursse, tehinguid või sündmusi mitme sõlme või andmekeskuse vahel.
-
Sisu aadressimine: UUID-sid saab kasutada ainulaadsete identifikaatorite loomiseks sisu jaoks sisu aadressitavates salvestussüsteemides.
-
Seansi haldamine: Veebirakendused kasutavad sageli UUID-sid kasutaja seansside haldamiseks, tagades, et igal seansil on ainulaadne identifikaator.
-
IoT seadmete tuvastamine: Asjade Interneti (IoT) rakendustes saab UUID-sid kasutada individuaalsete seadmete unikaalseks tuvastamiseks võrgus.
Alternatiivid
Kuigi UUID-sid kasutatakse laialdaselt, on olemas alternatiivsed lähenemisviisid unikaalsete identifikaatorite genereerimiseks:
-
Automaatne suurenevad ID-d: Lihtne ja sageli kasutatav ühes andmebaasis, kuid ei sobi jaotatud keskkondades.
-
Aja põhised ID-d: Võivad olla kasulikud ajaliselt järjestatud andmete jaoks, kuid võivad kokku puutuda kokkulangevuste probleemidega kõrge konkurentsi olukordades.
-
Snowflake ID-d: Twitteri poolt välja töötatud, need ID-d kombineerivad ajatempli ja töötaja numbri, et genereerida unikaalseid ID-sid jaotatud süsteemides.
-
ULID (Universaalselt unikaalne leksikograafiliselt sorteeritav identifikaator): Viimase aja alternatiiv, mille eesmärk on olla inimeste jaoks sõbralikum ja sorteeritavam kui UUID-d.
Ajalugu
UUID-de kontseptsioon tutvustati esmakordselt Apollo võrgu arvutussüsteemis ja hiljem standardiseeriti Avatud Tarkvarafondi (OSF) poolt osana jaotatud arvutuskeskkonnast (DCE) 1990ndatel. Esimene spetsifikatsioon avaldati 1997. aastal ISO/IEC 11578:1996 ja hiljem 2005. aastal ISO/IEC 9834-8:2005 osana.
Olulised verstapostid UUID ajaloo jooksul:
- 1980ndad: Apollo Computer arendab UUID kontseptsiooni oma võrgu arvutussüsteemi jaoks.
- 1997: Esimene UUID spetsifikatsioon avaldatakse kui ISO/IEC 11578:1996.
- 2005: UUID spetsifikatsioon muudetakse ja avaldatakse ISO/IEC 9834-8:2005 osana.
- 2009: RFC 4122 määratleb UUID formaadi ja genereerimise algoritmid, mida kasutatakse tänapäeval.
Aja jooksul on UUID-d muutunud hädavajalikuks tööriistaks jaotatud süsteemides ja andmebaasi kujunduses, erinevate rakenduste ja kohandustega erinevates programmeerimiskeeltes ja platvormidel.
Koodinäited
Siin on näited UUID-de genereerimisest erinevates programmeerimiskeeltes:
import uuid
## Genereeri versioon 4 (juhuslik) UUID
random_uuid = uuid.uuid4()
print(f"Versioon 4 UUID: {random_uuid}")
## Genereeri versioon 1 (ajaga seotud) UUID
time_based_uuid = uuid.uuid1()
print(f"Versioon 1 UUID: {time_based_uuid}")
Viidatud allikad
- Leach, P., Mealling, M., & Salz, R. (2005). Universaalselt unikaalne IDentifikaator (UUID) URN nimiruum. RFC 4122. https://tools.ietf.org/html/rfc4122
- Rahvusvaheline Standardiorganisatsioon. (2005). Teabe tehnoloogia – Avatud süsteemide ühendamine – OSI registreerimise ametite toimimise protseduurid: Universaalselt unikaalsete identifikaatorite (UUID-de) genereerimine ja registreerimine ning nende kasutamine ASN.1 objekti identifikaatori komponentidena. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Universaalselt unikaalne identifikaator. (2023). Vikipeedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. (2023). Vikipeedia. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spetsifikatsioon. (n.d.). GitHub. https://github.com/ulid/spec