⚡ ClickHouse
Columnar storage on a server, at scale — MergeTree and the sorting key that decides everything, table engines, materialized views that are insert triggers, and why the same table is ten times smaller.
No lessons published yet — this is the roadmap, so you can see exactly what the course will cover before it lands.
Before you start: Learn SQL — Series 1 and Series 2. Every episode is a query over a large table. You need aggregates, joins and window functions already; what this track teaches is why they are fast here, and the two or three places this engine will not do what you expect.
Short on time? The 14 episodes marked core are the shortest path to being productive at work. Start there and pick up the rest whenever a job asks for them.
Series 1 · ClickHouse Essentials
MergeTree, the sorting key, and getting data in
- 01
ClickHouse — What It Is For, and What It Is Deliberately Bad At
coreintermediatecoming soon - 02
Types as Compression — LowCardinality, Fixed Widths, and the Cost of Nullable
coreintermediatecoming soon - 03
MergeTree — The Sorting Key Decides Which Queries Are Fast
coreintermediatecoming soon - 04
Inserts — Why Row-at-a-Time Kills This Database, and What to Do Instead
coreintermediatecoming soon - 05
Aggregate Combinators — -If, -State and argMax, and Why the Function List Composes
intermediatecoming soon - 06
Project — Load a Large Table and Make One Question Fast
coreintermediate#projectcoming soon
Series 2 · Table Engines and Materialized Views
the family of engines, and views that fire on insert
- 01
The MergeTree Family — Replacing, Summing, Collapsing, and What 'Eventually' Means
coreadvancedcoming soon - 02
Materialized Views Are Insert Triggers — Not Cached Queries
coreadvancedcoming soon - 03
Projections and Skip Indexes — A Second Sort Order Without a Second Table
advancedcoming soon - 04
Dictionaries and Integration Engines — Reading Other Systems as Tables
advancedcoming soon - 05
JOINs — Why the Right Table Goes in Memory, and What to Do Instead
coreadvancedcoming soon - 06
Project — A Raw Table, a Materialized View, and a Rollup That Stays Correct
coreadvanced#projectcoming soon
Series 3 · Running Queries Well
reading the plan, mutations, and the guarantees you do not get
- 01
EXPLAIN and system.query_log — Finding Out What the Query Actually Read
coreadvancedcoming soon - 02
Mutations and TTL — Updates That Rewrite Parts, and Deletes That Are Not Deletes
coreadvancedcoming soon - 03
Distributed Tables — What Changes About Your Query When There Are Shards
advancedcoming soon - 04
What You Gave Up — No Foreign Keys, No Transactions, and Eventual Everything
coreadvancedcoming soon - 05
BACKUP, RESTORE and FREEZE — Why an Immutable Part Can Simply Be Copied
coreadvancedcoming soon - 06
Project — Redesign a Slow Table Around Its Real Query
coreadvanced#projectcoming soon
Not here, on purpose
- SQL itself — covered in Learn SQL
- Why columnar storage is fast for analytics — covered in Data Warehousing, Series 2 · 00. Assumed here
- Designing the star schema you load into it — covered in Data Modeling, and loaded in Data Warehousing
- Running a cluster — sharding topology, ZooKeeper/Keeper operations — covered in Data Ops for the operational discipline. In this course, Series 3 · 10 covers only what a query author must know about distribution, and Series 3 · 17 teaches BACKUP, RESTORE and FREEZE