← All courses

⚡ 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

  1. 01

    ClickHouse — What It Is For, and What It Is Deliberately Bad At

    coreintermediatecoming soon
  2. 02

    Types as Compression — LowCardinality, Fixed Widths, and the Cost of Nullable

    coreintermediatecoming soon
  3. 03

    MergeTree — The Sorting Key Decides Which Queries Are Fast

    coreintermediatecoming soon
  4. 04

    Inserts — Why Row-at-a-Time Kills This Database, and What to Do Instead

    coreintermediatecoming soon
  5. 05

    Aggregate Combinators — -If, -State and argMax, and Why the Function List Composes

    intermediatecoming soon
  6. 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

  1. 01

    The MergeTree Family — Replacing, Summing, Collapsing, and What 'Eventually' Means

    coreadvancedcoming soon
  2. 02

    Materialized Views Are Insert Triggers — Not Cached Queries

    coreadvancedcoming soon
  3. 03

    Projections and Skip Indexes — A Second Sort Order Without a Second Table

    advancedcoming soon
  4. 04

    Dictionaries and Integration Engines — Reading Other Systems as Tables

    advancedcoming soon
  5. 05

    JOINs — Why the Right Table Goes in Memory, and What to Do Instead

    coreadvancedcoming soon
  6. 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

  1. 01

    EXPLAIN and system.query_log — Finding Out What the Query Actually Read

    coreadvancedcoming soon
  2. 02

    Mutations and TTL — Updates That Rewrite Parts, and Deletes That Are Not Deletes

    coreadvancedcoming soon
  3. 03

    Distributed Tables — What Changes About Your Query When There Are Shards

    advancedcoming soon
  4. 04

    What You Gave Up — No Foreign Keys, No Transactions, and Eventual Everything

    coreadvancedcoming soon
  5. 05

    BACKUP, RESTORE and FREEZE — Why an Immutable Part Can Simply Be Copied

    coreadvancedcoming soon
  6. 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