Czym jest UUID v7?

UUID v7 to najnowsza wersja Universally Unique Identifiers zdefiniowana w RFC 9562. W odróżnieniu od starszych wersji, takich jak UUID v4 (czysto losowy) czy UUID v1 (używa adresu MAC), UUID v7 osadza 48-bitowy znacznik czasu Unix Epoch w milisekundach bezpośrednio w identyfikatorze. Sprawia to, że wartości UUID v7 są naturalnie sortowalne według czasu utworzenia — co stanowi istotną zaletę przy indeksowaniu baz danych, systemach rozproszonych i rejestrowaniu zdarzeń, gdzie ważna jest kolejność chronologiczna.

Ponieważ UUID v7 nie zawiera adresów MAC, unika problemów z prywatnością związanych z UUID v1. Pozostałe bity po znaczniku czasu i polach wersji/wariantu są wypełniane danymi losowymi lub monotonicznie rosnącymi, co zapewnia unikalność nawet w przypadku generowania wielu UUID w tej samej milisekundzie.

Budowa UUID v7

UUID v7 składa się ze 128 bitów zorganizowanych w następujący sposób:

  • Bity 0–47: 48-bitowy znacznik czasu Unix Epoch w milisekundach (big-endian bez znaku)
  • Bity 48–51: 4-bitowe pole wersji, ustawione na 0111 (7)
  • Bity 52–63: 12 bitów danych losowych lub monotonicznie rosnących dla precyzji lub unikalności w obrębie milisekundy
  • Bity 64–65: 2-bitowe pole wariantu, ustawione na 10 (RFC 9562)
  • Bity 66–127: 62 bity danych losowych lub monotonicznie rosnących dla dodatkowej unikalności

Ta struktura oznacza, że UUID wygenerowane później zawsze będą sortowane po wcześniejszych na poziomie milisekund, co czyni je idealnymi jako klucze główne w bazach danych z indeksami B-tree.

Opis narzędzia

Ten generator UUID v7 tworzy UUID w wersji 7 zgodne z RFC 9562 wraz z wizualnym rozkładem osadzonego znacznika czasu. Generuj od jednego do 100 UUID jednocześnie, przełączaj między formatowaniem wielkich i małych liter oraz wybieraj, czy uwzględniać łączniki. Narzędzie wyodrębnia i wyświetla również osadzony znacznik czasu Unix Epoch z pierwszego wygenerowanego UUID, umożliwiając weryfikację czasu utworzenia zakodowanego w każdym identyfikatorze.

Przykłady

Format Przykładowy wynik
Standardowy 019544a2-3b4c-7d8e-9f01-2a3b4c5d6e7f
Wielkie litery 019544A2-3B4C-7D8E-9F01-2A3B4C5D6E7F
Bez łączników 019544a23b4c7d8e9f012a3b4c5d6e7f

Funkcje

  • Generowanie zbiorcze: Generuj od 1 do 100 wartości UUID v7 jednocześnie za pomocą suwaka ilości
  • Przełącznik wielkich liter: Przełączaj między wynikiem w małych i wielkich literach
  • Przełącznik łączników: Dodawaj lub usuwaj łączniki dla kompaktowych formatów
  • Wyodrębnianie znacznika czasu: Automatycznie wyświetla osadzony znacznik czasu Unix Epoch z wygenerowanego UUID
  • Obsługa pobierania: Eksportuj wygenerowane UUID jako plik tekstowy do użytku wsadowego

Przypadki użycia

  • Generowanie sortowalnych czasowo kluczy głównych dla wielkoskalowych baz danych, gdzie ważna jest wydajność wstawiania i lokalność danych
  • Tworzenie monotonicznie rosnących identyfikatorów dla rozproszonych systemów strumieniowania zdarzeń, takich jak Kafka lub Pulsar
  • Zastępowanie UUID v4 w aplikacjach wymagających porządkowania chronologicznego bez osobnej kolumny ze znacznikiem czasu

UUID v7 a inne wersje

Wersja Oparty na czasie Sortowalny Bezpieczny dla prywatności Losowość
v1 Tak Nie Nie (używa MAC) Niska
v4 Nie Nie Tak Wysoka
v6 Tak Tak Nie (używa MAC) Niska
v7 Tak Tak Tak Średnia

UUID v7 łączy najlepsze cechy: sortowalność opartą na czasie bez ujawniania identyfikatorów sprzętowych, z wystarczającą losowością, aby zapobiec kolizjom w węzłach rozproszonych.

Objaśnienie opcji

  • Ilość (1–100): Liczba wartości UUID v7 do wygenerowania w jednej partii. Wszystkie UUID w partii mają ten sam przybliżony znacznik czasu, ale różnią się bitami losowymi.
  • Wielkie litery: Po włączeniu UUID są wyświetlane z wielkimi znakami hex (A–F zamiast a–f).
  • Łączniki: Po włączeniu (domyślnie) UUID zawierają standardowe grupowanie z łącznikami 8-4-4-4-12. Wyłącz, aby uzyskać kompaktowy 32-znakowy string hex.

FAQ

Czy UUID v7 może powodować kolizje? Kolizje są niezwykle mało prawdopodobne. Nawet w obrębie tej samej milisekundy 74 bity danych losowych/monotonicznie rosnących zapewniają ponad 18 kwintylionów możliwych kombinacji. Biblioteka uuid używa również monotonicznie rosnących liczników, aby zagwarantować unikalność w obrębie procesu.

Czy UUID v7 jest wstecznie kompatybilny z UUID v4? Tak. UUID v7 stosuje ten sam 128-bitowy format 8-4-4-4-12 i jest prawidłowy wszędzie tam, gdzie akceptowane są UUID. Istniejące kolumny UUID, parsery i walidatory działają bez modyfikacji.

Kiedy powinienem używać UUID v7 zamiast UUID v4? Używaj UUID v7, gdy Twój przypadek użycia korzysta z kluczy porządkowanych czasowo — na przykład jako klucze główne bazy danych, gdzie wydajność indeksu B-tree poprawia się przy sekwencyjnych wstawieniach. Używaj UUID v4, gdy kolejność jest nieistotna i chcesz maksymalnej losowości.