Horizontal partitioning splits rows into separate chunks (shards/partitions). Vertical partitioning splits columns into separate stores/tables.
Horizontal (by rows): orders_2026_09_01 | orders_2026_09_02 | orders_region=IN (same columns, different row sets) Vertical (by columns): orders_core(id, user_id, amount, dt) orders_pii(id, email, phone) <- separate access / storage
Why horizontal
- Scale out, parallel jobs, partition prune by date/region
- Common in lakes, warehouses (
PARTITION BY dt), Kafka partitions
Why vertical
- Isolate wide/rarely used columns or PII
- Faster scans of "hot" columns
- Different retention or encryption policies
Do not confuse with
- Normalization (relational modeling)
- Replication (copies for durability)
Interview tip: "Horizontal = row splits; vertical = column splits." Give date partitions vs PII column separation as examples.