ClickHouse란 무엇인가요?
ClickHouse®는 온라인 분석 처리(OLAP)를 위한 컬럼 지향 SQL 데이터베이스 관리 시스템(DBMS)입니다. 오픈소스 소프트웨어와 클라우드 서비스로 제공됩니다.
ClickHouse®는 온라인 분석 처리(OLAP)를 위한 고성능 컬럼 지향 SQL 데이터베이스 관리 시스템(DBMS)입니다. 오픈소스 소프트웨어와 Cloud 서비스 형태로 제공됩니다.
100개가 넘는 기존 컬럼 중 일부만 선택하고 필터링하는 이 쿼리를 ClickHouse SQL Playground에서 실행할 수 있습니다. 이 쿼리는 100개가 넘는 기존 컬럼 중 극히 일부만 대상으로 하며, 결과를 밀리초 단위로 반환합니다:
위 그림의 통계 섹션에서 확인할 수 있듯이, 이 쿼리는 1억 행을 92밀리초 만에 처리했으며, 이는 초당 10억 행이 넘는 처리량 또는 초당 7 GB에 조금 못 미치는 데이터 전송량에 해당합니다.
행 지향 DBMS
행 지향 데이터베이스에서는 위 쿼리가 기존 컬럼 중 일부만 처리하더라도, 시스템은 여전히 다른 기존 컬럼의 데이터도 디스크에서 메모리로 로드해야 합니다. 이는 데이터가 디스크에 블록라고 하는 청크 단위(보통 4 KB 또는 8 KB 같은 고정 크기)로 저장되기 때문입니다. 블록은 디스크에서 메모리로 읽어 오는 가장 작은 데이터 단위입니다. 애플리케이션이나 데이터베이스가 데이터를 요청하면 운영 체제의 디스크 I/O 하위 시스템이 필요한 블록을 디스크에서 읽습니다. 블록의 일부만 필요하더라도 전체 블록이 메모리로 읽혀집니다(이는 디스크 및 파일 시스템 설계 방식에 따른 것입니다):
컬럼 지향 DBMS
각 컬럼의 값은 디스크에 순차적으로 저장되므로, 위의 쿼리를 실행할 때 불필요한 데이터는 로드되지 않습니다.
또한 디스크에서 메모리로의 블록 단위 저장 및 전송이 분석 쿼리의 데이터 접근 패턴에 맞게 이루어지므로, 쿼리에 필요한 컬럼만 디스크에서 읽어 사용되지 않는 데이터에 대한 불필요한 I/O를 피할 수 있습니다. 이는 전체 행(관련 없는 컬럼 포함)을 읽는 행 기반 저장 방식보다 훨씬 빠릅니다:
분석은 OLAP(Online Analytical Processing)라고도 하며, 대규모 데이터셋에 대해 복잡한 계산(예: 집계, 문자열 처리, 산술 연산)을 수행하는 SQL 쿼리를 의미합니다.
트랜잭션 쿼리(또는 OLTP, Online Transaction Processing)는 쿼리당 몇 개의 행만 읽고 쓰기 때문에 밀리초 단위로 끝나는 반면, 분석 쿼리는 일상적으로 수십억~수조 개의 행을 처리합니다.
많은 사용 사례에서 분석 쿼리는 “실시간”이어야 합니다. 즉, 1초 미만으로 결과를 반환해야 합니다.
이와 같은 수준의 성능은 적절한 데이터 “지향성”이 있을 때만 달성할 수 있습니다.
데이터베이스는 데이터를 행 지향 또는 컬럼 지향 방식으로 저장합니다.
행 지향 데이터베이스에서는 테이블의 연속된 행이 차례로 순차 저장됩니다. 이 구조에서는 각 행의 컬럼 값이 함께 저장되므로 행을 빠르게 조회할 수 있습니다.
ClickHouse는 컬럼 지향 데이터베이스입니다. 이러한 시스템에서는 테이블이 컬럼들의 모음으로 저장되며, 즉 각 컬럼의 값이 차례로 순차 저장됩니다. 이 구조에서는 단일 행을 복원하기가 더 어려워지지만(이제 행 값 사이에 간격이 생기기 때문입니다), filter나 집계와 같은 컬럼 단위 작업은 행 지향 데이터베이스보다 훨씬 빠르게 수행됩니다.
이 차이는 실제 익명화된 웹 분석 데이터 1억 행에 대해 실행하는 다음 예시 쿼리로 가장 잘 설명할 수 있습니다:
ClickHouse는 데이터가 여러 노드에 중복 저장되도록 비동기 멀티 마스터 복제 방식을 사용합니다. 사용 가능한 아무 레플리카에 데이터가 기록되면, 나머지 모든 레플리카는 백그라운드에서 해당 사본을 가져옵니다. 시스템은 서로 다른 레플리카 간에 동일한 데이터를 유지합니다. 대부분의 장애 발생 후 복구는 자동으로 수행되며, 복잡한 경우에는 반자동으로 수행됩니다.
ClickHouse는 SQL 쿼리를 사용해 사용자 계정을 관리하며, ANSI SQL 표준과 널리 사용되는 관계형 데이터베이스 관리 시스템에서 볼 수 있는 방식과 유사한 역할 기반 접근 제어 구성을 지원합니다.
ClickHouse는 많은 경우 ANSI SQL 표준과 동일한 SQL 기반 선언형 쿼리 언어를 지원합니다. 지원되는 쿼리 절에는 GROUP BY, ORDER BY, FROM의 서브쿼리, JOIN 절, IN 연산자, 윈도우 함수, 스칼라 서브쿼리가 포함됩니다.
ClickHouse는 정확도를 일부 희생하는 대신 성능을 높일 수 있는 방법을 제공합니다. 예를 들어 일부 집계 함수는 고유값 개수, 중앙값, 분위수를 근사적으로 계산합니다. 또한 데이터 샘플에 대해 쿼리를 실행하여 근사 결과를 빠르게 계산할 수 있습니다. 마지막으로 모든 키가 아니라 제한된 수의 키에 대해서만 집계를 수행할 수도 있습니다. 키 분포의 치우침 정도에 따라, 이렇게 하면 정확한 계산보다 훨씬 적은 리소스를 사용하면서도 충분히 정확한 결과를 얻을 수 있습니다.
ClickHouse는 조인 알고리즘을 상황에 맞게 선택합니다. 먼저 빠른 해시 조인을 사용하고, 큰 테이블이 두 개 이상이면 머지 조인으로 전환합니다.
ClickHouse는 매우 빠른 쿼리 성능으로 널리 알려져 있습니다.
ClickHouse가 왜 이렇게 빠른지 알아보려면 ClickHouse가 빠른 이유는 무엇인가요? 가이드를 참조하십시오.
마지막 수정일 2026년 6월 10일