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

Введение

Amazon Redshift — популярное облачное решение для хранилищ данных в составе Amazon Web Services. В этом руководстве рассматриваются различные подходы к миграции данных из экземпляра Redshift в ClickHouse. Мы разберём три варианта: Со стороны экземпляра ClickHouse можно:
  1. PUSH передавать данные в ClickHouse с помощью стороннего ETL/ELT-инструмента или сервиса
  2. PULL получать данные из Redshift с помощью ClickHouse JDBC Bridge
  3. PIVOT использовать объектное хранилище S3 по схеме «сначала выгрузка, затем загрузка»
В этом руководстве Redshift используется как источник данных. Однако описанные здесь подходы к миграции не ограничиваются Redshift, и аналогичные шаги можно применить к любому совместимому источнику данных.

Передача данных из Redshift в ClickHouse по сценарию Push

В сценарии Push используется сторонний инструмент или сервис (либо собственный код, либо ETL/ELT) для отправки данных в ваш экземпляр ClickHouse. Например, можно использовать такое ПО, как Airbyte, чтобы переносить данные из вашего экземпляра Redshift (как источника) в ClickHouse (как пункт назначения) (см. наше руководство по интеграции с Airbyte)

Плюсы

  • Можно использовать существующий каталог коннекторов ETL/ELT-инструментов.
  • Встроенные возможности для синхронизации данных (логика append/overwrite/increment).
  • Поддерживаются сценарии преобразования данных (например, см. наше руководство по интеграции с dbt).

Недостатки

  • Вам потребуется настроить и поддерживать инфраструктуру ETL/ELT.
  • В архитектуре появляется сторонний компонент, который может стать потенциальным узким местом с точки зрения масштабируемости.

Перенос данных из Redshift в ClickHouse методом Pull

В сценарии Pull используется ClickHouse JDBC Bridge, который позволяет напрямую подключаться к кластеру Redshift из экземпляра ClickHouse и выполнять запросы INSERT INTO ... SELECT:

Преимущества

  • Подходит для всех инструментов с поддержкой JDBC
  • Элегантное решение, позволяющее выполнять запросы к нескольким внешним источникам данных прямо из ClickHouse

Минусы

  • Требуется экземпляр ClickHouse JDBC Bridge, который может стать потенциальным узким местом с точки зрения масштабируемости
Хотя Redshift основан на PostgreSQL, использовать табличную функцию PostgreSQL или движок таблицы ClickHouse нельзя, поскольку ClickHouse требует PostgreSQL версии 9 или выше, а API Redshift основан на более ранней версии (8.x).

Руководство

Чтобы использовать этот вариант, необходимо настроить ClickHouse JDBC Bridge. ClickHouse JDBC Bridge — это автономное Java-приложение, которое обеспечивает подключение по JDBC и выступает в роли прокси между экземпляром ClickHouse и источниками данных. В этом руководстве мы использовали заранее заполненный экземпляр Redshift с примером базы данных.
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 из ClickHouse
4

Импортируйте данные из Redshift в ClickHouse

Ниже показано, как импортировать данные с помощью оператора INSERT INTO ... SELECT

Перенос данных из Redshift в ClickHouse по схеме PIVOT с использованием S3

В этом сценарии мы экспортируем данные в S3 в промежуточном формате PIVOT, а на втором этапе загружаем их из S3 в ClickHouse.

Плюсы

  • И Redshift, и ClickHouse предоставляют широкие возможности интеграции с S3.
  • Задействует уже имеющиеся возможности, такие как команда UNLOAD в Redshift и табличная функция S3 / движок таблицы в ClickHouse.
  • Легко масштабируется благодаря параллельному чтению и высокой пропускной способности ClickHouse при работе с S3.
  • Позволяет использовать продвинутые сжатые форматы, такие как Apache Parquet.

Недостатки

  • Процесс состоит из двух этапов (выгрузка из Redshift, затем загрузка в ClickHouse).

Руководство

1

Экспортируйте данные в S3 бакет с помощью UNLOAD

С помощью функции UNLOAD в Redshift экспортируйте данные в существующий закрытый S3 бакет:В результате в S3 будут созданы файлы-части с исходными данными
2

Создайте таблицу в ClickHouse

Создайте таблицу в ClickHouse:
Либо ClickHouse может попытаться определить структуру таблицы с помощью CREATE TABLE ... EMPTY AS SELECT:
Это особенно хорошо работает, когда данные хранятся в формате, содержащем информацию о типах данных, например в Parquet.
3

Загрузите файлы S3 в ClickHouse

Загрузите файлы S3 в ClickHouse с помощью оператора INSERT INTO ... SELECT:
В этом примере в качестве промежуточного формата использовался CSV. Однако для production-нагрузок мы рекомендуем Apache Parquet как лучший вариант для крупных миграций, поскольку он поддерживает сжатие, помогает сократить затраты на хранение и уменьшает время передачи данных. (По умолчанию каждая группа строк сжимается с помощью SNAPPY). ClickHouse также использует столбцовую организацию Parquet для ускорения ингестии данных.
Последнее изменение 10 июня 2026 г.