소개
- PUSH 타사 ETL/ELT 도구 또는 서비스를 사용해 데이터를 ClickHouse로 전송합니다
- PULL ClickHouse JDBC Bridge를 활용해 Redshift에서 데이터를 가져옵니다
- PIVOT S3 객체 스토리지를 사용해 “언로드 후 로드” 방식으로 데이터를 이동합니다
이 튜토리얼에서는 데이터 소스로 Redshift를 사용했습니다. 하지만 여기서 소개하는 마이그레이션 방식은 Redshift에만 국한되지 않으며, 호환되는 모든 데이터 소스에도 유사하게 적용할 수 있습니다.
Push 방식으로 Redshift에서 ClickHouse로 데이터 전송
장점
- ETL/ELT 소프트웨어에서 기존에 제공하는 커넥터 카탈로그를 활용할 수 있습니다.
- 데이터를 동기화된 상태로 유지할 수 있는 기본 기능(append/overwrite/increment 로직)이 내장되어 있습니다.
- 데이터 변환 시나리오를 구현할 수 있습니다(예를 들어, dbt 통합 가이드를 참조하십시오).
단점
- ETL/ELT 인프라를 구축하고 유지 관리해야 합니다.
- 아키텍처에 서드파티 요소가 추가되어 잠재적인 확장성 병목이 될 수 있습니다.
Redshift에서 ClickHouse로 데이터 가져오기
INSERT INTO ... SELECT 쿼리를 수행합니다:
장점
- 모든 JDBC 호환 도구에서 사용할 수 있습니다
- ClickHouse 내에서 여러 외부 데이터 소스를 쿼리할 수 있게 해주는 효율적인 솔루션입니다
단점
- 잠재적인 확장성 병목이 될 수 있는 ClickHouse JDBC Bridge 인스턴스가 필요합니다
Redshift는 PostgreSQL 기반이지만, ClickHouse는 PostgreSQL 버전 9 이상을 요구하고 Redshift API는 그보다 이전 버전(8.x)을 기반으로 하므로 ClickHouse PostgreSQL 테이블 함수 또는 테이블 엔진은 사용할 수 없습니다.
튜토리얼
1
ClickHouse JDBC Bridge 배포
ClickHouse JDBC Bridge를 배포합니다. 자세한 내용은 외부 데이터 소스용 JDBC 사용자 가이드를 참조하십시오.ClickHouse Cloud를 사용하는 경우에는 별도의 환경에서 ClickHouse JDBC Bridge를 실행한 뒤 remoteSecure 함수를 사용해 ClickHouse Cloud에 연결해야 합니다.
2
Redshift 데이터 소스 구성
ClickHouse JDBC Bridge에서 사용할 Redshift 데이터 소스를 구성합니다. 예:/etc/clickhouse-jdbc-bridge/config/datasources/redshift.json 3
ClickHouse에서 Redshift 인스턴스 쿼리
ClickHouse JDBC Bridge가 배포되어 실행 중이면 ClickHouse에서 Redshift 인스턴스를 쿼리할 수 있습니다.4
S3를 사용해 Redshift 데이터를 ClickHouse로 피벗
장점
- Redshift와 ClickHouse는 모두 강력한 S3 통합 기능을 제공합니다.
- Redshift
UNLOAD명령과 ClickHouse S3 테이블 함수 / 테이블 엔진 같은 기존 기능을 활용할 수 있습니다. - ClickHouse의 S3 대상 병렬 읽기와 고처리량 capability를 통해 원활하게 확장할 수 있습니다.
- Apache Parquet와 같은 고급 압축 포맷을 활용할 수 있습니다.
단점
- 프로세스가 2단계로 진행됩니다(Redshift에서 언로드한 후 ClickHouse로 로드).
튜토리얼
1
2
ClickHouse에 테이블 생성하기
ClickHouse에 테이블을 생성하십시오:CREATE TABLE ... EMPTY AS SELECT를 사용하여 ClickHouse가 테이블 구조를 추론하도록 할 수 있습니다:3
S3 파일을 ClickHouse로 로드하기
INSERT INTO ... SELECT 문을 사용하여 S3 파일을 ClickHouse로 로드하십시오:이 예시에서는 CSV를 피벗 포맷으로 사용했습니다. 하지만 프로덕션 워크로드에서는 대규모 마이그레이션에 가장 적합한 옵션으로 Apache Parquet를 권장합니다. 압축이 적용되므로 전송 시간을 줄이면서 스토리지 비용도 일부 절감할 수 있기 때문입니다. (기본적으로 각 row group은 SNAPPY를 사용해 압축됩니다.) 또한 ClickHouse는 Parquet의 컬럼 지향 구조를 활용하여 데이터 수집 속도를 높입니다.