Впровадила часовпорядковані ідентифікатори UUID v7 (PostgreSQL 18) як ключі сутностей, щоб зменшити фрагментацію індексів B‑tree та пришвидшити запити.
Роботу виконано: 2025
впорядковані в часі ключі тримають індекси щільними
Ситуація. Кожній сутності потрібен унікальний id, і рефлекторний вибір — випадковий UUID. Проблема в тому, що випадкові id розкидані по всьому B‑tree‑індексу. Вставки розсіюються, індекс фрагментується, і зі зростанням таблиць за це платять і записи, і range‑скани. На платформі, яка й далі має зростати, це повільна витрата, яку краще не закладати в архітектуру.
Завдання. Зберегти глобальну унікальність UUID, але позбутися фрагментації, яку спричиняє випадковість.
Дія. Стандартом став UUID v7 — часово впорядкований формат: перші біти є міткою часу, тож нові рядки вбудовуються в індекс, а не розсипають його. PostgreSQL 18 підтримує це нативно як uuidv7(), обгорнуте в невелику функцію uuid_generate_v7(), щоб той самий виклик коректно поводився на Azure Flexible Server, і зроблено значенням за замовчуванням для первинних ключів сутностей у всій схемі. Нічого екзотичного; це саме те рішення, яке дешеве, якщо прийняти його рано, і болісне, якщо доводиться впроваджувати заднім числом.
Результат. Id лишилися глобально унікальними, індекс перестав фрагментуватися так, як це роблять випадкові UUID, а часово впорядковані вставки й range‑запити стали швидшими — рівномірно, на всіх таблицях, без потреби комусь про це думати. Як бонус, кожна сутність отримує ключ, за яким можна безкоштовно сортувати за часом.
Погляньте назад на Спроєктувала рівень даних PostgreSQL, побудований насамперед на функціях — 1 275 збережених функцій у 34 схемах — щоб кожне читання й кожен запис проходили через функцію, на яку база даних може видати права, а не через таблицю. Читати далі: Впровадила deep‑merge на основі каталогу для збережених JSON‑налаштувань, запобігши збоям через відсутні ключі при еволюції схеми. Або перегляньте повне портфоліо.
Клієнтам ми розповідаємо це як Швидші відповіді завдяки кращому вибору ключа — подивитися разом з іншими кейсами.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.