Generator UUID

Generuj hurtowo UUID v4 i uporządkowane w czasie v7.

O tym narzędziu

Generuj losowe identyfikatory UUID v4 lub uporządkowane w czasie UUID v7, po jednym lub po sto naraz, korzystając z kryptograficznie bezpiecznego generatora liczb losowych przeglądarki.

Jak z tego korzystać

  1. Wybierz v4, aby uzyskać w pełni losowe identyfikatory, lub v7, aby uzyskać identyfikatory sortowane według czasu utworzenia.
  2. Ustaw, ile potrzebujesz, maksymalnie 100.
  3. Wybierz wielkie litery lub brak myślników, jeśli Twój system tego oczekuje.
  4. Skopiuj jeden lub wszystkie.

Pytania

Wybrać UUID v4 czy v7?
v7 zaczyna się od znacznika czasu, więc nowe identyfikatory sortują się po starszych. Dzięki temu indeksy w bazie danych pozostają zwarte i szybkie, co czyni v7 dobrym domyślnym wyborem dla kluczy głównych. Użyj v4, gdy czas utworzenia nie powinien być widoczny.
Czy dwa UUID mogą się powtórzyć?
W praktyce nie. UUID v4 ma 122 losowe bity; trzeba by generować miliardy na sekundę przez wiele lat, zanim kolizja stałaby się prawdopodobna.
Czy te UUID można bezpiecznie używać jako tokenów?
Są generowane kryptograficznie bezpiecznym generatorem liczb losowych przeglądarki, ale UUID to identyfikator, a nie sekret. Do tokenów sesji lub kluczy API używaj dłuższej losowej wartości.
Jak wygenerować UUID w JavaScripcie, Pythonie lub powłoce?
W przeglądarkach i Node.js crypto.randomUUID() zwraca v4. W Pythonie użyj uuid.uuid4() albo uuid.uuid7() od Pythona 3.14. W macOS i Linuksie uuidgen wypisuje losowy UUID; macOS wypisuje go wielkimi literami. Aby szybko wygenerować serię identyfikatorów v7, nawet 100 naraz, użyj tej strony.
Czy klucze UUID v7 sortują się poprawnie w SQL Server?
Domyślnie nie. Typ uniqueidentifier w SQL Server porównuje najpierw ostatnie sześć bajtów, więc UUID uporządkowane czasowo nie trafiają na koniec indeksu klastrowanego. NEWSEQUENTIALID() to własna sekwencyjna opcja SQL Server. PostgreSQL i MySQL z BINARY(16) porównują bajty od początku, więc tam v7 sortuje się poprawnie.
Co to jest nil UUID?
To wartość złożona z samych zer, 00000000-0000-0000-0000-000000000000, używana jako symbol zastępczy oznaczający „brak ID”. RFC 9562 definiuje też Max UUID, w którym każda cyfra to f. Żadna z nich nie jest losowa, więc nigdy nie używaj ich jako prawdziwych identyfikatorów i odrzucaj je tam, gdzie oczekiwane jest prawdziwe ID.

Co to jest UUID i jak jest zbudowany?

UUID to 128-bitowy identyfikator zapisywany jako 32 cyfry szesnastkowe w pięciu grupach: 8-4-4-4-12. Pierwsza cyfra trzeciej grupy to wersja, więc UUID v4 ma tam zawsze 4, a v7 – 7. Pierwsza cyfra czwartej grupy to 8, 9, a lub b, co oznacza standardowy wariant. GUID to nazwa Microsoftu dla tego samego formatu.

W UUID v7 pierwsze 48 bitów to czas Unix w milisekundach, więc pierwsze 12 cyfr szesnastkowych mówi, kiedy go utworzono; zamień je na liczbę dziesiętną w narzędziu Konwerter systemów liczbowych i wklej wynik do narzędzia Konwerter znaczników czasu Unix. Pozostałe 74 bity są losowe. Identyfikatory utworzone w tej samej milisekundzie nie są tu uporządkowane między sobą, ale identyfikatory z różnych milisekund zawsze sortują się według czasu.

Jak przechowywać UUID w bazie danych?

Użyj natywnego typu, jeśli taki istnieje. PostgreSQL ma uuid, który zajmuje 16 bajtów i akceptuje obie wielkości liter, z łącznikami lub bez. gen_random_uuid() tworzy v4 wewnątrz bazy, a PostgreSQL 18 dodaje uuidv7(). W MySQL przechowuj BINARY(16) z UUID_TO_BIN() i BIN_TO_UUID() zamiast CHAR(36), który zajmuje ponad dwa razy więcej miejsca i powiększa każdy indeks.

Standardowa postać tekstowa to małe litery z łącznikami, a RFC 9562 zaleca, by programy odczytujące UUID akceptowały też wielkie litery. Niektóre systemy oczekują wielkich liter albo 32 cyfr bez łączników, więc obie opcje są tu dostępne; wartość pozostaje ta sama. Porównując UUID jako ciągi znaków w kodzie lub logach, najpierw ujednolicaj wielkość liter, bo inaczej GUID z narzędzia Windows nie dopasuje się do tego samego ID zapisanego małymi literami.

UUID czy autoinkrementowane ID?

Autoinkrementowane liczby całkowite są małe, szybkie i czytelne, ale nadaje je baza danych, więc ID znasz dopiero po wstawieniu rekordu. Zdradzają też, ile masz wierszy, i pozwalają każdemu zgadywać sąsiednie rekordy w URL-u. UUID można generować wszędzie: w przeglądarce, na kilku serwerach albo offline, i później scalać bez konfliktów.

Ceną jest rozmiar: 16 bajtów zamiast 4 lub 8, w każdym indeksie i kluczu obcym. UUID v7 usuwa główny problem wydajnościowy losowych kluczy, bo nowe wartości trafiają na koniec indeksu. ULID to podobny pomysł, znacznik czasu i losowe bity w 26-znakowej postaci tekstowej, ale UUID v7 ma standardowy format i natywne typy kolumn w wielu bazach danych.

Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem