Генератор UUID версії 6 (Упорядкована мітка часу)

Генеруйте UUID з упорядкованими часовими мітками, оптимізовані для індексації баз даних

Спробуйте ці приклади:

Що таке UUID v6?

UUID версії 6 - це 128-бітний ідентифікатор на основі часу (рядок із 36 символів), запропонований як удосконалення UUID v1. Він складається з:

  • Переупорядкований часовий штамп: 60-бітний часовий штамп від найбільш до найменш значущих бітів
  • Послідовність годинника: 14-бітний лічильник для налаштувань годинника
  • ID вузла: 48-бітне значення (зазвичай MAC-адреса)

Приклад формату: 1eb527d6-e927-6511-9a03-0242ac130003

Як працює UUID v6

  1. Обчислення поточного часового штампу (інтервали 100нс з 15-10-1582)
  2. Переупорядкування бітів часового штампу для кращого сортування (спочатку найбільш значущі біти)
  3. Отримання/збільшення 14-бітної послідовності годинника (для унікальності, якщо годинник рухається назад)
  4. Отримання 48-бітного ID вузла (зазвичай з MAC-адреси)
  5. Встановлення бітів версії (0110) та бітів варіанту (10)
  6. Складання як 32 шістнадцяткових цифр з дефісами: формат 8-4-4-4-12

Переваги та міркування

ПеревагиМіркування
  • Лексикографічне сортування
  • Вбудований час створення
  • Високопродуктивна генерація
  • Розподілена генерація
  • Проблеми конфіденційності MAC-адреси
  • Проблеми синхронізації годинника
  • Більш передбачуваний, ніж випадкові UUID
  • Статус чернетки специфікації

Структура UUID v6

БітиВміст
0-47Верхні 48 біт часового штампу
48-51Версія (0110 для v6)
52-59Нижні 8 біт часового штампу
60-63Верхні 4 біти часового штампу
64-65Варіант (10 для RFC4122)
66-79Послідовність годинника (14 біт)
80-127ID вузла (48 біт)

UUID v6 у порівнянні з іншими версіями

ВерсіяНа основіВаріант використанняКонфіденційність
UUID v1Час + MACID з часовим порядком⚠️ Розкриває MAC
UUID v3Простір імен + MD5Детерміновані ID✅ Приватний
UUID v4ВипадковийБезпечні випадкові ID✅ Приватний
UUID v5Простір імен + SHA-1Детерміновані ID✅ Приватний
UUID v6Час (переупорядкований)ID, що сортуються⚠️ Розкриває MAC
UUID v7Час + випадковийID, що сортуються✅ Приватний

Поширені випадки використання

  • Ключі бази даних, які сортуються за часом: Для хронологічного сортування
  • Розподілені бази даних: З індексацією, впорядкованою за часом
  • Записи журналу: З природним хронологічним порядком
  • Аудиторські сліди: З вбудованими часовими штампами
  • Черги повідомлень: Для обробки на основі часу
  • Записи транзакцій: З хронологічним впорядкуванням

Часті запитання

Яка різниця між UUID v1 та v6?

UUID v6 переупорядковує біти часового штампу з UUID v1, щоб зробити його природно сортованим у лексикографічному порядку. Вміст ідентичний v1, лише переупорядкований.

Чи є UUID v6 офіційним стандартом?

UUID v6 наразі є чернеткою специфікації в запропонованому документі RFC 4122bis. Він ще не є офіційним стандартом RFC, але реалізований у багатьох бібліотеках UUID.

Чи можу я вилучити час створення з UUID v6?

Так. Компонент часового штампу можна вилучити з бітів 0-59 і перетворити назад у значення дати та часу.

Чи можуть UUID v6 сортуватися за часом створення?

Так. На відміну від v1, UUID v6 розміщує біти часового штампу в порядку від найбільш до найменш значущих, дозволяючи лексикографічне (рядкове) порівняння відповідати хронологічному порядку.

Чи розкриває UUID v6 мою MAC-адресу?

За замовчуванням, так. Як і UUID v1, більшість реалізацій використовують MAC-адресу для ID вузла. Реалізації, орієнтовані на конфіденційність, можуть використовувати випадкові ID вузлів замість цього.

Ресурси