Введение
- PUSH передавать данные в ClickHouse с помощью стороннего ETL/ELT-инструмента или сервиса
- PULL получать данные из Redshift с помощью ClickHouse JDBC Bridge
- PIVOT использовать объектное хранилище S3 по схеме «сначала выгрузка, затем загрузка»
В этом руководстве Redshift используется как источник данных. Однако описанные здесь подходы к миграции не ограничиваются Redshift, и аналогичные шаги можно применить к любому совместимому источнику данных.
Передача данных из Redshift в ClickHouse по сценарию Push
Плюсы
- Можно использовать существующий каталог коннекторов ETL/ELT-инструментов.
- Встроенные возможности для синхронизации данных (логика append/overwrite/increment).
- Поддерживаются сценарии преобразования данных (например, см. наше руководство по интеграции с dbt).
Недостатки
- Вам потребуется настроить и поддерживать инфраструктуру ETL/ELT.
- В архитектуре появляется сторонний компонент, который может стать потенциальным узким местом с точки зрения масштабируемости.
Перенос данных из Redshift в ClickHouse методом Pull
INSERT INTO ... SELECT:
Преимущества
- Подходит для всех инструментов с поддержкой JDBC
- Элегантное решение, позволяющее выполнять запросы к нескольким внешним источникам данных прямо из ClickHouse
Минусы
- Требуется экземпляр ClickHouse JDBC Bridge, который может стать потенциальным узким местом с точки зрения масштабируемости
Хотя Redshift основан на PostgreSQL, использовать табличную функцию PostgreSQL или движок таблицы ClickHouse нельзя, поскольку ClickHouse требует PostgreSQL версии 9 или выше, а API Redshift основан на более ранней версии (8.x).
Руководство
1
Разверните ClickHouse JDBC Bridge
Разверните ClickHouse JDBC Bridge. Подробнее см. в нашем руководстве пользователя по JDBC для внешних источников данныхЕсли вы используете ClickHouse Cloud, ClickHouse JDBC Bridge нужно запускать в отдельной среде и подключаться к ClickHouse Cloud с помощью функции remoteSecure
2
Настройте источник данных Redshift
Настройте источник данных Redshift для ClickHouse JDBC Bridge. Например,/etc/clickhouse-jdbc-bridge/config/datasources/redshift.json 3
Выполняйте запросы к экземпляру Redshift из ClickHouse
После развертывания и запуска ClickHouse JDBC Bridge вы сможете выполнять запросы к экземпляру Redshift из ClickHouse4
Импортируйте данные из Redshift в ClickHouse
Ниже показано, как импортировать данные с помощью оператораINSERT INTO ... SELECTПеренос данных из Redshift в ClickHouse по схеме PIVOT с использованием S3
Плюсы
- И Redshift, и ClickHouse предоставляют широкие возможности интеграции с S3.
- Задействует уже имеющиеся возможности, такие как команда
UNLOADв Redshift и табличная функция S3 / движок таблицы в ClickHouse. - Легко масштабируется благодаря параллельному чтению и высокой пропускной способности ClickHouse при работе с S3.
- Позволяет использовать продвинутые сжатые форматы, такие как Apache Parquet.
Недостатки
- Процесс состоит из двух этапов (выгрузка из Redshift, затем загрузка в ClickHouse).
Руководство
1
2
Создайте таблицу в ClickHouse
Создайте таблицу в ClickHouse:CREATE TABLE ... EMPTY AS SELECT:3
Загрузите файлы S3 в ClickHouse
Загрузите файлы S3 в ClickHouse с помощью оператораINSERT INTO ... SELECT:В этом примере в качестве промежуточного формата использовался CSV. Однако для production-нагрузок мы рекомендуем Apache Parquet как лучший вариант для крупных миграций, поскольку он поддерживает сжатие, помогает сократить затраты на хранение и уменьшает время передачи данных. (По умолчанию каждая группа строк сжимается с помощью SNAPPY). ClickHouse также использует столбцовую организацию Parquet для ускорения ингестии данных.