Генератор UUID v7

Генерируйте уникальные идентификаторы UUID версии 7: они содержат метку времени и потому естественным образом сортируются в хронологическом порядке — удобно для первичного ключа в базе данных. Расчёт опирается на криптографический API вашего браузера, на сервер ничего не отправляется.

Результаты

Как это работает

В отличие от полностью случайного UUID v4, в UUID v7 первые 48 бит идентификатора занимает Unix-время в миллисекундах, за которым следуют 74 криптографически стойких случайных бита. В результате два UUID v7, созданных с разницей в несколько секунд, остаются рядом в лексикографическом порядке, что повышает производительность вставки в индекс базы данных (B-tree) по сравнению с полностью разбросанным UUID v4.

Почему UUID v7 лучше UUID v4 в качестве первичного ключа?

Случайный UUID v4 вызывает сильную фрагментацию индексов B-tree при массовых вставках, потому что каждый новый идентификатор попадает в непредсказуемое место дерева. UUID v7, напротив, возрастает со временем, как обычный автоинкрементный идентификатор, и при этом сохраняет преимущество: его можно генерировать на стороне клиента без согласования с базой данных.

Можно ли узнать точную дату создания по UUID v7?

Можно извлечь метку времени в миллисекундах, закодированную в первых 48 битах, и таким образом получить примерные дату и время создания идентификатора (с точностью до миллисекунды). Если в вашем случае эта информация чувствительна, лучше использовать обычный UUID v4, который не раскрывает никаких временных данных.

Обработка на 100% локальная: каждый идентификатор вычисляется в вашем браузере с помощью crypto.getRandomValues, без каких-либо сетевых запросов.