Generer UUID'er (v1, v4, v5, v7)

genererer dine UUID'er (Universally Unique Identifier) i v1, v4, v5 (deterministisk) eller v7 (time-ordered), i overensstemmelse med RFC 4122

Hvorfor bruge UUID'er?

UUID'er (Universally Unique Identifiers) er unikke identifikatorer, der bruges til at sikre unikhed på tværs af forskellige systemer og databaser uden at kræve central koordinering. De bruges almindeligvis i distribuerede systemer og webapplikationer til at generere unikke identifikatorer til ressourcer.

Understøttede UUID-versioner

Dette værktøj understøtter følgende UUID-versioner:

  • Version 1: baseret på tidsstempel og MAC-adresse.
  • Version 4: tilfældigt genereret (mest brugt).
  • Version 5: baseret på et SHA-1-fingeraftryk af et navneområde og et navn (deterministisk: det samme navneområde + navnepar vil altid producere det samme UUID).
  • Version 7: tidsmæssigt ordnet, anbefalet til moderne database primære nøgler (leksikografisk sortering = kronologisk sortering).

UUID v5: navneområde og navn

For at generere et v5 UUID skal du vælge et standardnavneområde og angive et navn:

  • DNS: til brug, når navnet er et domænenavn (f.eks. cdrn.fr).
  • URL: til brug, når navnet er en URL (f.eks. https://cdrn.fr/).
  • OID: Bruges, når navnet er en ISO-objektidentifikator.
  • X500: Bruges, når navnet er et X.500-fornemt navn.

Da generationen er deterministisk, er UUID v5 særligt velegnet til at producere reproducerbare identifikatorer fra stabile data.

Sådan genereres UUID'er

På startsiden kan du generere UUID'er ved at vælge den ønskede version fra en rullemenu og klikke på knappen Generer. For version 5 skal du også angive navneområdet og navnet.

Så snart et UUID er genereret, vises det i en grøn resultatrække, hvilket indikerer, at det er blevet genereret. Hvis der opstår en fejl, vil en rød linje vise den tilsvarende fejlmeddelelse.

Kodeeksempler til brug af genererede UUID'er

Du kan bruge de genererede UUID'er i dine applikationer ved at integrere dem direkte i din kode. Her er et eksempel i PHP:


toString() . PHP_EOL;
ekko "UUID v5: ". $uuidV5->toString() . PHP_EOL;
echo "UUID v7: ". $uuidV7->toString() . PHP_EOL;
?>

    

Validere og analysere UUID'er

Du kan også validere og analysere eksisterende UUID'er for at bestemme deres version og gyldighed. Her er et eksempel på kode i PHP:


getFields()->getVersion();
} andet {
    echo "Ugyldig UUID";
}
?>

    

Ofte stillede spørgsmål

Hvad er forskellen mellem UUID v1, v4, v5 og v7?

v1 kombinerer et tidsstempel og maskinens MAC-adresse, som kan afsløre følsomme oplysninger. v4 er rent tilfældig (122 tilfældige bits), det er den mest brugte version. v5 er deterministisk: det samme navneområde + navnepar producerer altid det samme UUID takket være en SHA-1-hash. v7 inkluderer et tidsstempel i millisekunder i starten af identifikatoren, hvilket gør den sorteret kronologisk og ideel til primærnøgler.

Hvad er kollisionssandsynligheden for en v4 UUID?

En v4 UUID har 122 tilfældige bit, eller ca. 5,3 × 10^36 mulige værdier. For at opnå 50 % kollisionssandsynlighed (fødselsdagsparadoks) skal der genereres ca. 2,7 × 10^18 UUID. I praksis, på en standardapplikation, er sandsynligheden for kollision ubetydelig. Dette er det, der gør det muligt at generere identifikatorer på klientsiden uden koordinering med en central server.

Hvorfor bruge UUID v7 til en primær databasenøgle?

En UUID v4 indsat i et B-træindeks forårsager stærk fragmentering: hver indsættelse falder på en tilfældig position, hvilket forringer ydeevne og cachebrug. UUID v7 starter med et tidsstempel i millisekunder, så nye linjer indsættes altid i slutningen af indekset. Indsættelsesydelsen nærmer sig derefter en BIGSERIAL, mens fordelene ved en universel identifikator bevares.

Hvad bruges DNS-, URL-, OID- og X500-navneområderne i UUID v5 til?

Disse navnerum er UUID'er foruddefineret i RFC 4122, der fungerer som et kontekstuelt præfiks for deterministisk generering. DNS bruges med et domænenavn, URL med en fuld URL, OID med en objekt ISO identifikator, X500 med et LDAP distinguished name. Du kan også definere dit eget private navneområde: et v4 UUID, der er genereret én gang til din applikation, genbrugt som den deterministiske rod for alle dine v5 identifikatorer.

UUID eller automatisk stigning for basis-id'er?

Auto-inkrementering forbliver meget effektiv for monolitiske databaser og afslører let skrivesekvensen, hvilket kan være uønsket på den offentlige API-side. UUID'er er bedst egnede til distribuerede arkitekturer, klientsidegenerering, databasefusioner og offentlig eksponering af uigennemsigtige identifikatorer. Det ideelle kompromis i 2026: UUID v7 i primærnøgle, som kombinerer universalitet, rimelig opacitet og god indeksydelse.

Går de genererede UUID'er gennem en tredjepartsserver?

Generering udføres i cdrn.fr-miljøet uden at kalde en ekstern tjeneste. For rent tilfældige (v4) eller tidsmæssige (v7) versioner er der ikke behov for følsomme oplysninger som input. For v5 bruges det navneområde og det navn, du angiver, kun til lokal SHA-1-beregning. Ingen genererede identifikatorer logges, du kan bruge værktøjet til at producere UUID'er beregnet til fortrolige sammenhænge.

Anmodningseksempel

curl -X POST https://cdrn.fr/api/v1/tools/uuid-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"version":"uuid_version_1","quantity":3,"namespace":"namespace_dns","name":"..."}'

Inputskema

Felt Type Påkrævet Standard
version choice (uuid_version_1, uuid_version_4, uuid_version_5, uuid_version_7)
quantity integer 3
namespace choice (namespace_dns, namespace_url, namespace_oid, namespace_x500)
name string

Endpoints

  • GET https://cdrn.fr/api/v1/tools - lister alle tilgængelige værktøjer
  • GET https://cdrn.fr/api/v1/tools/uuid-generator - henter skemaet for dette værktøj
  • POST https://cdrn.fr/api/v1/tools/uuid-generator/execute - udfører dette værktøj med et JSON-payload