- S3 ClickPipes를 통한 초기 스냅샷
- Kinesis ClickPipes를 통한 실시간 업데이트
ReplacingMergeTree에 수집됩니다. 이 테이블 엔진은 업데이트 작업을 적용할 수 있어 CDC 시나리오에서 일반적으로 사용됩니다. 이 패턴에 대한 자세한 내용은 다음 블로그 글에서 확인할 수 있습니다:
- PostgreSQL과 ClickHouse를 사용한 Change Data Capture (CDC) - 1부
- PostgreSQL과 ClickHouse를 사용한 Change Data Capture (CDC) - 2부
1. Kinesis 스트림 설정
2. 스냅샷 생성
3. ClickHouse에 스냅샷을 로드합니다
필요한 테이블 생성
JSONExtract 함수를 사용해 수행할 수 있습니다.
다음과 같이 3개의 테이블을 생성해야 합니다:
- DynamoDB의 원시 데이터를 저장하는 테이블
- 최종 평탄화된 데이터를 저장하는 테이블(대상 테이블)
- 데이터를 평탄화하는 materialized view
- 이 테이블은
ReplacingMergeTree테이블이어야 합니다 - 테이블에는
version컬럼이 있어야 합니다- 이후 단계에서는 Kinesis 스트림의
ApproximateCreationDateTime필드를version컬럼에 매핑합니다.
- 이후 단계에서는 Kinesis 스트림의
- 테이블은 파티션 키를 정렬 키(
ORDER BY로 지정)로 사용해야 합니다- 동일한 정렬 키를 가진 행은
version컬럼을 기준으로 중복 제거됩니다.
- 동일한 정렬 키를 가진 행은
스냅샷 ClickPipe 생성
- 수집 경로: S3에서 내보낸 JSON 파일의 경로를 찾아야 합니다. 경로는 대략 다음과 같은 형태입니다:
- 포맷: JSONEachRow
- 테이블: 스냅샷 테이블(예: 위 예시의
default.snapshot)
4. Kinesis ClickPipe 생성
- 스트림: 1단계에서 사용한 Kinesis 스트림
- 테이블: 대상 테이블(예: 위 예시의
default.destination) - 객체 평탄화: true
- 컬럼 매핑:
ApproximateCreationDateTime:version- 아래와 같이 다른 필드도 적절한 대상 컬럼에 매핑하십시오