DB Study

⚡ ClickHouse 학습 가이드

"세상에서 가장 빠른 분석 DB"는 어떻게 만들어졌을까요? 컬럼 저장, immutable 파트, 백그라운드 머지, 희소 인덱스 — ClickHouse의 심장을 애니메이션으로 하나씩 열어봅니다.

📚 총 11개 챕터 🎬 챕터마다 애니메이션 2~3개 ✅ 완료 0 / 11장

한눈에 보는 ClickHouse — 데이터의 일생

ClickHouse의 거의 모든 동작은 단 하나의 스토리로 요약됩니다. INSERT는 immutable 파트를 만들고, 백그라운드 머지가 파트를 합치고, SELECT는 희소 인덱스로 건너뛰며 읽습니다. 이 30초 애니메이션이 앞으로 11개 챕터에서 배울 전체 그림입니다.

💾 디스크 (MergeTree 테이블) INSERT 배치 수만 행을 한 번에 all_1_1_0 정렬·압축된 파트 immutable — 수정 불가! all_2_2_0 all_3_3_0 INSERT마다 새 파트가 쌓임 all_1_3_1 (머지된 큰 파트) 🔧 백그라운드 머지 SELECT 쿼리 WHERE town='LONDON' primary.idx (희소 인덱스) granule 0 — 건너뜀 granule 1 — 여기만 읽음 ✅ granule 2 — 건너뜀 granule 3 — 건너뜀 ⚡ 결과 반환 — 수 ms
🧭
이 가이드를 읽는 방법

PostgreSQL 같은 행 지향 DB를 써본 경험이 있다면 더 재미있게 읽을 수 있지만, 필수는 아닙니다. 각 챕터는 애니메이션 → 개념 설명 → 실행 가능한 SQL → 퀴즈 순서로 구성되어 있습니다. 챕터 끝의 "완료로 표시" 버튼으로 진도를 관리하세요.

기초 — ClickHouse라는 세계관

01. ClickHouse 개요 — 왜 빠른가

행 저장 vs 열 저장, 벡터화 실행, MergeTree의 설계 철학. 모든 것의 출발점입니다.

기초

02. 내부 컴포넌트와 쿼리 처리

SQL 한 줄이 Parser → Interpreter → Processor 파이프라인을 통과해 결과가 되기까지.

중급

03. Context · 스레드 · 동시성

설정 6단계 머지, 스레드 풀 계층, CPU slot 기반 동시성 제어. 서버 내부의 교통정리.

고급

MergeTree 핵심 — 스토리지 엔진 해부

04. Table Parts — 파트 구조

INSERT가 만드는 immutable 파트의 내부: column.bin, 마크 파일, primary.idx.

중급

05. Table Partitions — 파티션

PARTITION BY의 진짜 용도는 쿼리 최적화가 아니라 데이터 lifecycle 관리입니다.

중급

06. Part Merges — 백그라운드 머지

작은 파트들이 큰 파트로 합쳐지는 과정과 merge-time computation의 마법.

중급

07. Primary Index — 희소 인덱스

수조 행에서도 인덱스가 메모리에 다 올라가는 비밀, granule과 이진 탐색.

중급

분산과 운영 — 프로덕션으로

08. Shards & Replicas

수평 확장과 고가용성. 샤딩·복제 아키텍처와 "자동 리밸런싱 없음"의 의미.

고급

09. INSERT 전략

배치 INSERT, async insert, 중복 제거. "Too many parts"를 피하는 실전 기법.

중급

10. 안티패턴 모음

소량 빈번 INSERT, 과도한 파티셔닝, 잘못된 ORDER BY… 남들이 밟은 지뢰 모음.

기초

11. 모니터링과 트러블슈팅

system 테이블로 서버 들여다보기. 장애 상황별 진단 쿼리와 대응 절차.

중급

추천 학습 경로

🚀 빠른 시작 (반나절)

ClickHouse가 처음이라면: 1장4장7장9장. "왜 빠른가"와 "어떻게 넣어야 하는가"만 먼저 잡습니다.

🧠 엔진 이해 코스

내부 구조가 궁금하다면 순서대로 정독: 1장2장3장4장~7장. MergeTree의 전체 수명주기가 연결됩니다.

🛠 운영자 코스

이미 운영 중이라면: 5장9장10장11장. 파트 폭증·머지 지연 같은 실전 문제 중심입니다.

📦
원문 저장소의 부록 자료

이 가이드의 원문 저장소에는 챕터 외에도 실습 자료가 있습니다 — examples (실습 예제) · troubleshooting (장애 사례) · cheatsheets (치트시트)