UUID v4 vs v7: losowe ID czy ID uporządkowane w czasie

Poradnik UUID v4 vs v7

UUID v4 vs v7 (oraz GUID vs UUID): którego użyć | We.Inc

Czym UUID v7 różni się od v4 według RFC 9562, dlaczego ID uporządkowane w czasie pasują do kluczy w bazie danych, czym jest GUID, oraz narzędzie w przeglądarce do tworzenia ID v4 i v7 i dekodowania znacznika czasu v7.

Oba to 128-bitowe identyfikatory zapisywane jako 36 znaków. UUID v4 to 122 losowe bity, więc nowe wartości trafiają w dowolne miejsce posortowanego indeksu. UUID v7 zaczyna się od 48-bitowego znacznika czasu Unix w milisekundach, po którym następują losowe bity, więc wartości sortują się mniej więcej według czasu utworzenia. RFC 9562 zaleca v7 zamiast starszych, opartych na czasie v1 i v6.

Porównanie v4 i v7

Wybór wersji UUID to głównie kwestia bazy danych. Losowe klucze v4 rozpraszają wstawienia po całym indeksie, a klucze v7 przychodzą po kolei, tak jak liczba z autoinkrementacji, bez potrzeby centralnego licznika. Wygeneruj poniżej oba rodzaje, a potem wklej dowolny UUID, aby zobaczyć jego wersję, a dla v7 moment utworzenia.

Najczęściej zadawane pytania

Jaka jest różnica między GUID a UUID?

W praktyce żadna istotna. RFC 9562 definiuje UUID i zaznacza, że są też znane jako GUID, Globally Unique Identifiers, czyli nazwa używana w narzędziach Microsoftu. GUID wygenerowany przez .NET lub SQL Server to UUID w tym samym 36-znakowym formacie.

Czy UUID v7 to oficjalny standard?

Tak. RFC 9562, opublikowany w 2024, definiuje wersje 6, 7 i 8 obok starszych i zastępuje RFC 4122, dokument, który wcześniej opisywał UUID.

Czy UUID v7 jest wystarczająco unikalny?

Na każdą milisekundę przypada 74 losowych bitów, co wystarcza dla niemal każdego systemu. Kolizja wymagałaby ogromnej liczby ID utworzonych w dokładnie tej samej milisekundzie.

Czy mogę odzyskać czas utworzenia z UUID v7?

Tak. Pierwsze 12 cyfr szesnastkowych to czas Unix w milisekundach. Wklej UUID do dekodera powyżej, aby zobaczyć go jako datę, albo sam sparsuj te cyfry jako liczbę szesnastkową.

Czy przestawić istniejące klucze v4 na v7?

Zwykle nie. Oba są poprawnymi UUID i mogą żyć w tej samej kolumnie, więc nowe wiersze mogą używać v7, a stare zachować wartości v4. Przepisanie kluczy głównych oznacza przepisanie każdego klucza obcego, który na nie wskazuje.

Dlaczego kolejność ma znaczenie dla baz danych

Jak czytać układ

Wszystkie osiem wersji UUID

Wersje UUID w RFC 9562

Kod do skopiowania

UUID v4 w przeglądarce lub Node

Wbudowany w aktualne przeglądarki na bezpiecznych stronach oraz w Node 19 i nowsze przez globalny obiekt crypto. Zwraca 36-znakowy string.

UUID v7 bez biblioteki

Zapisuje bieżący czas w pierwszych sześciu bajtach, a potem ustawia bity wersji i wariantu. Reszta pozostaje losowa.

Odczyt czasu z UUID v7

Pierwsze 12 cyfr szesnastkowych to milisekundy od 1970, więc ich sparsowanie daje obiekt Date.

Generuj i dekoduj

Generuj v4

Generuj v7

Wygenerowano

Naciśnij przycisk, aby utworzyć UUID. Powstaje w Twojej przeglądarce i nigdzie nie jest wysyłany.

Wklej UUID do zdekodowania

Wersja: {v}

RFC 9562 (standardowy)

Nie jest to wariant RFC 9562

Utworzono: {v} (UTC)

Ta wersja nie zawiera znacznika czasu Unix.

To nie jest UUID. Oczekiwane są 32 cyfry szesnastkowe w grupach 8-4-4-4-12.

To jest Nil UUID: wszystkie 128 bitów to zera.

To jest Max UUID: wszystkie 128 bitów to jedynki.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony