Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

ClickHouse Coordinates a Cluster-Wide Backup with ZooKeeper

Oct 23, 2026 22 min read Jay Hubbert

A cluster-wide backup is a ZooKeeper-coordinated election: one owner per data file, a stage barrier between phases, and a consensus loop over metadata.

ClickhouseBackupsZookeeperDistributedInternals

Read more →

ClickHouse Deletes Expired TTL Rows Only When Parts Merge

Oct 23, 2026 17 min read Jay Hubbert

ClickHouse stores a per-part TTL expiry bound and removes expired rows during a merge, using a bit mask rather than a rewrite.

ClickhouseInternalsMergetreeTtlPerformance

Read more →

ClickHouse Generates an Unbounded Number Stream in Constant Memory

Oct 23, 2026 13 min read Jay Hubbert

numbers() is a generator that iota-fills one column per block and keeps only a counter in memory.

ClickhouseInternalsPerformanceTable functions

Read more →

ClickHouse Incremental Backups Store Only the Changed Tail of a File

Oct 23, 2026 16 min read Jay Hubbert

Incremental backups reuse the base backup’s bytes: only the suffix after a verified shared prefix is uploaded, and the restore concatenates the two halves.

ClickhouseBackupsIncrementalInternals

Read more →

ClickHouse Keeper Carries a Tree Digest in Every Raft Log Entry

Oct 23, 2026 14 min read Jay Hubbert

Keeper puts a digest of its node tree inside every Raft log entry; a follower whose recomputed digest disagrees with the leader’s kills itself.

ClickhouseKeeperRaftZookeeperInternals

Read more →

← Newer Page 6 of 40 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·