목록으로

데이터베이스

ClickHouse 실무 가이드: 초고속 OLAP 분석 DB의 구조와 활용

BeanCon
ClickHouse OLAP 데이터베이스와 실시간 분석 플랫폼을 표현한 대표 이미지

ClickHouse의 개념, 등장 배경, 컬럼 기반 구조, MergeTree 아키텍처, 설치 방법, SQL 기본 사용법, 데이터 모델링, 성능 최적화, 실무 활용 사례와 운영 주의사항을 정리했습니다.

ClickHouse는 초고속 컬럼형 OLAP 데이터베이스입니다. 수십억 건 이상의 로그, 이벤트, 관측성 데이터, AI 서비스 사용량 데이터를 실시간에 가깝게 분석해야 하는 환경에서 강점을 가집니다.

1. ClickHouse란?

ClickHouse는 Yandex에서 개발한 초고속 컬럼형 OLAP 데이터베이스입니다.

OLTP가 아닌 OLAP에 최적화되어 있으며, 수십억 건 이상의 데이터를 실시간에 가깝게 분석할 수 있도록 설계되었습니다.

대표 활용 분야
  • 로그 분석
  • 사용자 행동 분석
  • IoT 데이터 분석
  • 보안 이벤트 분석
  • BI 대시보드
  • AI 및 LLM 서비스 분석
  • 실시간 통계 시스템

현재 Uber, Cloudflare, Cisco, Lyft, eBay 등 글로벌 기업들이 대규모 데이터 분석 플랫폼으로 ClickHouse를 활용하고 있습니다.

2. ClickHouse 등장 배경

전통적인 관계형 데이터베이스인 MySQL, PostgreSQL은 트랜잭션 처리에는 강력하지만 대규모 분석에는 한계가 있습니다.

예를 들어 수십억 건의 웹 로그에서 국가별 통계를 계산해야 하는 경우 일반 데이터베이스는 수십 초에서 수 분 이상이 소요될 수 있습니다.

ClickHouse가 해결하려는 요구사항
  • 초고속 집계 처리
  • 대규모 데이터 저장
  • 실시간 분석
  • 높은 압축률
  • 분산 환경 지원

3. ClickHouse 핵심 특징

컬럼 기반 저장 구조

전통적인 데이터베이스는 행 단위로 데이터를 저장하지만 ClickHouse는 컬럼 단위로 데이터를 저장합니다.

Row-Oriented
ID | Name | Age | Country

Column-Oriented
ID
Name
Age
Country
컬럼 기반 저장 구조의 장점
  • 필요한 컬럼만 조회
  • 디스크 I/O 감소
  • 압축률 향상
  • 분석 성능 향상

뛰어난 압축률

일반 DB
1TB 데이터
→ 약 800GB 저장

ClickHouse
1TB 데이터
→ 약 100~300GB 저장
주요 압축 알고리즘
  • LZ4
  • ZSTD
  • Delta
  • Gorilla

벡터화 실행 엔진

일반 데이터베이스
한 행씩 처리

ClickHouse
수천 행 단위로 처리

ClickHouse는 CPU 캐시 활용률을 극대화하여 높은 처리 성능을 제공합니다.

멀티코어 병렬 처리

32 Core 서버
→ 32개 이상의 작업 병렬 처리

초고속 데이터 적재

500,000 ~ 1,000,000 rows/sec

대규모 로그 수집 환경에서는 초당 수십만에서 백만 행 이상의 적재도 가능합니다.

4. ClickHouse 아키텍처

Application
      ↓
 ClickHouse
      ↓
+-------------+
| MergeTree   |
| Distributed |
+-------------+
      ↓
 Storage
엔진역할특징
MergeTree가장 많이 사용하는 기본 엔진파티셔닝, 인덱스, 압축 저장, 자동 Merge 지원
ReplicatedMergeTree고가용성 환경 지원데이터 복제, 장애 복구, 자동 동기화
Distributed분산 클러스터 지원샤딩, 분산 조회, 수평 확장
ENGINE = MergeTree()

ENGINE = ReplicatedMergeTree

ENGINE = Distributed

5. ClickHouse 설치 및 구축 방법

Docker 설치

docker run -d \
--name clickhouse \
-p 8123:8123 \
-p 9000:9000 \
clickhouse/clickhouse-server

컨테이너를 확인합니다.

docker ps

ClickHouse client로 접속합니다.

docker exec -it clickhouse clickhouse-client

Ubuntu 설치

sudo apt update

sudo apt install \
clickhouse-server \
clickhouse-client

서비스를 시작하고 상태를 확인합니다.

sudo systemctl enable clickhouse-server
sudo systemctl start clickhouse-server
sudo systemctl status clickhouse-server

6. 기본 사용법

데이터베이스 생성

CREATE DATABASE analytics;

테이블 생성

CREATE TABLE access_log
(
    timestamp DateTime,
    ip String,
    country String,
    url String
)
ENGINE = MergeTree
ORDER BY timestamp;

데이터 입력

INSERT INTO access_log VALUES
(
    now(),
    '10.10.10.1',
    'KR',
    '/index.html'
);

데이터 조회

SELECT *
FROM access_log
LIMIT 10;

집계 분석

SELECT
    country,
    count(*) AS cnt
FROM access_log
GROUP BY country
ORDER BY cnt DESC;

7. 데이터 모델링 전략

ClickHouse 실무에서 가장 중요한 부분은 테이블 설계, 파티션, ORDER BY 키를 데이터 조회 패턴에 맞추는 것입니다.

