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

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

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

Проблема с сгенерированными колонками

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

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

Лучшие практики

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

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

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

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

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

  1. Идентификация таблиц с сгенерированными колонками: Интерфейс будет содержать функцию для идентификации таблиц, содержащих сгенерированные колонки. Это поможет пользователям понять, какие таблицы подвержены этой проблеме.

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