v4 oder v7
v4 besteht aus 122 Bit reinem Zufall. Dem Wert sieht man nicht an, wann oder wo er entstanden ist. Das passt zu Bezeichnern in öffentlichen URLs, zu Einladungslinks und überall dort, wo die Reihenfolge der Erzeugung verborgen bleiben soll.
v7 legt einen Zeitstempel in Millisekunden in die ersten 48 Bit und füllt den Rest mit Zufall, deshalb entspricht das Sortieren der Zeichenketten dem Sortieren nach Erzeugungszeit. Nehmen Sie es für Primärschlüssel, Log-Bezeichner und Event-IDs, überall wo Chronologie hilft. Im Gegenzug lässt sich die Erzeugungszeit aus dem Wert ablesen: Verrät das etwas, greifen Sie zu v4.
NIL ist der Wert aus lauter Nullen. Er dient als Platzhalter für ein noch fehlendes Datum in einer Spalte, die kein NULL zulässt.
Als Primärschlüssel
UUIDs statt automatisch hochzählender Ganzzahlen erlauben es mehreren Servern, ohne Absprache Schlüssel zu vergeben, und eine ID in der URL lässt keine Rückschlüsse auf die Nachbarzeilen mehr zu.
Der Haken ist der Zufall von v4. Ein B-Tree-Index arbeitet am besten, wenn neue Schlüssel hinten anschließen; ein v4-Schlüssel landet irgendwo in der Mitte und spaltet fortlaufend Seiten. Mit wachsender Tabelle werden Schreibvorgänge langsamer und der Index bläht sich auf. v7 umgeht das, weil die Werte mit der Zeit steigen und neue Schlüssel immer hinten anschließen. Für eine neue Tabelle ist v7 die vernünftige Voreinstellung.
Speichern Sie sie als BINARY(16) in MySQL oder im Typ uuid in PostgreSQL. Die 36-Zeichen-Zeichenkette kostet 20 Byte je Zeile zusätzlich und verlangsamt jeden Vergleich.
Ohne Bindestriche
Die Bindestriche sind Darstellungskonvention und nicht Teil des Werts. Dateinamen, Gutscheincodes und manche APIs verwenden die zusammenhängende Form aus 32 Zeichen. Großbuchstaben sind ebenfalls reine Darstellung: Wandeln Sie beide UUIDs vor einem Vergleich in Kleinbuchstaben um.
Mehrere auf einmal
Erzeugt dieses Werkzeug mehrere v7 gleichzeitig, bleibt die Erzeugungsreihenfolge erhalten. Alles innerhalb derselben Millisekunde teilt sich einen Zeitstempel, was die Reihenfolge durcheinanderbrächte, deshalb dient ein Teil des Zufallsfelds als Zähler. Kopieren Sie die Liste am Stück, die Sortierung hält.