Перейти к основному содержимому
Перейти к основному содержимому

Сгенерированные столбцы в Postgres: подводные камни и лучшие практики

При использовании сгенерированных столбцов PostgreSQL в таблицах, подлежащих репликации, следует учитывать ряд важных аспектов. Эти подводные камни могут повлиять на процесс репликации и согласованность данных в целевых системах.

Проблема с вычисляемыми столбцами

  1. Не публикуются через pgoutput: Вычисляемые столбцы не публикуются через логический плагин репликации pgoutput. Это означает, что при репликации данных из PostgreSQL в другую систему значения вычисляемых столбцов не включаются в поток репликации.

  2. Проблемы с первичными ключами: Если вычисляемый столбец является частью вашего первичного ключа, это может вызвать проблемы с дедупликацией на стороне назначения. Поскольку значения вычисляемых столбцов не реплицируются, целевая система не будет иметь необходимой информации для корректной идентификации и дедупликации строк.

  3. Проблемы с изменениями схемы: Если вы добавите вычисляемый столбец в таблицу, которая уже реплицируется, новый столбец не будет заполнен на стороне назначения, так как Postgres не предоставляет нам сообщение RelationMessage для нового столбца. Если затем вы добавите новый невычисляемый столбец в ту же таблицу, ClickPipe, пытаясь согласовать схему, не сможет найти вычисляемый столбец на стороне назначения, что приведет к сбою процесса репликации.

Рекомендации по применению лучших практик

Чтобы обойти эти ограничения, придерживайтесь следующих рекомендаций:

  1. Воссоздавайте вычисляемые столбцы на стороне назначения: Вместо того чтобы полагаться на репликацию для обработки вычисляемых столбцов, рекомендуется воссоздавать эти столбцы на стороне назначения с помощью таких инструментов, как dbt (data build tool), или других механизмов преобразования данных.

  2. Избегайте использования вычисляемых столбцов в первичных ключах: При проектировании таблиц, которые будут реплицироваться, лучше не включать вычисляемые столбцы в состав первичного ключа.

Предстоящие улучшения интерфейса

В ближайших версиях мы планируем добавить UI, который поможет вам в следующем:

  1. Определение таблиц с вычисляемыми столбцами: В UI появится возможность определять таблицы, которые содержат вычисляемые столбцы. Это поможет вам понять, какие таблицы затронуты этой проблемой.

  2. Документация и лучшие практики: В UI будут представлены лучшие практики использования вычисляемых столбцов в реплицируемых таблицах, включая рекомендации по тому, как избегать распространённых ошибок.