Генератор UUID v7
Генерация идентификаторов UUID v7 со встроенными временными метками Unix Epoch, массовой генерацией и параметрами форматирования
Ввод
Вывод
Документация
Что такое UUID v7?
UUID v7 — это новейшая версия универсальных уникальных идентификаторов, определённая в RFC 9562. В отличие от более старых версий, таких как UUID v4 (полностью случайный) или UUID v1 (использует MAC-адрес), UUID v7 встраивает 48-битную временну́ю метку Unix Epoch в миллисекундах непосредственно в идентификатор. Это делает значения UUID v7 естественно сортируемыми по времени создания — значительное преимущество для индексирования баз данных, распределённых систем и журналирования событий, где важен хронологический порядок.
Поскольку UUID v7 не использует MAC-адреса, он лишён проблем с конфиденциальностью, характерных для UUID v1. Оставшиеся биты после временно́й метки и полей версии/варианта заполняются случайными или монотонными данными, обеспечивая уникальность даже при генерации нескольких UUID в пределах одной миллисекунды.
Структура UUID v7
UUID v7 состоит из 128 бит, организованных следующим образом:
- Биты 0–47: 48-битная беззнаковая временна́я метка Unix Epoch в миллисекундах в формате big-endian
- Биты 48–51: 4-битное поле версии, установленное в
0111(7) - Биты 52–63: 12 бит случайных или монотонных данных для субмиллисекундной точности или уникальности
- Биты 64–65: 2-битное поле варианта, установленное в
10(RFC 9562) - Биты 66–127: 62 бита случайных или монотонных данных для дополнительной уникальности
Такая структура означает, что UUID, сгенерированные позже по времени, всегда будут сортироваться после более ранних на уровне миллисекунд, что делает их идеальными в качестве первичных ключей в базах данных с B-tree индексами.
Описание инструмента
Этот генератор UUID v7 создаёт UUID версии 7, соответствующие RFC 9562, с визуальной разбивкой встроенной временно́й метки. Генерируйте от одного до 100 UUID за раз, переключайтесь между форматированием в верхнем и нижнем регистре, а также выбирайте, включать ли дефисы. Инструмент также извлекает и отображает встроенную временну́ю метку Unix Epoch из первого сгенерированного UUID, позволяя проверить время создания, закодированное в каждом идентификаторе.
Примеры
| Формат | Пример вывода |
|---|---|
| Стандартный | 019544a2-3b4c-7d8e-9f01-2a3b4c5d6e7f |
| Верхний регистр | 019544A2-3B4C-7D8E-9F01-2A3B4C5D6E7F |
| Без дефисов | 019544a23b4c7d8e9f012a3b4c5d6e7f |
Возможности
- Массовая генерация: генерация от 1 до 100 значений UUID v7 за раз с помощью ползунка количества
- Переключение регистра: переключение между выводом в нижнем и верхнем регистре
- Переключение дефисов: включение или удаление дефисов для компактных форматов
- Извлечение временно́й метки: автоматически отображает встроенную временну́ю метку Unix Epoch из сгенерированного UUID
- Поддержка загрузки: экспорт сгенерированных UUID в текстовый файл для пакетного использования
Варианты использования
- Генерация сортируемых по времени первичных ключей для крупных баз данных, где важны производительность вставки и локальность данных
- Создание монотонно возрастающих идентификаторов для распределённых систем потоковой передачи событий, таких как Kafka или Pulsar
- Замена UUID v4 в приложениях, которым необходима хронологическая сортировка без отдельного столбца с временно́й меткой
UUID v7 в сравнении с другими версиями
| Версия | На основе времени | Сортируемый | Безопасность конфиденциальности | Случайность |
|---|---|---|---|---|
| v1 | Да | Нет | Нет (использует MAC) | Низкая |
| v4 | Нет | Нет | Да | Высокая |
| v6 | Да | Да | Нет (использует MAC) | Низкая |
| v7 | Да | Да | Да | Средняя |
UUID v7 сочетает в себе лучшие качества: сортируемость на основе времени без раскрытия аппаратных идентификаторов, с достаточной долей случайности для предотвращения коллизий в распределённых узлах.
Описание параметров
- Количество (1–100): сколько значений UUID v7 генерировать за один раз. Все UUID в пакете имеют приблизительно одинаковую временну́ю метку, но отличаются случайными битами.
- Верхний регистр: при включении выводит UUID с символами шестнадцатеричного кода в верхнем регистре (A–F вместо a–f).
- Дефисы: при включении (по умолчанию) UUID включают стандартную группировку с дефисами 8-4-4-4-12. Отключите для получения компактной 32-символьной шестнадцатеричной строки.
Часто задаваемые вопросы
Могут ли UUID v7 совпадать?
Коллизии крайне маловероятны. Даже в пределах одной миллисекунды 74 бита случайных/монотонных данных обеспечивают более 18 квинтиллионов возможных комбинаций. Библиотека uuid также использует монотонные счётчики для гарантии уникальности в рамках одного процесса.
Совместим ли UUID v7 с UUID v4? Да. UUID v7 использует тот же 128-битный формат 8-4-4-4-12 и является допустимым везде, где принимаются UUID. Существующие столбцы UUID, парсеры и валидаторы работают без изменений.
Когда следует использовать UUID v7 вместо UUID v4? Используйте UUID v7, когда ваш сценарий использования выигрывает от ключей, упорядоченных по времени, — например, в качестве первичных ключей базы данных, где производительность B-tree индекса улучшается при последовательных вставках. Используйте UUID v4, когда порядок не важен и вам нужна максимальная случайность.