Генератор UUID · форматUUID v1 — генератор и как он устроен

Первая версия — время с точностью до 100 наносекунд от 15 октября 1582 года плюс узел: исторически MAC-адрес сетевой карты. Время разрезано на части и записано младшими битами вперёд, поэтому строки v1, вопреки распространённому мнению, по времени не сортируются.

01Генератор02Устройство03Сравнение04Вопросы05Похожие
01

Генератор UUID v1

формат выбран — все настройки и проверка в полном генераторе
Количество
Регистр
Нажмите «Сгенерировать» — здесь появятся идентификаторы.
Все форматы, проверка и разбор UUID — в полном генераторе →
02

Как устроен: UUID v1

Образецc232ab00-9414-11ec-b3c8-9f6bdeced846
c232ab00
time_low: младшие 32 бита времени
9414
time_mid: средние 16 бит
1
версия: всегда 1
1ec
time_high: старшие 12 бит
b3c8
вариант и счётчик часов clock_seq
9f6bdeced846
узел: здесь случайный — у 9f стоит multicast-бит

Когда применять

  • Совместимость со старыми системами, которые ждут именно v1.
  • Новые проекты — нет: для времени внутри берите v7, он сортируется и не раскрывает машину.
  • Если нужен v1-совместимый формат с сортировкой — это v6, а не v1.

Чем отличается от соседей

Против v7: v1 точнее по времени, но его строки не упорядочены, а узел исторически раскрывал MAC-адрес машины. Против v6: v6 — те же 60 бит времени, переставленные от старших к младшим, поэтому сортируются. Наш генератор ставит случайный узел с multicast-битом, как требует RFC 9562: MAC браузеру недоступен, и выдавать случайные байты за адрес карты было бы неправдой.

03

Сравнение форматов

ФорматДлинаСлучайностьВремя внутриСортируетсяСтандарт
UUID v436122 битанетнетRFC 9562
UUID v73674 битамс, 48 битдаRFC 9562
UUID v136узел и счётчик100 нс, 60 битнетRFC 9562, устаревший
Nil UUID36нетнет—RFC 9562
NanoID21126 битнетнетбиблиотека, не RFC
ULID2680 битмс, 48 битдаспецификация ULID, не RFC
04

Частые вопросы

Время в v1 — 60 бит в интервалах по 100 наносекунд от 15 октября 1582 года, разрезанные на три части. Их нужно собрать в обратном порядке — сначала третью группу без цифры версии, потом вторую, потом первую — вычесть смещение до 1970 года и перевести в дату. Поле «Проверка» на странице генератора делает это автоматически.

Обновлено

«» добавлен в избранное