UUID v4 и v7: случайный или по времени
v4 случайный. v7 несёт миллисекунды. v7 для индексов, v4 если время создания светить нельзя.
v4 почти целиком случайные 128 бит. Вставки в B-tree размазаны. Это нормально для небольших таблиц и id на чеке.
v7 начинается с timestamp. Новые строки ближе на диске. Это помогает ключу с частыми вставками. Платите тем, что по id видно, когда его выпустили.
Обе строки по 36 символов. В одной колонке UUID версии можно мешать. Выпустите оба в студии и смотрите третью группу: 4 против 7.
Берите v4, если идентификатор не должен выдавать время создания. Берите v7, если индекс базы должен идти по порядку создания и вы согласны, что время публично. Оба — 128 бит, оба годятся как первичный ключ. v4 не сортируется. v7 сортируется, пока часы не прыгнут. Генератор умеет оба; здесь только выбор.
| Признак | UUID v4 | UUID v7 |
|---|---|---|
| Сортировка по времени | Нет — вставки разбросаны | Да — префикс Unix ms |
| Светит время создания | Нет | По ID можно оценить, когда выпущен |
| Где лучше | Публичные ID, чеки | Первичные ключи, индексы с частой записью |
Частые вопросы
Что в новый API?
v7 если id внутренний. v4 если id публичный и не должен сортироваться по времени.
Совместим с GUID?
Да. Тот же layout, другой ниббл версии.
