Generator UUID wersji 6 (uporządkowana sygnatura czasowa)

Generuj UUID uporządkowane według sygnatury czasowej zoptymalizowane pod kątem indeksowania baz danych

Wypróbuj te przykłady:

Co to jest UUID v6?

Wersja UUID 6 to 128-bitowy identyfikator oparty na czasie (ciąg 36 znaków) zaproponowany jako ulepszenie UUID v1. Składa się z:

  • Przearanżowany znacznik czasu: 60-bitowy znacznik czasu od najbardziej do najmniej znaczącego
  • Sekwencja zegara: 14-bitowy licznik do regulacji zegara
  • ID węzła: 48-bitowa wartość (zwykle adres MAC)

Przykład formatu: 1eb527d6-e927-6511-9a03-0242ac130003

Jak działa UUID v6

  1. Oblicz aktualny znacznik czasu (interwały 100ns od 1582-10-15)
  2. Przearanżuj bity znacznika czasu dla lepszego sortowania (najbardziej znaczące bity jako pierwsze)
  3. Pobierz/incrementuj 14-bitową sekwencję zegara (dla unikalności, jeśli zegar cofa się)
  4. Pobierz 48-bitowe ID węzła (zwykle z adresu MAC)
  5. Ustaw bity wersji (0110) i wariantu (10)
  6. Złóż jako 32 cyfry szesnastkowe z myślnikami: format 8-4-4-4-12

Zalety i uwagi

AdvantagesConsiderations
  • Sortowalne leksykograficznie
  • Osadzony czas utworzenia
  • Wysoka wydajność generowania
  • Generowanie rozproszone
  • Obawy dotyczące prywatności adresu MAC
  • Problemy z synchronizacją zegara
  • Bardziej przewidywalne niż losowe UUID
  • Status specyfikacji roboczej

Struktura UUID v6

BitsContent
0-47Wysokie 48 bitów znacznika czasu
48-51Wersja (0110 dla v6)
52-59Niskie 8 bitów znacznika czasu
60-63Wysokie 4 bity znacznika czasu
64-65Wariant (10 dla RFC4122)
66-79Sekwencja zegara (14 bitów)
80-127ID węzła (48 bitów)

UUID v6 a inne wersje

VersionNa podstawiePrzypadek użyciaPrivacy
UUID v1Czas + MACID uporządkowane czasowo⚠️ Ujawnia MAC
UUID v3Namespace + MD5Deterministyczne ID✅ Prywatne
UUID v4RandomBezpieczne losowe ID✅ Prywatne
UUID v5Namespace + SHA-1Deterministyczne ID✅ Prywatne
UUID v6Czas (przearanżowany)ID sortowalne⚠️ Ujawnia MAC
UUID v7Czas + losoweID sortowalne✅ Prywatne

Typowe przypadki użycia

  • Klucze baz danych sortowalne czasowo: Do sortowania chronologicznego
  • Bazy danych rozproszone: Z indeksowaniem uporządkowanym czasowo
  • Wpisy dziennika: Z naturalnym porządkiem chronologicznym
  • Ścieżki audytu: Z osadzonymi znacznikami czasu
  • Kolejkowanie wiadomości: Do przetwarzania opartego na czasie
  • Rekordy transakcji: Z uporządkowaniem chronologicznym

Najczęściej zadawane pytania

Jaka jest różnica między UUID v1 a v6?

UUID v6 przearanżowuje bity znacznika czasu z UUID v1, aby był naturalnie sortowalny w porządku leksykograficznym. Zawartość jest identyczna jak w v1, tylko przearanżowana.

Czy UUID v6 jest oficjalnym standardem?

UUID v6 jest obecnie specyfikacją roboczą w proponowanym dokumencie RFC 4122bis. Nie jest jeszcze oficjalnym standardem RFC, ale jest implementowany w wielu bibliotekach UUID.

Czy mogę wyodrębnić czas utworzenia z UUID v6?

Tak. Komponent znacznika czasu można wyodrębnić z bitów 0-59 i przekształcić z powrotem na wartość daty i czasu.

Czy UUID v6 są sortowalne według czasu utworzenia?

Tak. W przeciwieństwie do v1, UUID v6 umieszcza bity znacznika czasu w kolejności od najbardziej do najmniej znaczącego, co pozwala na bezpośrednie porównanie leksykograficzne (łańcuchowe) odpowiadające porządkowi chronologicznemu.

Czy UUID v6 ujawnia mój adres MAC?

Domyślnie tak. Podobnie jak UUID v1, większość implementacji używa adresu MAC jako ID węzła. Implementacje skoncentrowane na prywatności mogą zamiast tego używać losowych ID węzła.

Resources