메인 콘텐츠로 건너뛰기

원자성

원자성은 트랜잭션(일련의 데이터베이스 작업)을 하나의 불가분한 단위로 처리하도록 보장합니다. 즉, 트랜잭션에 포함된 모든 작업이 모두 수행되거나, 하나도 수행되지 않습니다. 원자적 트랜잭션의 예로는 한 은행 계좌에서 다른 계좌로 돈을 이체하는 경우를 들 수 있습니다. 이체 과정의 어느 한 단계라도 실패하면 트랜잭션 전체가 실패하고, 돈은 첫 번째 계좌에 그대로 남습니다. 원자성은 돈이 사라지거나 새로 생기는 일이 없도록 보장합니다.

블록

블록은 데이터 처리와 저장을 위한 논리적 단위입니다. 각 블록에는 함께 처리되는 열 지향 데이터가 포함되어 있어 쿼리 실행 성능을 높입니다. ClickHouse는 데이터를 블록 단위로 처리해 캐시 미스를 줄이고 벡터화 실행을 지원함으로써 CPU 코어를 효율적으로 활용합니다. ClickHouse는 LZ4, ZSTD, Delta와 같은 다양한 압축 알고리즘을 사용해 블록 내 데이터를 압축합니다.

클러스터

데이터를 저장하고 처리하기 위해 함께 작동하는 노드(서버)들의 집합입니다.

CMEK

고객 관리형 암호화 키(CMEK)를 사용하면 고객이 자체 키 관리 서비스(KMS) 키로 ClickHouse 디스크 데이터 키를 암호화하여 저장된 데이터를 보호할 수 있습니다.

딕셔너리

딕셔너리는 다양한 유형의 참고 목록에 유용한 키-값 쌍 매핑입니다. 쿼리에서 딕셔너리를 효율적으로 활용할 수 있게 해주는 강력한 기능이며, 많은 경우 참고 테이블에 JOIN을 사용하는 것보다 더 효율적입니다.

분산 테이블

ClickHouse의 분산 테이블은 데이터를 자체적으로 저장하지 않고, 클러스터 내 여러 서버에 걸친 분산 쿼리 처리를 위해 통합된 보기를 제공하는 특수한 유형의 테이블입니다.

그래뉼

그래뉼은 비압축 블록 내의 행 묶음입니다. 데이터를 읽을 때 ClickHouse는 개별 행이 아니라 그래뉼 단위로 접근하므로, 분석 워크로드에서 데이터를 더 빠르게 처리할 수 있습니다. 그래뉼에는 기본적으로 8192개의 행이 포함됩니다. 프라이머리 인덱스에는 그래뉼마다 하나의 항목이 있습니다.

증분형 materialized view

ClickHouse에서 증분형 materialized view는 삽입 시점에 데이터를 처리하고 집계하는 materialized view의 한 유형입니다. 새 데이터가 원본 테이블에 삽입되면 materialized view는 새로 삽입된 블록에 대해서만 미리 정의된 SQL 집계 쿼리를 실행하고, 집계된 결과를 대상 테이블에 기록합니다.

경량 업데이트

ClickHouse의 경량 업데이트는 표준 SQL UPDATE 구문을 사용해 테이블의 행을 업데이트할 수 있는 실험적 기능입니다. 기존 뮤테이션처럼 전체 컬럼이나 데이터 파트를 다시 쓰는 대신, 업데이트된 컬럼과 행만 포함하는 “패치 파트”를 생성합니다. 이러한 업데이트는 패치 적용을 통해 SELECT 쿼리에 즉시 반영되지만, 물리적 데이터는 이후 머지 과정에서만 업데이트됩니다.

마크 파일

ClickHouse의 마크 파일은 “마크”, 즉 ClickHouse가 데이터 파일에 저장된 특정 데이터 범위의 위치를 빠르게 찾는 데 도움이 되는 인덱스 항목을 저장하는 파일입니다.

materialized view

ClickHouse의 materialized view는 소스 테이블에 데이터가 삽입될 때 자동으로 쿼리를 실행하여, 변환되거나 집계된 결과를 더 빠르게 조회할 수 있도록 별도의 대상 테이블에 저장하는 메커니즘입니다.

MergeTree

ClickHouse의 MergeTree는 높은 데이터 수집 속도와 대용량 데이터 처리를 위해 설계된 테이블 엔진입니다. ClickHouse의 핵심 스토리지 엔진으로서 열 지향 스토리지, 사용자 지정 파티셔닝, 희소 프라이머리 인덱스, 백그라운드 데이터 머지 지원 등의 기능을 제공합니다.

뮤테이션

ClickHouse에서 뮤테이션은 일반적으로 ALTER TABLE … UPDATE 또는 ALTER TABLE … DELETE 같은 명령으로 테이블(table)의 기존 데이터를 수정하거나 삭제하는 작업을 의미합니다. 뮤테이션은 행(row)을 제자리에서 직접 수정하는 대신, 변경의 영향을 받는 전체 데이터 파트를 재작성하는 비동기식 백그라운드 프로세스로 구현됩니다.

온더플라이 뮤테이션

