Все потоки
Поиск
Написать публикацию
Обновить

Комментарии 7

Нет информации что он всегда больше предыдущего или для PG это не актуально при фрагментации индексов?

сочетает в себе ... и упорядоченность по моменту времени генерации

Нарушение строгой монотонности идентификаторов UUIDv7 возможно только при экстремально высокой параллельной нагрузке, когда несколько процессов БД генерируют идентификаторы при одном и том же значении встроенного таймстемпа (с разрешением 250 наносекунд). Это крайне маловероятно. Но даже в этом случае все такие идентификаторы с близкими значениями будут располагаться на одной странице индекса (в худшем случае - на соседних), не вызывая значительной фрагментации.

Незначительные нарушения монотонности не влияют на производительность БД.

В конце сентября 2025 года вышла СУБД PostgreSQL 18

Почему не написать сегодня, 25 сентября вышла...?

Спасибо за уточнение!

Подскажите, пожалуйста, а в чём смысл генерации таких ключей на уровне бд?

Я жил с представлением о том, uuid7 используется как раз для многоинстансовых систем, где каждый состоятельно генерит идентификаторы, а потом уже они сливаются в бд без конфликтов и с возможностью обеспечения порядка

Генерация UUIDv7 в БД - это возможность избавиться от автоинкремента со всеми его недостатками (см. аж 7 недостатков в тексте этой новости). UUIDv7 - это просто находка для хранилищ данных (уменьшается хаос, легче проходит адаптация к изменениям, предотвращаются ошибки, интеграция систем стоновится "бесшовной" и т.д.) и для баз данных временных рядов.

Кроме того, генерация UUIDv7 на стороне базы данных нужна в для обеспечения строгой монотонности идентификаторов. "Эта монотонность в течение миллисекунды нужна для поиска причин ошибок, пагинации по ключу (keyset pagination), поиска в логах, использования в БД временных рядов и т.п."

Авторы и контрибьюторы стандарта RFC 9562, котрый ввел UUIDv7, в первую очередь думали о генерации на стороне базы данных, и лишь попутно - о распределенных системах. К сожалению, в СМИ и на форумах много мифов о UUIDv7, в частности, что UUIDv7 это в основном про генерацию на клиентах. Вот статья (на английском), которая развеивает самые популярные мифы.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости