Hacker News Digest

23 октября 2026 г. в 16:39 • alexsci.com • ⭐ 118 • 💬 102

Original • HN

#collision-resistance#monotonicity#python#rfc-9562#timestamp#uuid#uuidv7

UUIDv7: Timestamps aren’t time-ordered and other oddities

UUIDv7 часто рекламируют за три свойства: монотонно возрастающие идентификаторы, встроенная метка времени создания и невозможность угадать ID. На деле ни одно из них строго не гарантируется. Единственное, что UUIDv7 действительно обеспечивает, — уникальность и устойчивость к коллизиям. Остальное зависит от конкретной реализации, и разные совместимые с RFC 9562 генераторы могут нарушать эти свойства вплоть до крайности.

Главная причина — свобода, которую RFC даёт разработчикам. Спецификация прямо разрешает изменять поле метки времени и не требует, чтобы оно совпадало с реальным временем: «реализации МОГУТ увеличивать метку времени опережая фактическое время». Это нужно для поддержания монотонности при переполнении счётчика. Яркий пример — стандартная библиотека Python: если часы системы откатятся назад, генератор может «застрять» и уйти вперёд по времени на произвольную величину, пока реальные часы не догонят его. Тогда метка перестаёт отражать момент создания объекта, а при долгом отставании начинаются переполнения счётчика.

Практический вывод: UUIDv7 — это смесь идей, а не набор гарантий. При выборе реализации стоит спрашивать, какие свойства она реально обещает, при каких условиях и как сильно её ID поддаются угадыванию.