> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Интеграция Estuary и ClickHouse с помощью коннектора, использующего собственный протокол

# Прямая материализация из Estuary в ClickHouse

export const PartnerBadge = () => {
  return <div className="PartnerBadge">
            <div className="PartnerBadgeIcon">
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <polyline points="12.5 9.5 10 12 6 11 2.5 8.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <polyline points="4.54 4.41 8 3.5 11.46 4.41" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M2.15,3.78 L0.55,6.95 A0.5,0.5 0,0,0 0.77,7.62 L2.5,8.5 L4.54,4.41 L2.82,3.55 A0.5,0.5 0,0,0 2.15,3.78 Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M13.5,8.5 L15.23,7.62 A0.5,0.5 0,0,0 15.45,6.95 L13.85,3.78 A0.5,0.5 0,0,0 13.18,3.55 L11.46,4.41 Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M11.5,4.5 L9,4.5 L6.15,7.27 A0.5,0.5 0,0,0 6.24,8.05 C7.33,8.74 8.81,8.72 10,7.5 L12.5,9.5 L13.5,8.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <polyline points="7.75 13.5 5.15 12.85 3.5 11.67" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                </svg>
            </div>
            Партнерская интеграция
        </div>;
};

<PartnerBadge />

Estuary предоставляет коннектор прямой материализации для ClickHouse, использующий [собственный протокол ClickHouse](/docs/ru/concepts/features/interfaces/tcp) и [собственный формат ClickHouse](/docs/ru/reference/formats/Native).

Это позволяет Estuary:

* Материализовать данные как в самоуправляемые экземпляры ClickHouse, так и в ClickHouse Cloud
* Автоматически выполнять такие задачи, как создание таблиц и изменение схемы
* Поддерживать мягкое и жёсткое удаление
* Использовать `ReplacingMergeTree` для стандартных обновлений при слиянии или `MergeTree` для дельта-обновлений
* Обеспечивать семантику доставки exactly-once

Информацию о рабочем процессе ClickPipes см. в [интеграции Kafka ClickPipe от Estuary](/docs/ru/integrations/connectors/data-ingestion/community-integrations/estuary-clickpipes).

<div id="setup-guide">
  ## Руководство по настройке
</div>

**Предварительные требования**

Вам потребуются:

* [Аккаунт Estuary](https://dashboard.estuary.dev/register)
* Один или несколько [**capture**](https://docs.estuary.dev/concepts/captures/) в Estuary, получающих данные из нужных источников
* Самоуправляемый экземпляр ClickHouse или аккаунт ClickHouse Cloud
* Пользователь базы данных ClickHouse с учетными данными

<Steps>
  <Step title="Настройте ClickHouse для интеграции" id="1-configure-clickhouse">
    Чтобы настроить коннектор ClickHouse для Estuary, соберите информацию об экземпляре ClickHouse и настройте разрешения пользователя.

    1. Скопируйте конечную точку хоста базы данных.

       Используйте порт **9440**, если TLS включен, или **9000**, если TLS отключен.

       Хост и порт вместе образуют **адрес**, который необходимо указать в Estuary.

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

       Чтобы автоматически создавать таблицы и управлять ими, Estuary потребуются разрешения `CREATE`, `SELECT`, `INSERT` и другие для целевой базы данных, а также разрешения на обнаружение метаданных и управление партициями.

       Все необходимые разрешения можно предоставить, выполнив следующие SQL-команды и заменив `<database>` и `<user>` своими значениями:

       ```sql theme={null}
       -- Доступ к целевой базе данных: CREATE TABLE, DROP TABLE, SELECT, INSERT, TRUNCATE и т. д.
       GRANT ALL ON <database>.* TO <user>;

       -- Доступ к системным таблицам для обнаружения метаданных и управления партициями.
       -- Эти разрешения НЕ предоставляются указанным выше разрешением для базы данных.
       GRANT SELECT ON system.columns TO <user>;
       GRANT SELECT ON system.parts TO <user>;
       GRANT SELECT ON system.tables TO <user>;
       ```

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

       Для этого можно использовать политики уровня строк. Например:

       ```sql theme={null}
       CREATE ROW POLICY estuary_columns ON system.columns FOR SELECT USING database = '<database>' TO <user>;
       CREATE ROW POLICY estuary_parts ON system.parts FOR SELECT USING database = '<database>' TO <user>;
       CREATE ROW POLICY estuary_tables ON system.tables FOR SELECT USING database = '<database>' TO <user>;
       ```

    Затем перейдите в Estuary, чтобы завершить настройку.
  </Step>

  <Step title="Создайте материализацию Estuary" id="2-create-an-estuary-materialization">
    1. На панели мониторинга Estuary перейдите на страницу [Destinations](https://dashboard.estuary.dev/materializations).
    2. Нажмите **+ New Materialization**.
    3. Выберите коннектор **ClickHouse**.
    4. Заполните раздел **Materialization Details**:
       * Укажите уникальное имя материализации
       * Выберите плоскость данных (облачного провайдера и регион)
    5. Заполните раздел **Endpoint Config**, чтобы Estuary мог подключиться к экземпляру ClickHouse:

       * **Address:** хост и порт экземпляра
       * **Database:** имя целевой базы данных
       * **Authentication:** имя пользователя и пароль пользователя базы данных

       Также можно настроить необязательные параметры, например использование жёсткого удаления и режим SSL.
  </Step>

  <Step title="Настройте исходные collection" id="3-configure-source-collections">
    В разделе **Source Collections** выберите источники, которые нужно материализовать в ClickHouse.

    1. Свяжите существующий **capture** или добавьте отдельные collection данных для материализации в ClickHouse.
    2. При необходимости выберите collection данных из списка для дополнительной настройки. Доступны следующие параметры:
       * Выберите другое имя таблицы для collection
       * Выберите поведение слияния для collection (использовать ли режим дельта-обновлений)
       * Настройте выбор полей, чтобы определить, какие поля будут материализованы
    3. Когда настройка материализации данных в ClickHouse вас устроит, нажмите **Next**, а затем **Save and Publish**.

    Estuary начнет загружать исторические данные из выбранных collection в ClickHouse, а затем будет передавать обновления по мере их поступления.
  </Step>
</Steps>

<div id="additional-resources">
  ## Дополнительные ресурсы
</div>

Подробнее о настройке коннектора ClickHouse в Estuary см. в документации Estuary:

* См. [документацию Estuary по материализации ClickHouse](https://docs.estuary.dev/reference/Connectors/materialization-connectors/ClickHouse/).
* Помимо описанного в этих инструкциях рабочего процесса через интерфейс, настройкой конвейера Estuary можно управлять и через CLI. Подробнее о программной работе с Estuary см. в [руководствах Estuary по `flowctl`](https://docs.estuary.dev/guides/flowctl/ci-cd/).
