clickhouse-cpp는 ClickHouse의 공식 C++ 클라이언트 라이브러리로, 네이티브 바이너리 프로토콜을 사용해 ClickHouse에 빠르고 타입 안전한
인터페이스를 제공합니다.
빌드 지침, 사용 예시, 추가 문서는 프로젝트의
GitHub 리포지토리에서 확인할 수 있습니다: https://github.com/ClickHouse/clickhouse-cpp.
이 라이브러리는 현재 활발히 개발되고 있습니다. 이미 ClickHouse의 핵심 기능을 지원하지만,
일부 기능 및 데이터 타입은 아직 완전히 구현되지 않았거나 지원되지 않을 수 있습니다.피드백은 매우 중요하며, 새로운 기능과
개선 사항의 우선순위를 정하는 데 큰 도움이 됩니다. 제약 사항, 누락된 기능, 예상치 못한 동작을 발견한 경우
다음 이슈 트래커를 통해 의견이나 기능 요청을 공유해 주십시오:
https://github.com/ClickHouse/clickhouse-cpp/issues
프로젝트에 라이브러리 포함하기
FetchContent
모듈을 사용하는 것입니다. 이 방법을 사용하면 라이브러리 버전을 정확히 고정하고 일반적인
CMake 워크플로에 포함해 빌드할 수 있습니다.
WITH_OPENSSL 옵션은 라이브러리에서 TLS 지원을 활성화하며,
ClickHouse Cloud 또는 SSL이 활성화된 다른 ClickHouse 배포에 연결할 때 필요합니다. TLS를 사용하지 않는
연결에는 생략할 수 있지만, 일반적으로는 활성화하는 것이 좋습니다.
SSL 지원을 포함해 빌드하려면 OpenSSL 개발 패키지가 설치되어 있어야 합니다. Debian, Ubuntu 또는 그 파생판에서는
libssl-dev를, Fedora, Red Hat에서는 openssl-devel을, macOS에서는
Homebrew를 사용해 openssl을 설치하십시오.
의존성을 사용할 수 있게 되면, 대상에 내보낸 라이브러리 타깃을 링크하십시오:
예시
클라이언트 객체 설정
Client 인스턴스를 생성합니다. 다음 예시는
비밀번호가 필요하지 않고 SSL이 활성화되지 않은 로컬 ClickHouse 인스턴스에 연결하는 방법을
보여줍니다.
데이터 반환 없이 테이블 생성 및 쿼리 실행
Execute 메서드를 사용합니다.
같은 방식은 ALTER TABLE, DROP 등의 다른 SQL 문에도 적용됩니다.
데이터 삽입
Block을 생성한 뒤 테이블 스키마에 맞는 컬럼 객체를 채우십시오. 데이터는 컬럼별로 추가되며, 이후 효율적인 배치 쓰기에 최적화된 Insert 메서드를 사용해 한 번의 작업으로 삽입됩니다.
데이터 조회
Select 메서드를 사용하고, 결과를 처리할 콜백을 제공하십시오.
쿼리 결과는 Block 객체로 전달되며, 이는 ClickHouse의 네이티브
컬럼 지향 데이터 표현 방식을 반영합니다.
지원되는 데이터 타입
UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64UInt128,Int128Decimal32,Decimal64,Decimal128Float32,Float64DateDateTime,DateTime64DateTime([timezone]),DateTime64(N, [timezone])UUIDEnum8,Enum16StringFixedString(N)LowCardinality(String)및LowCardinality(FixedString(N))Nullable(T)Array(T)TupleMapIPv4,IPv6Point,Ring,Polygon,MultiPolygon