Комментарии 7
Нет информации что он всегда больше предыдущего или для PG это не актуально при фрагментации индексов?
сочетает в себе ... и упорядоченность по моменту времени генерации
Нарушение строгой монотонности идентификаторов UUIDv7 возможно только при экстремально высокой параллельной нагрузке, когда несколько процессов БД генерируют идентификаторы при одном и том же значении встроенного таймстемпа (с разрешением 250 наносекунд). Это крайне маловероятно. Но даже в этом случае все такие идентификаторы с близкими значениями будут располагаться на одной странице индекса (в худшем случае - на соседних), не вызывая значительной фрагментации.
Незначительные нарушения монотонности не влияют на производительность БД.
В конце сентября 2025 года вышла СУБД PostgreSQL 18
Почему не написать сегодня, 25 сентября вышла...?
Подскажите, пожалуйста, а в чём смысл генерации таких ключей на уровне бд?
Я жил с представлением о том, uuid7 используется как раз для многоинстансовых систем, где каждый состоятельно генерит идентификаторы, а потом уже они сливаются в бд без конфликтов и с возможностью обеспечения порядка
Генерация UUIDv7 в БД - это возможность избавиться от автоинкремента со всеми его недостатками (см. аж 7 недостатков в тексте этой новости). UUIDv7 - это просто находка для хранилищ данных (уменьшается хаос, легче проходит адаптация к изменениям, предотвращаются ошибки, интеграция систем стоновится "бесшовной" и т.д.) и для баз данных временных рядов.
Кроме того, генерация UUIDv7 на стороне базы данных нужна в для обеспечения строгой монотонности идентификаторов. "Эта монотонность в течение миллисекунды нужна для поиска причин ошибок, пагинации по ключу (keyset pagination), поиска в логах, использования в БД временных рядов и т.п."
Авторы и контрибьюторы стандарта RFC 9562, котрый ввел UUIDv7, в первую очередь думали о генерации на стороне базы данных, и лишь попутно - о распределенных системах. К сожалению, в СМИ и на форумах много мифов о UUIDv7, в частности, что UUIDv7 это в основном про генерацию на клиентах. Вот статья (на английском), которая развеивает самые популярные мифы.
В PostgreSQL появилась встроенная функция генерации UUIDv7 для первичных ключей