Зачем вместо числового ID
- Не раскрывает количество записей в таблице (
/users/1 vs /users/550e8400-…) - Можно генерировать на клиенте или в распределённой системе без обращения к БД
- Нет конфликтов при слиянии данных из нескольких СУБД
Версии
- UUID v4 — полностью случайный. Наиболее распространён
- UUID v7 — включает timestamp, поэтому сортируется хронологически. Лучше для первичных ключей в БД (меньше фрагментации индекса)
Недостаток
UUID v4 в качестве первичного ключа InnoDB вызывает фрагментацию B-Tree индекса из-за случайного порядка вставки. UUID v7 или ULID решают эту проблему.