What is Columnar Storage? Columnar Databases Explained for Beginners
Same 100 million orders, same SUM(amount). Row store reads 14.4 GB in 12 seconds. Columnar reads 64 MB in 0.15 seconds. No index, no faster hardware, just which bytes sit next to which bytes on disk. This is a beginner explainer for columnar storage: what it actually is, why row storage was the right first design for 40 years, and the two mechanisms that make columnar faster for analytics. Column skipping only explains about 12x of the gap; the rest comes from compression that only works when similar values sit together, so I go through run-length, dictionary, and delta encoding with the real per-column ratios from the measured Parquet file (channel at 420:1, order ID at 7.9:1). Then row groups and min/max statistics, why ClickHouse asks for an ORDER BY, where columnar shows up today (Parquet, ClickHouse, DuckDB, BigQuery, Snowflake, Arrow), and four things people get wrong about it, including why your application database should stay row-oriented. Every number is from a measurement run on Postgres and Parquet, not a vendor benchmark. ⏱️ Chapters 0:00 - 14.4 GB vs 64 MB for the same query 0:56 - What this video covers 1:20 - Row store vs column store: the definition 2:24 - Why row storage was the right design for 40 years 3:02 - Opposite access patterns, opposite layouts 3:21 - Mechanism 1: reading only the column you need 3:58 - Why skipping alone is only 12x, not 225x 4:14 - Mechanism 2: columns compress in a way rows can't 4:48 - Run-length, dictionary, and delta encoding 5:12 - Real compression ratios column by column 5:58 - How the two mechanisms multiply 6:25 - Why bytes matter more than disk space 7:05 - Row groups and min/max statistics 7:52 - Why ClickHouse asks for ORDER BY 8:12 - Where columnar lives: Parquet, ClickHouse, DuckDB, Arrow 8:56 - Misconception 1: columnar is always faster 9:20 - Misconception 2: you can't update rows 9:41 - Misconception 3: columnar is a type of database 10:00 - Misconception 4: the point is saving disk 10:28 - Recap 🔗 Links Apache Parquet: https://parquet.apache.org DuckDB: https://duckdb.org ClickHouse: https://clickhouse.com Apache Arrow: https://arrow.apache.org PostgreSQL: https://www.postgresql.org #columnarstorage #columnardatabase #Parquet #ClickHouse #DuckDB #dataengineering #rowvscolumn #databaseinternals #datacompression #analytics #OLAP #datalake #ApacheArrow #BigQuery #Snowflake