UUID-generator

1111
Voeg toe aan de site Metainformatie

Andere hulpmiddelen

UUID/GUID genereren

UUID/GUID genereren

De Universally Unique Identifier (UUID), ook wel bekend als de Globally Unique Identifier (GUID), wordt veel gebruikt in computersystemen.

Het is een 128-bits code die door het systeem wordt gegenereerd op basis van variabelen en constanten: huidige tijd, MAC-adres, SHA-1 hash, MD5-naamruimte. Het eindresultaat van het genereren van een UUID, weergegeven als een alfanumerieke code van 32 tekens gescheiden door koppeltekens, lijkt willekeurig, maar is in feite het resultaat van complexe berekeningen. Een computer 'verzint' dus geen code, maar vormt deze uit specifieke technische grootheden die op een bepaald moment relevant zijn.

De waarschijnlijkheid dat dezelfde UUID op verschillende tijdstippen op twee verschillende computers wordt gegenereerd, neigt naar nul, wat het mogelijk maakt om de resulterende codes te gebruiken voor punt-/lokale gegevensidentificatie zonder verwijzing naar het coördinatiecentrum. Tegenwoordig is UUID/GUID alomtegenwoordig in zowel online als offline netwerken en werkt het niet alleen effectief op het wereldwijde internet, maar ook in stand-alone computersystemen.

UUID-geschiedenis

128-bits UUID-codes werden in de jaren tachtig voor het eerst gebruikt door het Amerikaanse bedrijf Apollo Computer. Ze waren gebaseerd op de eenvoudigere 64-bits codes die worden gebruikt in Domain/OS en werden veel gebruikt in de computeromgeving van de Open Software Foundation.

Met de komst van de eerste Windows-platforms werd de wereldwijd unieke identificatie gegeneraliseerd en gestandaardiseerd. Microsoft nam het DCE-ontwerp over van Apollo Computer en registreerde de URN-naamruimte in RFC 4122. In 2005 werd de laatste als nieuwe standaard voorgesteld door de IETF en werd UUID binnen de ITU gestandaardiseerd.

Eerder in 2002 werden systeemprestatieproblemen vastgesteld bij het gebruik van UUID's als primaire sleutels in lokale databases. Deze werden in versie 4 opgelost door een niet-willekeurig achtervoegsel toe te voegen op basis van de systeemtijd van de computer. De zogenaamde COMB (Combined GUID Time Identifier)-benadering verhoogde de risico's van codeduplicatie, maar verbeterde tegelijkertijd de prestaties aanzienlijk bij het werken met Microsoft SQL Server.

Met de ontwikkeling van IT-technologieën is de universele unieke identificatie niet langer een zeer gespecialiseerd technisch hulpmiddel, en tegenwoordig kan iedereen het gebruiken. De kans op herhaling van de gegenereerde codes is niet gelijk aan nul, maar neigt ernaar, en alle digitale informatie kan door hen worden geïdentificeerd, waarna ze kunnen worden gecombineerd tot enkele data-arrays met minimale kans op herhaling.

UUID-voordelen

Generatoren van wereldwijde unieke codes vereisen geen gecentraliseerde afstemming/synchronisatie van gegevens en zijn gratis beschikbaar voor alle gebruikers. De belangrijkste voordelen van UUID zijn:

  • Minimaal risico op "botsing" (herhaling) van codes. Ondanks hun massale gebruik neigt de kans op herhaling naar nul.
  • Mogelijkheid om verschillende gegevensarrays samen te voegen met behulp van UUID's als primaire (unieke) sleutels.
  • Vereenvoudigde distributie van gegevens over meerdere verspreide servers.
  • Mogelijkheid om codes offline te genereren.

Unieke identificatiecodes, geschreven in het formaat xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, stellen verspreide systemen in staat om informatie te herkennen zonder coördinatie vanuit een enkel datacenter: met een bijna nul kans op fouten / herhalingen. Deze functie, samen met het gebruiksgemak en lage vereisten voor computerprestaties, maakt UUID veelgevraagd en onmisbaar in een grote verscheidenheid aan IT-industrieën en autonome computersystemen.

Universeel unieke identificatie

Universeel unieke identificatie

De UUID kan codes genereren met behulp van verschillende algoritmen en variabelen/constante waarden.

Er zijn in totaal 5 versies van de identifier, waarbij gebruik wordt gemaakt van de systeemdatum/-tijd en MAC-adressen, DCE-beveiligingsprotocollen, MD5-hash, SHA-1-hash en naamruimte wanneer gegenereerd.

In alle gevallen wordt het eindresultaat weergegeven in het formaat xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (een getal in hexadecimale notatie, bestaande uit Latijnse kleine letters en cijfers, en door koppeltekens verdeeld in vijf blokken: 8-4 -4-4- 12), M staat voor versie, N staat voor UUID-variant.

