fixmint
PL

UUID v4 czy v7: którego użyć i dlaczego to ważne

Autor: · · zaktualizowano 8 listopada 2026 · czas czytania: 5 min

Użyj UUID v4, gdy potrzebujesz losowego identyfikatora i nic więcej. Użyj UUID v7, gdy identyfikator ma być kluczem w bazie danych albo gdy chcesz, żeby ID sortowały się według czasu utworzenia. Obie wersje mają 128 bitów i zapisuje się je w tej samej, 36-znakowej postaci, więc różnica tkwi w tym, jak ułożone są bity. Generator UUID poniżej tworzy którąkolwiek wersję, od jednego do 500 naraz, w twojej przeglądarce.

Generator UUIDPotrzebuję unikalnych ID do koduZrób to za darmo

Jak wygląda UUID

UUID, czyli uniwersalnie unikalny identyfikator, to 128-bitowa liczba zapisana jako 32 cyfry szesnastkowe w pięciu grupach: po 8, 4, 4, 4 i 12 cyfr, oddzielonych myślnikami. Przykład: 3f2b8c1e-6d4a-4f7b-9c2e-8a1d5e0b7f63.

Dwie części tej liczby są ustalone. Cztery bity określają wersję, więc trzecia grupa zaczyna się od 4 w v4 albo od 7 w v7. Dwa bity określają wariant, więc czwarta grupa zaczyna się od 8, 9, a lub b. Reszta to właściwy identyfikator. Ze względu na bity wersji i wariantu UUID v4 ma 122 losowe bity, a nie 128.

UUID v4: losowy

UUID v4 jest losowy, nie licząc tych stałych bitów. Jego 122 losowe bity sprawiają, że powtórzenie jest niezwykle mało prawdopodobne. Załóżmy, że wygenerujesz miliard UUID v4. Szansa, że jakieś dwa będą identyczne, wynosi około n kwadrat podzielone przez dwukrotność liczby możliwych wartości, czyli około 10 do potęgi minus 19. Innymi słowy, kolizje nie są czymś, z czym trzeba coś projektować.

To oszacowanie zakłada, że generator czerpie bity z kryptograficznie bezpiecznego źródła losowości. Przewidywalny generator podważyłby tę wartość. To narzędzie korzysta z kryptograficznego źródła losowości przeglądarki, przez crypto.randomUUID albo crypto.getRandomValues.

UUID v7: najpierw czas

Wersję v7 definiuje RFC 9562. Jego pierwsze 48 bitów zawiera czas Unix w milisekundach, więc identyfikator utworzony później ma większą pierwszą część niż utworzony wcześniej. Dalej idą bity wersji, potem bity losowe, bity wariantu i kolejne losowe. Część przestrzeni losowej może przechowywać licznik, który utrzymuje kolejność, gdy kilka identyfikatorów powstaje w tej samej milisekundzie.

Ponieważ czas jest na początku, sortowanie identyfikatorów v7 jako tekstu, w jednolitej wielkości liter, układa je według czasu utworzenia, co do milisekundy. Tak jest, bo cyfry szesnastkowe mają stałą szerokość, a czas znajduje się na początku.

Czas jest też widoczny. Każdy, kto przeczyta UUID v7, może z grubsza odczytać, kiedy go utworzono. Możesz to sprawdzić samodzielnie, korzystając z pola Sprawdź w generatorze UUID, które zamienia pierwsze 48 bitów z powrotem na datę i godzinę.

Dlaczego v7 pasuje do indeksów w bazie

Indeks bazy danych to zwykle B-drzewo, czyli struktura utrzymywana w porządku posortowanym według klucza. Gdy klucz jest losowy, jak w v4, każdy nowy wiersz trafia w losowe miejsce w indeksie. Baza musi wtedy zapisywać w wielu różnych częściach indeksu, co powoduje więcej podziałów stron i więcej chybień w pamięci podręcznej. Przy dużej tabeli ta praca szybko się sumuje.

Klucz v7 jest większy niemal od wszystkich kluczy już obecnych w indeksie, bo jego część czasowa rośnie. Nowe wiersze dopisywane są blisko końca indeksu, podobnie jak przy automatycznie zwiększanym numerze. Ostatnie strony indeksu zostają w pamięci, a zapisy są uporządkowane. Różnica jest najbardziej zauważalna w dużych tabelach, które stale rosną, a w małej ledwo widać.

