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ć
- Wybierz v4, aby uzyskać w pełni losowe identyfikatory, lub v7, aby uzyskać identyfikatory sortowane według czasu utworzenia.
- Ustaw, ile potrzebujesz, maksymalnie 100.
- Wybierz wielkie litery lub brak myślników, jeśli Twój system tego oczekuje.
- 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