UUID ģenerators
Ģenerētais UUID
UUID ģenerators
Ievads
Universāli unikāls identifikators (UUID) ir 128 bitu skaitlis, ko izmanto informācijas identificēšanai datoru sistēmās. UUID ir standartizēti Open Software Foundation (OSF) kā daļa no Distribuētās datoru vides (DCE). Šie identifikatori ir izstrādāti, lai būtu unikāli gan telpā, gan laikā, padarot tos ideāli piemērotus dažādām lietojumprogrammām distribūcijas sistēmās un citur.
Šis UUID ģeneratora rīks ļauj jums izveidot gan 1. versijas (laika bāzētus), gan 4. versijas (nejaušus) UUID. Šie identifikatori ir noderīgi dažādās situācijās, kur nepieciešama unikāla identifikācija, piemēram, datu bāzes atslēgās, distribūcijas sistēmās un tīkla protokolos.
Kā darbojas UUID
UUID struktūra
UUID parasti tiek attēlots kā 32 heksadecimārie cipari, kas attēloti piecās grupās, kas atdalītas ar defisēm, formā 8-4-4-4-12 kopā veidojot 36 rakstzīmes (32 alfanumeriskās rakstzīmes un 4 defises). Piemēram:
550e8400-e29b-41d4-a716-446655440000
UUID 128 biti ir sadalīti specifiskās laukos, katrs nesot dažādu informāciju atkarībā no UUID versijas:
- 32 biti time_low laukam
- 16 biti time_mid laukam
- 16 biti time_hi_and_version laukam
- 8 biti clock_seq_hi_and_reserved laukam
- 8 biti clock_seq_low laukam
- 48 biti node laukam
Šeit ir diagramma, kas ilustrē UUID struktūru:
UUID versijas
Ir vairākas UUID versijas, katrai ar savu ģenerēšanas metodi:
-
- versija (laika bāzēta): Izmanto pašreizējo laika zīmogu un datora MAC adresi.
-
- versija (DCE drošība): Līdzīga 1. versijai, bet iekļauj lokālā domēna identifikatoru.
-
- versija (nosaukuma bāzēta, MD5): Izveidota, hashējot nosaukuma telpas identifikatoru un nosaukumu.
-
- versija (nejauša): Izveidota, izmantojot nejaušu vai pseido-nejaušu skaitļu ģeneratoru.
-
- versija (nosaukuma bāzēta, SHA-1): Līdzīga 3. versijai, bet izmanto SHA-1 hashēšanu.
Šis rīks koncentrējas uz 1. un 4. versijas UUID ģenerēšanu.
Formula
1. versijas UUID ģenerēšana
-
versijas UUID tiek ģenerēti, izmantojot šādas sastāvdaļas:
-
Laika zīmogs: 60 bitu vērtība, kas attēlo 100 nanosekunžu intervālu skaitu kopš 1582. gada 15. oktobra (Gregorianas reformas datums kristīgajā kalendārā).
-
Pulksteņa secība: 14 bitu vērtība, kas tiek izmantota, lai izvairītos no dublēšanās gadījumā, ja pulkstenis tiek iestatīts atpakaļ.
-
Nodaļa: 48 bitu vērtība, parasti iegūta no datora MAC adreses.
-
versijas UUID ģenerēšanas formula var tikt izteikta kā:
UUID = (laika_zīmogs * 2^64) + (pulsa_secība * 2^48) + nodaļa
4. versijas UUID ģenerēšana
- versijas UUID tiek ģenerēti, izmantojot kriptogrāfiski spēcīgu nejaušu skaitļu ģeneratoru. Formula ir vienkārši:
UUID = nejaušs_128_bit_skaitlis
Ar specifiskiem bitiem, kas iestatīti, lai norādītu versiju (4) un variantu.
Lietošanas gadījumi
UUID ir daudz pielietojumu dažādās datorzinātņu un programmatūras inženierijas jomās:
-
Datu bāzes atslēgas: UUID bieži tiek izmantoti kā primārās atslēgas datu bāzēs, īpaši distribūcijas sistēmās, kur vairāki mezgli var vienlaikus ģenerēt ierakstus.
-
Distribūcijas sistēmas: Lielās distribūcijas sistēmās UUID palīdz unikāli identificēt resursus, darījumus vai notikumus vairākos mezglos vai datu centros.
-
Satura adresēšana: UUID var tikt izmantoti, lai izveidotu unikālus identifikatorus saturam satura adresējamo uzglabāšanas sistēmās.
-
Sesiju pārvaldība: Tīmekļa lietojumprogrammas bieži izmanto UUID, lai pārvaldītu lietotāju sesijas, nodrošinot, ka katrai sesijai ir unikāls identifikators.
-
IoT ierīču identificēšana: Interneta lietu (IoT) lietojumprogrammās UUID var tikt izmantoti, lai unikāli identificētu katru ierīci tīklā.
Alternatīvas
Lai gan UUID ir plaši izmantoti, ir alternatīvi pieejas unikālu identifikatoru ģenerēšanai:
-
Automātiski pieaugoši ID: Vienkārši un bieži izmantoti vienas datu bāzes sistēmās, bet nav piemēroti distribūcijas vidēm.
-
Laika bāzēti ID: Var būt noderīgi laika secībā kārtotu datu gadījumā, bet var saskarties ar dublēšanās problēmām augstas saskares situācijās.
-
Snoflaka ID: Izstrādāti Twitter, šie ID apvieno laika zīmogu un darba numuru, lai ģenerētu unikālus ID distribūcijas sistēmās.
-
ULID (Universāli unikāli leksikogrāfiski kārtoti identifikatori): Jaunāka alternatīva, kas cenšas būt draudzīgāka cilvēkiem un kārtotāka nekā UUID.
Vēsture
UUID koncepcija pirmo reizi tika ieviesta Apollo tīkla datoru sistēmā un vēlāk standartizēta Open Software Foundation (OSF) kā daļa no Distribuētās datoru vides (DCE) 1990. gados. Sākotnējā specifikācija tika publicēta 1997. gadā kā ISO/IEC 11578:1996 un vēlāk pārskatīta 2005. gadā kā daļa no ISO/IEC 9834-8:2005.
Galvenie notikumi UUID vēsturē:
-
- gadi: Apollo Computer izstrādā UUID koncepciju savām tīkla datoru sistēmām.
- 1997: Pirmais UUID specifikācija publicēta kā ISO/IEC 11578:1996.
- 2005: UUID specifikācija pārskatīta un publicēta kā daļa no ISO/IEC 9834-8:2005.
- 2009: RFC 4122 definē UUID formātu un ģenerēšanas algoritmus, ko izmanto šodien.
Laika gaitā UUID ir kļuvuši par būtisku rīku distribūcijas sistēmās un datu bāzu projektēšanā, ar dažādām ieviešanām un pielāgojumiem dažādās programmēšanas valodās un platformās.
Koda piemēri
Šeit ir piemēri UUID ģenerēšanai dažādās programmēšanas valodās:
import uuid
## Ģenerēt 4. versijas (nejaušu) UUID
nejaušs_uuid = uuid.uuid4()
print(f"4. versijas UUID: {nejaušs_uuid}")
## Ģenerēt 1. versijas (laika bāzētu) UUID
laika_bazets_uuid = uuid.uuid1()
print(f"1. versijas UUID: {laika_bazets_uuid}")
Atsauces
- Leach, P., Mealling, M., & Salz, R. (2005). Universāli unikāls identifikators (UUID) URN nosaukumu telpa. RFC 4122. https://tools.ietf.org/html/rfc4122
- Starptautiskā standartu organizācija. (2005). Informācijas tehnoloģija – Atvērtās sistēmas savienojums – Procedūras OSI reģistrācijas iestāžu darbībai: Universāli unikālo identifikatoru (UUID) ģenerēšana un reģistrācija un to izmantošana kā ASN.1 objektu identifikatoru komponentes. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Universāli unikāls identifikators. (2023). Vikipēdijā. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snoflaka ID. (2023). Vikipēdijā. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID specifikācija. (n.d.). GitHub. https://github.com/ulid/spec