
Изменение структуры таблиц в PostgreSQL с помощью технологии DBMS_REDEFINITION
В любой бизнес-критичной системе возникает задача изменения структуры таблиц, например, добавление новых столбцов cо значением выражения, зависящего от других столбцов или превращение несекционированной таблицы в секционированную.
Если решать задачу реорганизации структуры больших таблиц стандартными средствами PostgresSQL, это вызовет большой downtime приложения — на всё время реорганизации таблица будет недоступна на запись, а в некоторых случаях и на чтение.
В докладе автор представит dbms_redefinition — расширение собственной разработки, которое реализует функциональность, аналогичную одноименному пакету в Oracle, позволяет снизить до минимума (near zero) downtime на период применения к БД прикладных обновлений, меняющих структуру таблиц.
В PostgreSQL данная технология отсутствует. Расширение pg_repack НЕ позволяет изменить структуру таблицы. Поэтому dbms_redefinition будет интересен всем пользователям СУБД, вне контекста миграции с Oracle. Я расскажу про использование пакета на примере реальной задачи, обсужу планы по развитию решения и добавление новой функциональности.