UUID-generator

Generera UUID/GUID

UUID (Universally Unique Identifier), Àven kÀnd som Globally Unique Identifier (GUID), har anvÀnts flitigt i datorsystem.

Det Ă€r en 128-bitars kod som genereras av systemet baserat pĂ„ variabler och konstanter: aktuell tid, MAC-adress, SHA-1-hash, MD5-namnutrymme. Slutresultatet av att generera ett UUID, som visas som en 32-teckens alfanumerisk kod separerad med bindestreck, kan verka godtyckligt, men i sjĂ€lva verket Ă€r det resultatet av komplexa berĂ€kningar. En dator ”uppfinner” alltsĂ„ inte en kod, utan formar den frĂ„n specifika tekniska storheter som Ă€r relevanta vid en given tidpunkt.

Sannolikheten att samma UUID kommer att genereras pÄ tvÄ olika datorer vid olika tidpunkter tenderar att vara noll, vilket gör det möjligt att anvÀnda de resulterande koderna för punkt-/lokal dataidentifiering utan referens till koordinationscentret. Idag finns UUID/GUID allestÀdes nÀrvarande i bÄde online- och offlinenÀtverk och fungerar effektivt inte bara i det globala internetutrymmet utan Àven i fristÄende datorsystem.

UUID-historik

128-bitars UUID-koder anvÀndes först av det amerikanska företaget Apollo Computer pÄ 1980-talet. De var baserade pÄ de enklare 64-bitarskoder som anvÀndes i Domain/OS och fann utbredd anvÀndning i Open Software Foundations datormiljö.

Med tillkomsten av de första Windows-plattformarna generaliserades och standardiserades den globalt unika identifieraren. Microsoft antog DCE-designen frÄn Apollo Computer och registrerade URN-namnomrÄdet i RFC 4122. 2005 föreslogs den senare som en ny standard av IETF, och UUID standardiserades inom ITU.

Tidigare 2002 identifierades systemprestandaproblem nĂ€r UUID anvĂ€ndes som primĂ€rnycklar i lokala databaser. Dessa fixades i version 4 genom att lĂ€gga till ett icke-slumpmĂ€ssigt suffix baserat pĂ„ datorns systemtid. Den sĂ„ kallade COMB-metoden (Combined GUID Time Identifier) ​​ökade riskerna för kodduplicering, men förbĂ€ttrade samtidigt prestandan avsevĂ€rt nĂ€r man arbetade med Microsoft SQL Server.

Med utvecklingen av IT-teknik har den universella unika identifieraren upphört att vara ett mycket specialiserat tekniskt verktyg, och idag kan alla anvÀnda den. Sannolikheten för upprepning av de genererade koderna Àr inte lika med noll, men tenderar till det, och all digital information kan identifieras av dem, varefter de kan kombineras till enstaka datamatriser med minimal risk för upprepning.

UUID-fördelar

Generatorer av globala unika koder krÀver inte centraliserad dataavstÀmning/synkronisering och Àr fritt tillgÀngliga för alla anvÀndare. De frÀmsta fördelarna med UUID inkluderar:

  • Minimala risker för "kollision" (upprepning) av koder. Trots deras massiva anvĂ€ndning tenderar sannolikheten för upprepning att vara noll.
  • Möjlighet att sammanfoga olika datamatriser med hjĂ€lp av UUID:er som primĂ€ra (unika) nycklar.
  • Förenklad distribution av data över flera spridda servrar.
  • Möjlighet att generera koder offline.

Unika identifikationskoder, skrivna i formatet xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, tillÄter spridda system att kÀnna igen information utan koordination frÄn ett enda datacenter: med en nÀstan noll sannolikhet för fel/upprepningar. Denna funktion, tillsammans med anvÀndarvÀnlighet och smÄ krav pÄ datorprestanda, gör UUID efterfrÄgad och oumbÀrlig i en mÀngd olika IT-branscher och autonoma datorsystem.

Universellt unik identifierare

UUID kan generera koder med olika algoritmer och variabler/konstanta vÀrden.

Det finns totalt 5 versioner av identifieraren, som anvÀnder systemets datum/tid och MAC-adresser, DCE-sÀkerhetsprotokoll, MD5-hash, SHA-1-hash och namnutrymme nÀr de genereras.

I alla fall visas det slutliga resultatet i formatet xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (en siffra i hexadecimal notation, som bestÄr av latinska gemener och siffror, och delas med bindestreck i fem block: 8-4 -4-4- 12), M stÄr för version, N stÄr för UUID-variant.

DÀrför anvÀnder systemet 36 tecken Ät gÄngen (26 bokstÀver och 10 siffror), sÄ sannolikheten att upprepa 32-siffriga koder tenderar till noll, trots att de genereras dagligen av miljontals anvÀndare runt om i vÀrlden.

