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

CDC из DynamoDB в ClickHouse

Experimental feature. Learn more.

На этой странице описывается, как настроить CDC из DynamoDB в ClickHouse с использованием ClickPipes. Для этой интеграции предусмотрены 2 компонента:

  1. Начальный снимок через S3 ClickPipes
  2. Обновления в реальном времени через Kinesis ClickPipes

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

1. Настройка Kinesis Stream

Сначала вам нужно включить поток Kinesis на вашей таблице DynamoDB, чтобы захватывать изменения в реальном времени. Мы хотим сделать это перед созданием снимка, чтобы избежать пропуска данных. Найдите руководство AWS, находящееся здесь.

2. Создание снимка

Далее мы создадим снимок таблицы DynamoDB. Это можно сделать через экспорт AWS в S3. Найдите руководство AWS, находящееся здесь. Вы должны сделать "Полный экспорт" в формате JSON DynamoDB.

3. Загрузка снимка в ClickHouse

Создание необходимых таблиц

Данные снимка из DynamoDB будут выглядеть примерно так:

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

Мы создадим три таблицы:

  1. Таблица для хранения необработанных данных из DynamoDB
  2. Таблица для хранения окончательных развернутых данных (конечная таблица)
  3. Материализованное представление для развертывания данных

Для приведенных выше данных DynamoDB таблицы ClickHouse будут выглядеть следующим образом:

Существуют некоторые требования к целевой таблице:

  • Эта таблица должна быть таблицей ReplacingMergeTree
  • Таблица должна содержать столбец version
    • На следующих этапах мы будем сопоставлять поле ApproximateCreationDateTime из потока Kinesis со столбцом version.
  • Таблица должна использовать ключ раздела в качестве ключа сортировки (указывается с помощью ORDER BY)
    • Строки с одинаковым ключом сортировки будут дедуплицироваться на основе столбца version.

Создание ClickPipe для снимка

Теперь вы можете создать ClickPipe для загрузки данных снимка из S3 в ClickHouse. Следуйте руководству по ClickPipe для S3 здесь, но используйте следующие настройки:

  • Путь загрузки: Вам нужно будет найти путь к экспортированным json-файлам в S3. Путь будет выглядеть примерно так:
  • Формат: JSONEachRow
  • Таблица: Ваша таблица снимка (например, default.snapshot в приведенном выше примере)

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

4. Создание ClickPipe Kinesis

Теперь мы можем настроить ClickPipe Kinesis для захвата изменений в реальном времени из потока Kinesis. Следуйте руководству по ClickPipe Kinesis здесь, но используйте следующие настройки:

  • Поток: Поток Kinesis, использованный на шаге 1
  • Таблица: Ваша целевая таблица (например, default.destination в приведенном выше примере)
  • Развернуть объект: true
  • Сопоставления столбцов:
    • ApproximateCreationDateTime: version
    • Сопоставьте другие поля с соответствующими столбцами назначения, как показано ниже

5. Очистка (необязательно)

После завершения ClickPipe снимка вы можете удалить таблицу снимка и материализованное представление.