Практикум: UUIDv7 как ключ партиционирования PostgreSQL¶
Этот вариант сохраняет PRIMARY KEY (id), поскольку таблица партиционирована непосредственно по id. Используются PostgreSQL 17 и pg-partsmith 1.8.0. Диапазоны за июль–октябрь 2026 года указаны явно, поэтому результат не зависит от даты запуска.
Нужны Docker и uv. Выполните команду из этого каталога:
| Проверка | Результат |
|---|---|
| Месячные границы UUIDv7 | Соседние границы совпадают; нижняя граница сентября попадает в сентябрь |
| Августовский диапазон id | План EXPLAIN в JSON читает одну партицию |
Августовский диапазон created_at |
План читает все четыре партиции |
| Старые и будущие id вне подготовленных диапазонов | Вставка отклоняется с SQLSTATE 23514 |
| UUIDv4 с начальными байтами, попадающими в диапазон | Распределение по диапазонам его принимает; отдельный CHECK версии UUID отклоняет |
Сентябрьский UUIDv7 со значением created_at за 2020 год |
Строка попадает в сентябрь |
| Поздняя июльская строка после отсоединения июля | Запись отклоняется: подходящей партиции нет |
В uuid_flow.py находятся конфигурация и запрос из статьи. Функция sample_uuid7() написана для теста: она выставляет биты версии и варианта для заданных дат; это не рекомендация генератора id для продакшена. UUIDv7BoundaryCodec кодирует границы диапазонов, а не создаёт новые уникальные id событий.
Файл зависимостей и функции запуска БД и чтения планов находятся в соседнем практикуме миграции. При копировании примера сохраните оба каталога. Контейнер PostgreSQL удаляется при выходе. Июль отсоединяется явной командой для проверки поздних событий; автоматическое обслуживание разобрано в отдельной статье.