사전 요구 사항
첫 번째 ClickPipe 만들기
- ClickHouse Cloud 서비스의 SQL 콘솔에 접속합니다.
- 왼쪽 메뉴에서
Data Sources버튼을 선택한 다음 “Set up a ClickPipe”를 클릭합니다.
- 데이터 소스를 선택합니다.
- ClickPipe 이름, 설명(선택 사항), IAM role 또는 자격 증명, 기타 연결 정보를 입력하여 양식을 작성합니다.
-
Kinesis 스트림, 데이터 포맷, 시작 offset을 선택합니다. Kinesis ClickPipes는 JSON, Avro, Protobuf를 지원합니다.
Protobuf는.proto파일 또는 직렬화된FileDescriptorSet(최대 768 KiB)을 업로드하거나 AWS Glue 스키마 레지스트리를 구성하십시오. Avro는 AWS Glue 스키마 레지스트리를 구성하십시오. 업로드한 Protobuf 스키마와 스키마 레지스트리를 함께 사용하지 마십시오. UI에는 선택한 스트림의 샘플 데이터가 표시됩니다. Use Kinesis Enhanced Fan-Out은 기본적으로 활성화되어 있습니다. 자세한 내용은 Amazon Kinesis 문서를 참조하십시오.
- 다음 단계에서는 데이터를 새 ClickHouse 테이블에 수집할지, 기존 테이블을 재사용할지 선택할 수 있습니다. 화면의 안내에 따라 테이블 이름, 스키마, 설정을 수정하십시오. 상단의 샘플 테이블에서 변경 사항을 실시간으로 미리 볼 수 있습니다.
- 또는 데이터를 기존 ClickHouse 테이블에 수집하도록 선택할 수도 있습니다. 이 경우 UI에서 소스의 필드를 선택한 대상 테이블의 ClickHouse 필드에 매핑할 수 있습니다.
- 마지막으로 내부 ClickPipes 사용자에 대한 권한을 구성할 수 있습니다.
Full access: 클러스터 전체에 대한 액세스 권한입니다. 대상 테이블과 함께 materialized view 또는 딕셔너리(Dictionary)를 사용하는 경우 유용할 수 있습니다.Only destination table: 대상 테이블에 대해서만INSERT권한을 부여합니다.
- “Complete Setup”을 클릭하면 시스템이 ClickPipe를 등록하고, 요약 테이블에 표시되는 것을 확인할 수 있습니다.
- 축하합니다! 첫 번째 ClickPipe를 성공적으로 설정했습니다. streaming ClickPipe인 경우 원격 데이터 소스에서 데이터를 실시간으로 수집하면서 계속 실행됩니다. 그렇지 않으면 배치를 수집한 후 완료됩니다.
지원되는 데이터 포맷
AWS Glue 스키마 레지스트리
Kinesis ClickPipes는 AWS Glue 스키마 레지스트리에서 Avro 및 Protobuf 스키마를 가져올 수 있습니다. ClickPipe 생성 과정에서 AWS Glue를 선택한 다음, 레지스트리의 AWS 리전과 이름을 입력하십시오. 레지스트리 액세스에 사용할 IAM role을 선택적으로 지정할 수 있으며, 지정하지 않으면 ClickPipes는 Kinesis 소스의 IAM 아이덴티티를 사용합니다. 이 아이덴티티에는glue:GetSchemaVersion 권한이 있어야 합니다.
동일한 필드는 OpenAPI 또는 Terraform을 통해서도 구성할 수 있습니다. 필요한 IAM 정책과 세부 구성 방법은 스키마 레지스트리 가이드를 참고하십시오.
압축
- gzip
- zstd
- lz4
- snappy (framed format)
JSON 및 CSV 같은 텍스트 기반 포맷에서는 자동 감지가 안전합니다. 인쇄 가능한 ASCII 문자는 압축 매직 바이트와 절대 충돌하지 않기 때문입니다.
지원되는 데이터 타입
표준 타입 지원
- 기본 숫자 타입 - [U]Int8/16/32/64, Float32/64, BFloat16
- 대형 정수 타입 - [U]Int128/256
- Decimal 타입
- Boolean
- String
- FixedString
- Date, Date32
- DateTime, DateTime64 (UTC 시간대만)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- ClickHouse의 모든 LowCardinality 타입
- 키와 값에 위 타입 중 하나를 사용할 수 있는 Map (Nullable 포함)
- 요소에 위 타입 중 하나를 사용할 수 있는 Tuple 및 Array (Nullable 포함, 1단계 깊이만)
- SimpleAggregateFunction 타입 (대상이 AggregatingMergeTree 또는 SummingMergeTree인 경우)
Variant 유형 지원
Variant(String, Int64, DateTime))을 수동으로 지정할 수
있습니다. ClickPipes가 사용할 올바른 Variant 하위 유형을 판별하는 방식상, Variant 정의에는 정수형 또는 날짜/시간
유형을 하나만 사용할 수 있습니다. 예를 들어 Variant(Int64, UInt32)는 지원되지 않습니다.
JSON 타입 지원
Kinesis 가상 컬럼
Add Column 버튼을 사용해 가상 컬럼을 추가할 수 있습니다.
_raw_message 필드는 전체 Kinesis JSON 레코드만 필요한 경우(예: ClickHouse JsonExtract* 함수를 사용해 다운스트림 구체화된 뷰(Materialized View)를 채우는 경우)에 사용할 수 있습니다. 이러한 파이프에서는 “가상”이 아닌 모든 컬럼을 삭제하면 ClickPipes 성능이 향상될 수 있습니다.
제한 사항
- DEFAULT는 지원되지 않습니다.
- 가장 작은 (XS) 레플리카 크기에서는 개별 메시지의 기본 한도가 16MB(비압축)이며, 더 큰 레플리카에서는 32MB(비압축)입니다. 이 한도를 초과하는 메시지는 오류가 발생하며 거부됩니다. 더 큰 메시지가 필요하면 지원팀에 문의하십시오.
성능
배칭
- 배치 크기가 최대 크기(100,000행 또는 레플리카 메모리 1GB당 32MB)에 도달함
- 배치가 최대 시간(5초) 동안 열려 있음