clickhouse-cpp는 ClickHouse의 공식 C++ 클라이언트 라이브러리로, 네이티브 바이너리 프로토콜을 사용해 ClickHouse에 빠르고 type-safe한
인터페이스를 제공합니다.
빌드 지침, 사용 예시 및 추가 문서는 프로젝트의
GitHub 리포지토리에서 확인할 수 있습니다: https://github.com/ClickHouse/clickhouse-cpp.
이 라이브러리는 현재 활발히 개발되고 있습니다. 이미 ClickHouse의 핵심 기능을 지원하지만,
일부 기능과 데이터 타입은 아직 완전히 구현되지 않았거나 지원되지 않을 수 있습니다.피드백은 매우 중요하며, 새 기능과
개선 사항의 우선순위를 정하는 데 도움이 됩니다. 제한 사항, 누락된 기능 또는 예상치 못한 동작을 발견한 경우,
다음 issue tracker를 통해 확인한 내용이나 기능 요청을 공유해 주십시오:
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을 만들고 테이블 스키마(table schema)에 맞는 컬럼 객체를 채워 넣습니다. 데이터는 컬럼별로 추가되며, 그다음 효율적인 배치 쓰기에 최적화된 Insert 메서드를 사용해 한 번에 삽입됩니다.
데이터 조회
Select 메서드를 사용하고, 결과를 처리할 콜백을 제공하십시오. 쿼리 결과는 ClickHouse의 네이티브 컬럼 지향 데이터 표현을 반영하는 Block 객체로 전달됩니다.
지원되는 데이터 타입
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