Row storage
Klassisk DB-layout: rader lagras kontigt — alla kolumner för rad 1, sen alla kolumner för rad 2. Optimal för OLTP där queries returnerar few rows med many columns. Standard i PostgreSQL, MySQL, Oracle.
Vinst: läs en rad = en disk-IO. Insert en rad = append till page-end. Förlust på analytics: SELECT AVG(price) FROM trades läser hela rader (kanske 100 kolumner) bara för att få en kolumn → 100x extra IO vs columnar. PostgreSQL heap är klassisk row-storage. InnoDB är clustered-index-baserad (rader fysiskt sorterade på PK). Modern hybrid: PostgreSQL har en row-store default, lägger column-stores som extension (citus, hydra) eller foreign tables (parquet_fdw).