Built from zero
300B+rows
327.43 billion rows in 2.08 TiB, the largest table 100.78 billion · 2026-09-03The proof-of-play platform behind 15,000 screens
- Designed
- One row per ad play, as billing evidence, from screens that lose the network for hours. Playlogs cached on the device, uploaded in batches to an ingestion server, then Kafka into self-managed ClickHouse. MQTT only for presence and telemetry.
- As it grew
- Two billion rows in MySQL stopped being reasonable, so the store moved to ClickHouse on bare metal. Sort key chosen for the queries first, then one codec pair per column profile, tested over about sixty variations with the heaviest query in the loop.
- Running
- 200 million rows a day for years. 5.5x overall, 269.6x on the sort-key timestamp, 4.37 bytes per row. The fleet went from the first screen to 15,000 on the same design.