Generator UUID v7
Generuj identyfikatory UUID v7 z osadzonymi znacznikami czasu Unix Epoch, generowaniem zbiorczym i opcjami formatowania
Wejście
Wyjście
Instrukcja
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.