Het systeem gebruikt dus 36 tekens tegelijk (26 letters en 10 cijfers), dus de kans op het herhalen van 32-cijferige codes neigt naar nul, ondanks het feit dat ze dagelijks worden gegenereerd door miljoenen gebruikers over de hele wereld.

UUID-versies

Versie 1

De eerste versie van de unieke identificatie, bij het genereren van de code, is gebaseerd op het MAC-adres van de computer en de systeemtijd, die de numerieke waarde 1 keer per seconde verandert. Het generatieproces bestaat uit vijf fasen:

  • De onderste 32 bits aan informatie zijn afkomstig van de UTC-tag. Ze worden geconverteerd naar 8 hexadecimale tekens en nemen 4 bytes in beslag.
  • Gemiddeld worden 16 bits aan informatie van hetzelfde UTC-label gehaald en omgezet in 4 hexadecimale tekens die 2 bytes in beslag nemen.
  • De bovenste 12 bits aan informatie van de UTC-tag worden genomen en geconverteerd naar nog eens 4 hexadecimale tekens.
  • Nog eens 1-3 bits vallen op de klokvolgorde en verminderen de risico's van botsingen door een zekere mate van willekeur / onzekerheid te introduceren. De systeemtijd wordt voorwaardelijk vertraagd of teruggezet, zodat twee of meer identifiers die tegelijkertijd op dezelfde computer werken, elkaar niet "kruisen".
  • De resterende 6 bytes zijn een constante waarde die wordt gegenereerd op basis van het MAC-adres van het apparaat. Het bestaat uit 12 hexadecimale tekens en is 48 bits groot.

Omdat het algoritme van de eerste versie van de UUID onlosmakelijk verbonden is met de systeemtijd, is het gebruik van de klokvolgorde verplicht. Anders nemen de risico's van het genereren van dezelfde codes vele malen toe - tijdens de seconde dat de systeemtijd "bevriest" op een of andere waarde.

Versie 2

De tweede versie verschilt minimaal van de eerste en wordt in de praktijk zelden gebruikt. In plaats van een klokreeks gebruikt het een systeem-ID die is gekoppeld aan gebruikersgegevens of andere unieke waarden die niet of zeer zelden worden herhaald op andere computers. Het effect van willekeur in de tweede versie is geminimaliseerd en kan worden gebruikt om de beveiliging van een gedistribueerde computeromgeving te verbeteren.

Versies 3 en 5

Ze hebben veel gemeen: ze gebruiken unieke namen en namen (uit de MD5-ruimte) om codes te creëren, dat wil zeggen niet-willekeurige waarden. Alleen versie 3 gebruikt een standaard hash, terwijl versie 5 een SHA-1 hash gebruikt. Dergelijke identifiers zijn minder afhankelijk van willekeurige variabelen.

Versie 4

De generatie van deze UUID-versie is meer dan 90% willekeurig. Het heeft 6 bits voor constante waarden en 122 voor willekeurige waarden. De implementatie van het algoritme is dat 128 bits informatie eerst willekeurig wordt gegenereerd en 6 daarvan worden vervangen door versie- en variantgegevens.

De rol van de pseudo-willekeurige nummergenerator is in de vierde versie maximaal, en als deze een te eenvoudig algoritme heeft, nemen de risico's op herhalingen/botsingen aanzienlijk toe. Desondanks is het de vierde versie die verreweg het meest voorkomt en in de praktijk het vaakst wordt gebruikt.

UUID-opties

De unieke UUID is tijdens de ontwikkeling van de computertechnologie verschillende keren verfijnd en wordt tegenwoordig in verschillende versies gepresenteerd.

Optie 0

Ontworpen om te werken met legacy Apollo Network Computing System 1.5 1988 formaat databases. Deze optie is achterwaarts compatibel met hen en is niet in strijd met NCS historische UUID's.

Opties 1 en 2

Gebruikt om moderne datablokken en arrays te identificeren, en in canonieke tekstvorm verschillen ze niet van elkaar, behalve de volgorde van schrijven van de variantbits. Dus optie 1 gebruikt big-endian bytevolgorde en optie 2 gebruikt title-endian. De eerste is de belangrijkste en de tweede is gereserveerd voor het werken met vroege GUID's van Microsoft Windows.

Optie 3

Momenteel niet in gebruik. Het is een gereserveerde versie voor toekomstig gebruik - wanneer de mogelijkheden van de vorige opties zijn uitgeput.

De meeste systemen coderen de identifier in big-endian, maar er zijn uitzonderingen. Marshalling in de Microsoft COM/OLE-bibliotheken gebruikt bijvoorbeeld mixed-endian terwijl code wordt gegenereerd uit de title-endian- en big-endian-blokken. De eerste zijn de eerste drie componenten van de UUID en de tweede zijn de laatste twee.