ClickHouse의 온더플라이 뮤테이션은 업데이트나 삭제가 뮤테이션 제출 직후 백그라운드 뮤테이션 프로세스가 완료되기를 기다리지 않고도, 이후의 SELECT 쿼리에서 즉시 반영되도록 하는 메커니즘입니다.

파트

디스크에 있는 물리적 파일로, 테이블 데이터의 일부를 저장합니다. 이는 파티션과는 다릅니다. 파티션은 파티션 키를 사용해 생성되는 테이블 데이터의 논리적 구분입니다.

파티셔닝 키

ClickHouse에서 파티셔닝 키는 테이블 생성 시 PARTITION BY 절에 정의하는 SQL 표현식입니다. 이 키는 데이터가 디스크에서 파티션으로 논리적으로 어떻게 그룹화되는지를 결정합니다. 파티셔닝 키의 각 고유 값은 하나의 물리적 파티션을 형성하므로, 전체 파티션의 삭제, 이동, 아카이브와 같은 데이터 관리 작업을 효율적으로 수행할 수 있습니다.

기본 키

ClickHouse에서 기본 키(primary key)는 데이터가 디스크에 저장되는 순서를 결정하고, 쿼리 필터링을 더 빠르게 수행할 수 있도록 희소 인덱스(sparse index)를 구축하는 데 사용됩니다. 기존 데이터베이스와 달리 ClickHouse의 기본 키는 고유성을 강제하지 않으므로 여러 행이 동일한 기본 키 값을 가질 수 있습니다.

프로젝션

ClickHouse의 프로젝션은 숨겨진 테이블로, 자동으로 유지되며 데이터를 다른 순서로 저장하거나 미리 계산된 집계 결과를 저장해 쿼리 속도를 높입니다. 특히 기본 기본 키에 포함되지 않은 컬럼을 필터링하는 쿼리에서 효과적입니다.

갱신 가능 구체화 뷰

갱신 가능 구체화 뷰는 전체 데이터셋을 대상으로 쿼리를 주기적으로 다시 실행하고, 그 결과를 대상 테이블에 저장하는 materialized view의 한 유형입니다. 증분형 materialized view와 달리 갱신 가능 구체화 뷰는 일정에 따라 갱신되며, JOIN과 UNION을 포함한 복잡한 쿼리도 제약 없이 지원할 수 있습니다.

레플리카

ClickHouse 데이터베이스에 저장된 데이터의 복사본입니다. 이중화와 안정성을 위해 동일한 데이터의 레플리카를 원하는 수만큼 둘 수 있습니다. 레플리카는 ReplicatedMergeTree 테이블 엔진과 함께 사용되며, 이를 통해 ClickHouse는 서로 다른 서버에 있는 여러 데이터 복사본의 동기화 상태를 유지할 수 있습니다.

세그먼트

데이터의 일부입니다. ClickHouse에서는 데이터에 대해 항상 최소 1개의 세그먼트가 있습니다. 데이터를 여러 서버에 분할하지 않으면 데이터는 하나의 세그먼트에 저장됩니다. 데이터를 여러 서버에 걸쳐 세그먼트 분할하면 단일 서버의 용량을 초과할 때 부하를 분산하는 데 사용할 수 있습니다.

스킵 인덱스

스킵 인덱스는 여러 개의 연속된 그래뉼 수준에 소량의 메타데이터를 저장하여 ClickHouse가 관련 없는 행을 스캔하지 않도록 합니다. 스킵 인덱스는 프로젝션보다 가벼운 대안입니다.

정렬 키

ClickHouse에서 정렬 키(sorting key)는 디스크에 저장된 행의 물리적 순서를 결정합니다. 기본 키(primary key)를 지정하지 않으면 ClickHouse는 정렬 키를 기본 키로 사용합니다. 둘 다 지정한 경우 기본 키는 정렬 키의 접두어여야 합니다.

희소 인덱스

프라이머리 인덱스가 단일 행이 아니라 여러 행의 그룹마다 하나의 항목을 포함하는 인덱싱 유형입니다. 행 그룹에 해당하는 이 항목을 마크라고 합니다. 희소 인덱스를 사용하면 ClickHouse는 먼저 쿼리와 일치할 가능성이 있는 행 그룹을 식별한 다음, 실제 일치 여부를 찾기 위해 이를 개별적으로 처리합니다. 따라서 프라이머리 인덱스는 메모리에 적재할 수 있을 만큼 작습니다.

테이블 엔진

ClickHouse의 테이블 엔진은 데이터가 어떻게 기록되고 저장되며 액세스되는지를 결정합니다. MergeTree는 가장 일반적으로 사용되는 테이블 엔진으로, 대량의 데이터를 빠르게 삽입할 수 있으며 삽입된 데이터는 백그라운드에서 처리됩니다.

TTL

Time To Live(TTL)은 일정 시간이 지나면 컬럼(column)이나 행(row)을 자동으로 이동, 삭제 또는 롤업하는 ClickHouse 기능입니다. 이를 통해 더 이상 자주 액세스할 필요가 없는 데이터를 삭제, 이동 또는 보관하여 스토리지를 더욱 효율적으로 관리할 수 있습니다.
마지막 수정일 2026년 6월 10일