UUIDs erzeugen (v1, v4, v5, v7)
- Dashboard
- Dokumentation
- API
Warum UUIDs verwenden?
UUIDs (Universally Unique Identifier) sind eindeutige Bezeichner, die verwendet werden, um die Eindeutigkeit über verschiedene Systeme und Datenbanken hinweg zu garantieren, ohne dass eine zentrale Koordination erforderlich ist. Sie werden häufig in verteilten Systemen und Webanwendungen verwendet, um eindeutige Bezeichner für Ressourcen zu erzeugen.
Unterstützte UUID-Versionen
Dieses Tool unterstützt die folgenden UUID-Versionen:
- Version 1: basierend auf Zeitstempel und MAC-Adresse.
- Version 4: zufällig erzeugt (am häufigsten verwendet).
- Version 5: basierend auf einem SHA-1-Fingerabdruck eines Namespace und eines Namens (deterministisch: dasselbe Namespace-Name-Paar erzeugt immer dieselbe UUID).
- Version 7: zeitlich geordnet, empfohlen für Primärschlüssel moderner Datenbanken (lexikografische Sortierung = chronologische Sortierung).
UUID v5: Namespace und Name
Um eine UUID v5 zu erzeugen, müssen Sie einen Standard-Namespace wählen und einen Namen angeben:
- DNS: zu verwenden, wenn der Name ein Domainname ist (zum Beispiel
cdrn.fr). - URL: zu verwenden, wenn der Name eine URL ist (zum Beispiel
https://cdrn.fr/). - OID: zu verwenden, wenn der Name ein ISO-Objektbezeichner ist.
- X500: zu verwenden, wenn der Name ein X.500-distinguished Name ist.
Da die Erzeugung deterministisch ist, eignet sich UUID v5 besonders zur Erzeugung reproduzierbarer Bezeichner aus stabilen Daten.
So generieren Sie UUIDs
Auf der Startseite können Sie UUIDs generieren, indem Sie die gewünschte Version in einem Dropdown-Menü auswählen und auf die Generierungsschaltfläche klicken. Für Version 5 geben Sie zusätzlich den Namespace und den Namen an.
Sobald eine UUID erzeugt wurde, erscheint sie in einer grünen Ergebniszeile, die anzeigt, dass sie erfolgreich generiert wurde. Wenn ein Fehler auftritt, zeigt eine rote Zeile die entsprechende Fehlermeldung an.
Codebeispiele zur Verwendung der generierten UUIDs
Sie können die generierten UUIDs in Ihren Anwendungen verwenden, indem Sie sie direkt in Ihren Code integrieren. Hier ist ein Beispiel 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;
?>
UUIDs validieren und analysieren
Sie können auch bestehende UUIDs validieren und analysieren, um ihre Version und Gültigkeit zu bestimmen. Hier ist ein Codebeispiel 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";
}
?>
Häufig gestellte Fragen
Was ist der Unterschied zwischen UUID v1, v4, v5 und v7?
v1 kombiniert einen Zeitstempel und die MAC-Adresse der Maschine, was sensible Informationen preisgeben kann. v4 ist rein zufällig (122 Zufallsbits), das ist die am häufigsten verwendete Version. v5 ist deterministisch: Dasselbe Namespace-Name-Paar erzeugt dank eines SHA-1-Hashs immer dieselbe UUID. v7 integriert einen Millisekunden-Zeitstempel am Anfang des Bezeichners, was ihn chronologisch sortiert und ideal für Primärschlüssel macht.
Wie hoch ist die Kollisionswahrscheinlichkeit einer UUID v4?
Eine UUID v4 verfügt über 122 Zufallsbits, also etwa 5,3 × 10^36 mögliche Werte. Um eine Kollisionswahrscheinlichkeit von 50% zu erreichen (Geburtstagsparadoxon), müsste man etwa 2,7 × 10^18 UUIDs generieren. In der Praxis ist die Kollisionswahrscheinlichkeit auf einer Standardanwendung vernachlässigbar. Das ist es, was es erlaubt, Bezeichner clientseitig ohne Koordination mit einem zentralen Server zu erzeugen.
Warum UUID v7 für einen Datenbank-Primärschlüssel bevorzugen?
Eine in einen B-Tree-Index eingefügte UUID v4 verursacht eine starke Fragmentierung: Jede Einfügung fällt an eine zufällige Position, was Performance und Cache-Nutzung verschlechtert. UUID v7 beginnt mit einem Millisekunden-Zeitstempel, daher werden neue Zeilen immer am Ende des Index eingefügt. Die Einfügungs-Performance nähert sich dann der eines BIGSERIAL an, während die Vorteile eines universellen Bezeichners erhalten bleiben.
Wofür dienen die DNS-, URL-, OID- und X500-Namespaces von UUID v5?
Diese Namespaces sind in RFC 4122 vordefinierte UUIDs, die als kontextuelles Präfix für die deterministische Generierung dienen. DNS wird mit einem Domainnamen verwendet, URL mit einer vollständigen URL, OID mit einem ISO-Objektbezeichner, X500 mit einem LDAP-distinguished Namen. Sie können auch Ihren eigenen privaten Namespace definieren: eine einmal für Ihre Anwendung generierte UUID v4, die als deterministische Wurzel für alle Ihre v5-Bezeichner wiederverwendet wird.
UUID oder Auto-Increment für Datenbankbezeichner?
Auto-Increment ist für monolithische Datenbanken weiterhin sehr effizient und gibt bereitwillig die Schreibreihenfolge preis, was auf der öffentlichen API-Seite unerwünscht sein kann. UUIDs eignen sich besser für verteilte Architekturen, clientseitige Generierung, Datenbankzusammenführungen und die öffentliche Exposition opaker Bezeichner. Der ideale Kompromiss im Jahr 2026: UUID v7 als Primärschlüssel, der Universalität, vernünftige Opazität und gute Indexleistung kombiniert.
Werden die generierten UUIDs über einen Drittanbieter-Server übertragen?
Die Generierung erfolgt in der cdrn.fr-Umgebung, ohne Aufruf eines externen Dienstes. Für rein zufällige Versionen (v4) oder zeitliche Versionen (v7) sind keine sensiblen Informationen als Eingabe erforderlich. Für v5 dienen der von Ihnen bereitgestellte Namespace und Name nur der lokalen SHA-1-Berechnung. Es wird kein generierter Bezeichner protokolliert, Sie können das Tool zur Erzeugung von UUIDs für vertrauliche Kontexte verwenden.
Beispielanfrage
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":"..."}'
Eingabeschema
| Feld | Typ | Erforderlich | 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 | – | – |
Endpunkte
GET https://cdrn.fr/api/v1/tools- listet alle verfügbaren Tools aufGET https://cdrn.fr/api/v1/tools/uuid-generator- liefert das Schema dieses ToolsPOST https://cdrn.fr/api/v1/tools/uuid-generator/execute- führt dieses Tool mit einem JSON-Payload aus