UUID-versioner

Version 1

Den första versionen av den unika identifieraren, nÀr koden genereras, Àr baserad pÄ datorns MAC-adress och dess systemtid, som Àndrar dess numeriska vÀrde 1 gÄng per sekund. Genereringsprocessen bestÄr av fem steg:

  • De lĂ€gre 32 bitarna med information tas frĂ„n UTC-taggen. De konverteras till 8 hexadecimala tecken och tar upp 4 byte.
  • I genomsnitt 16 bitar information tas frĂ„n samma UTC-etikett och omvandlas till 4 hexadecimala tecken som upptar 2 byte.
  • De övre 12 bitarna med information frĂ„n UTC-taggen tas och konverteras till ytterligare fyra hexadecimala tecken.
  • Ytterligare 1-3 bitar faller pĂ„ klocksekvensen och minskar riskerna för kollisioner genom att införa en viss grad av slumpmĂ€ssighet/osĂ€kerhet. Systemtiden bromsas antingen villkorligt ned eller sĂ€tts tillbaka - sĂ„ att tvĂ„ eller flera identifierare som arbetar pĂ„ samma dator samtidigt inte "korsar".
  • De Ă„terstĂ„ende 6 byten Ă€r ett konstant vĂ€rde som genereras baserat pĂ„ enhetens MAC-adress. Den bestĂ„r av 12 hexadecimala tecken och Ă€r 48 bitar stor.

Eftersom algoritmen för den första versionen av UUID Àr oupplösligt kopplad till systemtiden, Àr anvÀndningen av klocksekvensen obligatorisk. Annars ökar riskerna med att generera samma koder mÄnga gÄnger om - under den andra nÀr systemtiden "fryser" vid ett eller annat vÀrde.

Version 2

Den andra versionen skiljer sig minimalt frÄn den första och anvÀnds sÀllan i praktiken. IstÀllet för en klocksekvens anvÀnder den en systemidentifierare kopplad till anvÀndardata eller andra unika vÀrden som inte upprepas pÄ andra datorer eller som upprepas mycket sÀllan. Effekten av slumpmÀssighet i den andra versionen minimeras, och den kan anvÀndas för att förbÀttra sÀkerheten i en distribuerad datormiljö.

Version 3 och 5

De har mycket gemensamt: de anvÀnder unika namn och namn (frÄn MD5-utrymmet) för att skapa koder, det vill sÀga icke-slumpmÀssiga vÀrden. Endast version 3 anvÀnder en standard-hash, medan version 5 anvÀnder en SHA-1-hash. SÄdana identifierare Àr mindre beroende av slumpvariabler.

Version 4

Genereringen av denna UUID-version Àr mer Àn 90 % slumpmÀssig. Den har 6 bitar för konstanta vÀrden och 122 för godtyckliga. Implementeringen av algoritmen Àr att 128 bitar information först genereras slumpmÀssigt, och 6 av dem ersÀtts av versions- och variantdata.

Pseudo-slumptalsgeneratorns roll i den fjÀrde versionen Àr den maximala, och om den har en för enkel algoritm ökar riskerna för upprepningar/kollisioner avsevÀrt. Trots detta Àr det den fjÀrde versionen som Àr den absolut vanligaste och ofta anvÀnds i praktiken.

UUID-alternativ

Det unika UUID har förfinats flera gÄnger i takt med att datortekniken har utvecklats, och idag presenteras det i flera versioner.

Alternativ 0

Utformad för att fungera med Àldre Apollo Network Computing System 1.5 1988-formatdatabaser. Det hÀr alternativet Àr bakÄtkompatibelt med dem och kommer inte i konflikt med NCS historiska UUID.

Alternativ 1 och 2

AnvÀnds för att identifiera moderna datablock och arrayer, och i kanonisk textform skiljer de sig inte frÄn varandra, förutom ordningen för att skriva variantbitarna. SÄ alternativ 1 anvÀnder big-endian byte-ordning, och alternativ 2 anvÀnder title-endian. Den första Àr den huvudsakliga, och den andra Àr reserverad för att arbeta med tidiga GUID:er frÄn Microsoft Windows.

Alternativ 3

AnvÀnds inte för nÀrvarande. Det Àr en reserverad version för framtida bruk - nÀr möjligheterna med de tidigare alternativen Àr uttömda.

De flesta system kodar identifieraren i big-endian, men det finns undantag. Till exempel anvÀnder marshaling i Microsoft COM/OLE-biblioteken mixed-endian medan kod genereras frÄn title-endian- och big-endian-blocken. Den första Àr de tre första komponenterna i UUID och den andra Àr de tvÄ sista.