UUID's genereren (v1, v4, v5, v7)
- Dashboard
- Documentatie
- API
Waarom UUID's gebruiken?
UUID's (Universally Unique Identifier) zijn unieke identifiers die worden gebruikt om uniciteit te garanderen over verschillende systemen en databases zonder centrale coördinatie nodig te hebben. Ze worden vaak gebruikt in gedistribueerde systemen en webapplicaties om unieke identifiers voor bronnen te genereren.
Ondersteunde UUID-versies
Deze tool ondersteunt de volgende UUID-versies:
- Versie 1: gebaseerd op tijdstempel en MAC-adres.
- Versie 4: willekeurig gegenereerd (de meest gebruikte).
- Versie 5: gebaseerd op een SHA-1-vingerafdruk van een namespace en een naam (deterministisch: hetzelfde paar namespace + naam zal altijd dezelfde UUID produceren).
- Versie 7: temporeel geordend, aanbevolen voor primaire sleutels van moderne databases (lexicografische sortering = chronologische sortering).
UUID v5: namespace en naam
Om een UUID v5 te genereren, moet u een standaard namespace kiezen en een naam aanleveren:
- DNS: te gebruiken wanneer de naam een domeinnaam is (bijvoorbeeld
cdrn.fr). - URL: te gebruiken wanneer de naam een URL is (bijvoorbeeld
https://cdrn.fr/). - OID: te gebruiken wanneer de naam een ISO-objectidentifier is.
- X500: te gebruiken wanneer de naam een X.500 distinguished name is.
Aangezien de generatie deterministisch is, is UUID v5 bijzonder geschikt om reproduceerbare identifiers te produceren vanuit stabiele gegevens.
Hoe u UUID's genereert
Op de startpagina kunt u UUID's genereren door de gewenste versie te selecteren in een dropdownmenu en op de generatieknop te klikken. Voor versie 5 vult u bovendien de namespace en de naam in.
Zodra een UUID is gegenereerd, verschijnt deze op een groene resultaatregel die aangeeft dat hij succesvol is gegenereerd. Als er een fout optreedt, toont een rode regel het overeenkomstige foutbericht.
Codevoorbeelden om de gegenereerde UUID's te gebruiken
U kunt de gegenereerde UUID's in uw applicaties gebruiken door ze direct in uw code te integreren. Hier is een voorbeeld in PHP:
<?php
use Ramsey\Uuid\Uuid;
// Générer un UUID v4 (aléatoire)
$uuidV4 = Uuid::uuid4();
// Générer un UUID v5 (déterministe à partir d'un namespace et d'un nom)
$uuidV5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'cdrn.fr');
// Générer un UUID v7 (ordonnancé temporellement)
$uuidV7 = Uuid::uuid7();
echo "UUID v4 : " . $uuidV4->toString() . PHP_EOL;
echo "UUID v5 : " . $uuidV5->toString() . PHP_EOL;
echo "UUID v7 : " . $uuidV7->toString() . PHP_EOL;
?>
UUID's valideren en analyseren
U kunt ook bestaande UUID's valideren en analyseren om de versie en geldigheid ervan te bepalen. Hier is een codevoorbeeld in PHP:
<?php
use Ramsey\Uuid\Uuid;
// Valider un UUID
$uuidString = '123e4567-e89b-12d3-a456-426614174000';
if (Uuid::isValid($uuidString)) {
$uuid = Uuid::fromString($uuidString);
echo "UUID valide de version : " . $uuid->getFields()->getVersion();
} else {
echo "UUID invalide";
}
?>
Veelgestelde vragen
Wat is het verschil tussen UUID v1, v4, v5 en v7?
v1 combineert een tijdstempel en het MAC-adres van de machine, wat gevoelige informatie kan onthullen. v4 is puur willekeurig (122 bits willekeur), het is de meest gebruikte versie. v5 is deterministisch: hetzelfde paar namespace + naam produceert altijd dezelfde UUID dankzij een SHA-1-hash. v7 integreert een tijdstempel in milliseconden aan het begin van de identifier, wat hem chronologisch gesorteerd en ideaal voor primaire sleutels maakt.
Wat is de kans op botsing van een UUID v4?
Een UUID v4 beschikt over 122 willekeurige bits, oftewel ongeveer 5,3 × 10^36 mogelijke waarden. Om 50% kans op botsing te bereiken (verjaardagsparadox), zou men ongeveer 2,7 × 10^18 UUID's moeten genereren. In de praktijk is op een standaard applicatie de kans op botsing verwaarloosbaar. Dat is wat het mogelijk maakt om identifiers aan clientkant te genereren zonder coördinatie met een centrale server.
Waarom de voorkeur geven aan UUID v7 voor een database-primaire sleutel?
Een UUID v4 ingevoegd in een B-tree-index veroorzaakt sterke fragmentatie: elke invoeging valt op een willekeurige positie, wat de prestaties en het cachegebruik degradeert. UUID v7 begint met een tijdstempel in milliseconden, dus de nieuwe rijen worden altijd aan het einde van de index ingevoegd. De invoegprestaties benaderen dan die van een BIGSERIAL, terwijl de voordelen van een universele identifier behouden blijven.
Waarvoor dienen de namespaces DNS, URL, OID en X500 van UUID v5?
Deze namespaces zijn vooraf gedefinieerde UUID's in RFC 4122 die als contextueel voorvoegsel fungeren voor deterministische generatie. DNS wordt gebruikt met een domeinnaam, URL met een volledige URL, OID met een ISO-objectidentifier, X500 met een LDAP distinguished name. U kunt ook uw eigen privé-namespace definiëren: een eenmaal gegenereerd UUID v4 voor uw applicatie, hergebruikt als deterministische root voor al uw v5-identifiers.
UUID of auto-increment voor database-identifiers?
Auto-increment blijft zeer efficiënt voor monolithische databases en onthult graag de schrijfvolgorde, wat ongewenst kan zijn aan publieke API-kant. UUID's zijn beter geschikt voor gedistribueerde architecturen, generatie aan clientkant, databasefusies en publieke blootstelling van ondoorzichtige identifiers. Het ideale compromis in 2026: UUID v7 als primaire sleutel, dat universaliteit, redelijke ondoorzichtigheid en goede indexprestaties combineert.
Passeren de gegenereerde UUID's door een server van derden?
De generatie wordt uitgevoerd in de omgeving van cdrn.fr, zonder oproep naar een externe service. Voor puur willekeurige (v4) of temporele (v7) versies is geen gevoelige informatie nodig in de invoer. Voor v5 dienen de namespace en de naam die u aanlevert alleen voor de lokale SHA-1-berekening. Geen gegenereerde identifier wordt gelogd, u kunt de tool gebruiken om UUID's te produceren bestemd voor vertrouwelijke contexten.
Voorbeeldverzoek
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":"..."}'
Invoerschema
| Veld | Type | Vereist | Standaard |
|---|---|---|---|
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- toont alle beschikbare toolsGET https://cdrn.fr/api/v1/tools/uuid-generator- geeft het schema van deze tool terugPOST https://cdrn.fr/api/v1/tools/uuid-generator/execute- voert deze tool uit met een JSON-payload