> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

> Страница с описанием важных моментов, которые следует учитывать при использовании вычисляемых столбцов PostgreSQL в таблицах, для которых настроена репликация

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

<div id="the-problem-with-generated-columns">
  ## Проблема с вычисляемыми столбцами
</div>

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

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

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

<div id="best-practices">
  ## Лучшие практики
</div>

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

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

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

<div id="upcoming-improvements-to-ui">
  ## Предстоящие улучшения интерфейса
</div>

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

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

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