Сгенерированные столбцы в Postgres: подводные камни и лучшие практики
При использовании сгенерированных столбцов PostgreSQL в таблицах, подлежащих репликации, следует учитывать ряд важных аспектов. Эти подводные камни могут повлиять на процесс репликации и согласованность данных в целевых системах.
Проблема с вычисляемыми столбцами
-
Не публикуются через
pgoutput: Вычисляемые столбцы не публикуются через логический плагин репликацииpgoutput. Это означает, что при репликации данных из PostgreSQL в другую систему значения вычисляемых столбцов не включаются в поток репликации. -
Проблемы с первичными ключами: Если вычисляемый столбец является частью вашего первичного ключа, это может вызвать проблемы с дедупликацией на стороне назначения. Поскольку значения вычисляемых столбцов не реплицируются, целевая система не будет иметь необходимой информации для корректной идентификации и дедупликации строк.
-
Проблемы с изменениями схемы: Если вы добавите вычисляемый столбец в таблицу, которая уже реплицируется, новый столбец не будет заполнен на стороне назначения, так как Postgres не предоставляет нам сообщение RelationMessage для нового столбца. Если затем вы добавите новый невычисляемый столбец в ту же таблицу, ClickPipe, пытаясь согласовать схему, не сможет найти вычисляемый столбец на стороне назначения, что приведет к сбою процесса репликации.
Рекомендации по применению лучших практик
Чтобы обойти эти ограничения, придерживайтесь следующих рекомендаций:
-
Воссоздавайте вычисляемые столбцы на стороне назначения: Вместо того чтобы полагаться на репликацию для обработки вычисляемых столбцов, рекомендуется воссоздавать эти столбцы на стороне назначения с помощью таких инструментов, как dbt (data build tool), или других механизмов преобразования данных.
-
Избегайте использования вычисляемых столбцов в первичных ключах: При проектировании таблиц, которые будут реплицироваться, лучше не включать вычисляемые столбцы в состав первичного ключа.
Предстоящие улучшения интерфейса
В ближайших версиях мы планируем добавить UI, который поможет вам в следующем:
-
Определение таблиц с вычисляемыми столбцами: В UI появится возможность определять таблицы, которые содержат вычисляемые столбцы. Это поможет вам понять, какие таблицы затронуты этой проблемой.
-
Документация и лучшие практики: В UI будут представлены лучшие практики использования вычисляемых столбцов в реплицируемых таблицах, включая рекомендации по тому, как избегать распространённых ошибок.