index
Миграция данных из Redshift в ClickHouse
Связанный контент
Введение
Amazon Redshift — это популярное облачное решение для хранения данных, входящее в состав предложений Amazon Web Services. Этот гид представляет различные подходы к миграции данных из экземпляра Redshift в ClickHouse. Мы рассмотрим три варианта:

С точки зрения экземпляра ClickHouse у вас есть возможность:
-
PUSH данные в ClickHouse с помощью стороннего инструмента или сервиса ETL/ELT
-
PULL данные из Redshift, используя ClickHouse JDBC Bridge
-
PIVOT с использованием хранилища объектов S3, используя логику "Разгрузить, затем загрузить"
В этом учебнике мы использовали Redshift в качестве источника данных. Однако представленные здесь подходы миграции не являются эксклюзивными для Redshift, и аналогичные шаги могут быть применены для любого совместимого источника данных.
Перенос данных из Redshift в ClickHouse
В сценарии push основная идея состоит в том, чтобы использовать сторонний инструмент или сервис (либо пользовательский код, либо ETL/ELT), чтобы передать ваши данные в экземпляр ClickHouse. Например, вы можете использовать такое программное обеспечение, как Airbyte, для передачи данных между вашим экземпляром Redshift (в качестве источника) и ClickHouse как целью (см. наш гид по интеграции для Airbyte)

Плюсы
- Может использовать существующий каталог соединителей из программного обеспечения ETL/ELT.
- Встроенные возможности для синхронизации данных (добавление/перезапись/логика инкремента).
- Позволяет сценарии трансформации данных (например, см. наш гид по интеграции для dbt).
Минусы
- Пользователям необходимо настроить и поддерживать инфраструктуру ETL/ELT.
- Вводит элемент третьей стороны в архитектуру, который может стать потенциальным узким местом для масштабируемости.
Извлечение данных из Redshift в ClickHouse
В сценарии 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 с образцом базы данных.
- Разверните ClickHouse JDBC Bridge. Для получения дополнительной информации см. наш пользовательский гид по JDBC для внешних источников данных
Если вы используете ClickHouse Cloud, вам необходимо запустить ClickHouse JDBC Bridge в отдельной среде и подключиться к ClickHouse Cloud, используя функцию remoteSecure
- Настройте ваш источник данных Redshift для ClickHouse JDBC Bridge. Например,
/etc/clickhouse-jdbc-bridge/config/datasources/redshift.json
- После развертывания и запуска ClickHouse JDBC Bridge вы можете начать запрашивать ваш экземпляр Redshift из ClickHouse
- В дальнейшем мы покажем импорт данных с использованием оператора
INSERT INTO ... SELECT
Поворот данных из Redshift в ClickHouse с использованием S3
В этом сценарии мы экспортируем данные в S3 в промежуточном формате и, на втором этапе, загружаем данные из S3 в ClickHouse.

Плюсы
- И Redshift, и ClickHouse имеют мощные функции интеграции S3.
- Использует существующие функции, такие как команда Redshift
UNLOAD
и функция таблицы/табличный движок S3 ClickHouse. - Легко масштабируется благодаря параллельным чтениям и высоким темпам передачи данных из/в S3 в ClickHouse.
- Можете использовать сложные и сжатые форматы, такие как Apache Parquet.
Минусы
- Два этапа в процессе (разгрузка из Redshift затем загрузка в ClickHouse).
Учебник
-
С помощью функции UNLOAD Redshift экспортируйте данные в существующий частный S3-бакет:
Это сгенерирует файлы частей, содержащие необработанные данные в S3
-
Создайте таблицу в ClickHouse:
В качестве альтернативы ClickHouse может попытаться определить структуру таблицы с помощью
CREATE TABLE ... EMPTY AS SELECT
:Это особенно хорошо работает, когда данные находятся в формате, который содержит информацию о типах данных, например, Parquet.
-
Загрузите файлы S3 в ClickHouse с помощью оператора
INSERT INTO ... SELECT
:
В этом примере использовался формат CSV как поворотный формат. Однако для производственных нагрузок мы рекомендуем Apache Parquet как лучший вариант для больших миграций, так как он сопровождается сжатием и может снизить затраты на хранение, уменьшая время передачи. (По умолчанию каждая группа строк сжимается с использованием SNAPPY). ClickHouse также использует колонкоориентированность Parquet для ускорения загрузки данных.