좋은 설계 예시

CREATE TABLE logs
(
    event_time DateTime,
    service String,
    user_id UInt64,
    action String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(event_time)
ORDER BY (service, event_time);

파티셔닝 전략

전략SQL설명
일 단위PARTITION BY toDate(event_time)일별 삭제와 조회가 많은 경우 사용합니다.
월 단위PARTITION BY toYYYYMM(event_time)로그 분석 시스템에서 가장 많이 사용됩니다.
년 단위PARTITION BY toYear(event_time)장기 보관 데이터처럼 파티션 수를 줄이고 싶을 때 사용합니다.

일반적으로 로그 분석 시스템에서는 월 단위 파티션이 가장 많이 사용됩니다.

8. 성능 최적화 기법

ORDER BY 설계

조회 조건과 집계 기준에 맞는 ORDER BY 설계가 중요합니다.

좋은 예
ORDER BY
(
    service,
    event_time
)

나쁜 예
ORDER BY random()

Materialized View 활용

Materialized View는 자동 집계 생성에 유용합니다.

CREATE MATERIALIZED VIEW daily_stats
AS
SELECT
    toDate(timestamp),
    count(*)
FROM logs
GROUP BY 1;

TTL 사용

TTL은 데이터 자동 삭제에 사용되며 로그 보관 정책에 매우 유용합니다.

TTL timestamp + INTERVAL 90 DAY

Compression 최적화

ZSTD 같은 압축 코덱은 대규모 저장소 비용 절감에 효과적입니다.

CODEC(ZSTD)

9. 실무 활용 사례

로그 분석 플랫폼

Application → Kafka → ClickHouse → Grafana 구조로 웹 로그, API 로그, 시스템 로그, 애플리케이션 로그를 분석합니다.

보안 관제(SIEM)

Firewall, EDR, IPS, WAF 이벤트를 ClickHouse에 저장하고 수십억 건의 보안 이벤트를 분석합니다.

IoT 플랫폼

Sensor → MQTT → Kafka → ClickHouse 구조로 센서 데이터를 저장하고 분석합니다.

AI 및 LLM 분석

Prompt, Response, Token Usage, Latency, User Activity를 저장하고 모델별 성능을 분석합니다.

Observability 플랫폼

Application → OpenTelemetry → ClickHouse → Grafana 구조로 관측성 데이터를 분석합니다.

Application
      ↓
Kafka
      ↓
ClickHouse
      ↓
Grafana
SELECT
    model,
    avg(latency)
FROM llm_logs
GROUP BY model;
Application
      ↓
OpenTelemetry
      ↓
ClickHouse
      ↓
Grafana

10. ClickHouse와 주요 데이터베이스 비교

구분ClickHouseMySQLPostgreSQL
목적OLAPOLTPHybrid
분석 성능매우 높음낮음보통
압축률매우 높음보통보통
대용량 조회우수제한적보통
분산 처리우수제한적보통
실시간 분석우수제한적보통
UPDATE제한적우수우수
DELETE제한적우수우수

11. 운영 시 주의사항

주의사항비추천 또는 문제권장 방향
UPDATE 남용 금지UPDATE user SET ...ClickHouse는 분석 DB이므로 대규모 UPDATE를 피합니다.
JOIN 최소화정규화 중심 설계대용량 분석 환경에서는 반정규화가 유리합니다.
작은 INSERT 지양1 Row Insert1000 ~ 100000 Row Batch Insert를 권장합니다.
파티션 과다 생성 금지PARTITION BY user_id시간 기반 파티션처럼 관리 가능한 단위로 설계합니다.
정규화
 ↓
반정규화

12. ClickHouse 미래 전망

AI 시대에 데이터 규모는 폭발적으로 증가하고 있으며 ClickHouse는 실시간 분석과 관측성 영역에서 빠르게 채택되고 있습니다.

빠르게 채택되는 분야
  • AI Analytics
  • LLM Monitoring
  • OpenTelemetry
  • SIEM
  • IoT
  • FinTech
  • 실시간 대시보드

최근에는 Elasticsearch 대신 ClickHouse를 선택하는 사례도 증가하고 있습니다.

Elasticsearch 대안으로 검토되는 이유
  • 더 낮은 저장 비용
  • 더 빠른 집계 성능
  • 뛰어난 압축률
  • SQL 기반 사용성

13. 결론

ClickHouse는 현대 데이터 분석 플랫폼 구축을 위한 대표적인 오픈소스 OLAP 데이터베이스입니다.

핵심 요약
  • 컬럼 기반 저장 구조
  • 수십억 건 데이터 분석 가능
  • 높은 압축률
  • 실시간 데이터 적재
  • 분산 클러스터 지원
  • 로그 분석 최적화
  • AI/LLM 서비스 분석 최적화
  • OpenTelemetry, Kafka, Grafana와 뛰어난 연동성

현대적인 데이터 분석 플랫폼 아키텍처 예시는 다음과 같습니다.

Application
      ↓
Kafka
      ↓
ClickHouse
      ↓
Grafana / Superset
      ↓
Analytics Dashboard

AI 서비스, RAG 시스템, Observability 플랫폼, 보안 관제 시스템, 대규모 로그 분석 플랫폼을 구축하려는 조직이라면 ClickHouse는 반드시 검토해야 할 핵심 기술 중 하나입니다.

댓글

0

댓글을 불러오는 중입니다.