Wybór między v4 a v7

  • Klucze główne w bazie danych albo każda tabela, która rośnie w czasie: v7. Indeks pozostaje uporządkowany.
  • Logi, zdarzenia lub wiadomości, które często sortujesz według czasu: v7, bo sam identyfikator niesie kolejność.
  • Publiczne identyfikatory, w których czas utworzenia ma pozostać prywatny: v4. Identyfikator v7 zdradza, kiedy powstał.
  • Wiele urządzeń z niewiarygodnym zegarem: zarówno v4, jak i v7 pozostają unikalne, bo tę pracę wykonują bity losowe. Tylko kolejność sortowania v7 zależy od poprawności zegarów.

Obie wersje są standardowe, ale starsze biblioteki mogą znać tylko v4. RFC 4122 przez wiele lat opisywało wersje od 1 do 5. RFC 9562 zostało opublikowane w maju 2024 roku, zastępuje RFC 4122 i definiuje wersje 6, 7 i 8. Zanim na tym poleciisz, sprawdź, czy twoja biblioteka obsługuje v7.

Przechowywanie UUID

UUID zapisany jako tekst zajmuje 36 znaków. Jego 16 bajtów można zapisać w postaci binarnej, co zajmuje znacznie mniej miejsca. Wiele baz danych ma do tego natywny typ UUID albo kolumnę binarną o długości 16 bajtów, a porównuje się ją szybciej niż tekst.

Wybierz jeden format i trzymaj się go. Wielkie litery, małe litery, myślniki i nawiasy klamrowe to dla człowieka ten sam UUID, ale baza danych lub porównanie tekstów może potraktować je jako różne wartości. Opcje generatora: wielkie litery, bez myślników i z nawiasami klamrowymi istnieją dla systemów, które wymagają takiej postaci.

Nigdy nie używaj UUID jako sekretu

UUID to identyfikator, a nie hasło, token sesji ani klucz dostępu. Jest zbudowany tak, by był unikalny, a nie by był nie do odgadnięcia. UUID v7 dodatkowo niesie czas utworzenia. Poza tym identyfikatory trafiają do linków, logów, e-maili i zrzutów ekranu, gdzie każdy, kto je zobaczy, może je ponownie użyć.

Kontrola dostępu należy do serwera. Osoba, która zna identyfikator, nie powinna automatycznie mieć prawa do oglądania ani zmieniania rekordu, który ten identyfikator wskazuje. W przypadku haseł, fraz lub tokenów użyj generatora stworzonego do sekretów. Generator haseł tworzy losowe hasła lub frazy z wyrazów na twoim urządzeniu, z użyciem bezpiecznej losowości, i ocenia ich siłę. Informacje o tym, dlaczego długość i losowość mają znaczenie, znajdziesz w artykule silne hasła i entropia.

Jak korzystać z narzędzia

  1. Wybierz wersję 4 dla losowych identyfikatorów albo wersję 7 dla identyfikatorów sortowanych według czasu.
  2. Ustaw liczbę, od 1 do 500 naraz.
  3. Zaznacz wielkie litery, bez myślników lub nawiasy klamrowe, jeśli twój kod wymaga konkretnej postaci.
  4. Skopiuj wszystkie albo pobierz listę jako plik .txt.
  5. Wklej dowolny UUID w polu Sprawdź, aby odczytać jego wersję, wariant i, w przypadku v7, zapisany w nim czas.

Krótkie odpowiedzi

Czy UUID v4 jest unikalny? W praktyce tak. Jego 122 losowe bity sprawiają, że powtórzenie jest tak mało prawdopodobne, że nie musisz go sprawdzać.

Czy powinienem używać v7 do wszystkiego? Nie zawsze. Używaj v7 do kluczy w bazie i do wszystkiego, co sortujesz według czasu. Używaj v4, gdy czas utworzenia ma pozostać ukryty.

Czy mogę użyć UUID jako hasła? Nie. To identyfikator. Do wszystkiego, co ma pozostać tajne, użyj generatora haseł.

Czy narzędzie wysyła gdzieś identyfikatory? Nie. Identyfikatory są tworzone i wyświetlane w twojej przeglądarce i nie są wysyłane na serwer.

Przetłumaczone z Wersja angielska przy wsparciu AI.

Komentarze

    Brak komentarzy. Bądź pierwszy.

    Twoja ocena (opcjonalnie)

    Twój e-mail nigdy nie jest pokazywany ani zapisywany.

    Okładka: Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

    Dlaczego publiczne, bezpłatne i otwarte zbiory danych ukształtują ogólną sztuczną inteligencję równie mocno jak algorytmy i moc obliczeniowa.

    $4.99Kup na GumroadPo angielsku