수집
경로 A: ClickPipes (관리형, ClickHouse Cloud 전용)
- 스트리밍: Apache Kafka(MSK, Confluent Cloud, Redpanda, Azure Event Hubs, WarpStream 포함), Amazon Kinesis
- 객체 스토리지: Amazon S3(S3 호환 스토리지 포함), Google Cloud Storage, Azure Blob Storage
- CDC: PostgreSQL, MySQL, MongoDB, BigQuery
경로 B: 공식 언어 클라이언트를 통한 자체 수집
- 공식 클라이언트: Python, Go, Java, JavaScript, Rust, C#, C++
- 두 가지 wire 프로토콜 모두 지원: HTTP(모든 클라이언트) 및 네이티브 TCP(Go 및 C++ 클라이언트만)
- 인증: 기본적으로 TLS를 통한 사용자 이름과 비밀번호를 사용하며, mTLS 및 SSL 클라이언트 인증서 인증도 모든 주요 클라이언트에서 지원됩니다
- 데이터 포맷은 대개 구현 세부 사항입니다. 클라이언트는 런타임 타입을 ClickHouse Native 또는 RowBinary format으로 변환합니다. 이미 Arrow, Parquet, JSONEachRow 또는 다른 포맷으로 데이터를 생성하고 있다면, 대부분의 클라이언트는 사전 직렬화된 데이터용 raw-bytes API를 제공합니다
- 처리량을 위해 10K–100K행씩 배치하고, 동기 삽입의 상한선으로는 대략 초당 1회 삽입을 목표로 하세요. 클라이언트 측 배칭이 현실적이지 않다면 비동기 삽입을 사용해 배칭을 서버로 넘기세요
활용
- 애플리케이션 코드: 수집에 사용하는 것과 동일한 공식 언어 클라이언트를 사용하세요
- BI 및 SQL 도구: ClickHouse는 공식 JDBC v2 드라이버 (Java)와 ODBC 드라이버를 제공합니다. Tableau, Looker, Power BI, Metabase, Apache Superset, Grafana는 이러한 드라이버나 ClickHouse 및 파트너가 유지 관리하는 전용 커넥터를 통해 통합됩니다
- 결과 포맷: 직렬화는 일반적으로 클라이언트가 처리합니다. 제품에 필요하다면 wire 수준에서 Arrow, Parquet 또는 기타 컬럼형 포맷을 요청할 수 있습니다
결과 집합 크기 조절
SELECT *를 실행하면 테라바이트 단위의 데이터가 이동할 수 있습니다. 애플리케이션에서 요청 범위를 적절히 구성하세요: LIMIT, 페이지네이션, 스트리밍 읽기, 명시적인 컬럼 목록을 사용하십시오. 사용자 대상 분석 기능을 구축한다면, 무제한 결과 집합은 전송 문제가 아니라 UX 문제로 다뤄야 합니다.
ClickHouse는 배열, 튜플, 맵, JSON, nested, LowCardinality 등을 포함하는 풍부한 타입 시스템을 제공합니다. 공식 클라이언트는 이를 각 언어에서 자연스러운 타입으로 매핑합니다. 제품에서 ClickHouse 데이터를 최종 사용자에게 노출한다면, 타입 매핑 전략을 초기에 수립하십시오.
다음 단계
User-agent 문자열 규칙
User-Agent 문자열을 설정해야 합니다. ClickHouse는 이를 서버 측에서 파싱하여 도입 현황을 추적하고, 사용 telemetry를 파악하며, 로드맵 수립에 활용합니다.
형식:
clickhouse-java/0.8.0my-analytics-app/3.1.2 clickhouse-js/1.2.0 (env: staging; region: us-east-1; lv: node/20.10)
- 클라이언트 이름이나 버전에 공백이 있으면 안 됩니다
- 주석을 포함하는 경우 반드시 맨 앞에 와야 합니다
- 표준 메타데이터 키:
lv(언어 또는 프레임워크 버전),os,arch - TCP 및 네이티브 프로토콜 클라이언트는
User-Agent가 아니라 프로토콜 필드를 통해 클라이언트 이름과 버전을 전달합니다
User-Agent 및 관련 필드를 어떻게 설정하는지는 클라이언트 식별을 참조하십시오.