分析は一部の列を大量に読むので、列ごとにまとめて圧縮する列指向が速い。
業務 DB の多くは行指向で、1行のすべての列をまとめて保存します。1件の注文を読んだり書いたりするのに向いています。分析では「1億行の中の金額と日付の列だけ」を読むことが多いので、列ごとにまとめて保存する列指向のほうが、読む量がずっと少なくて済みます。Parquet は列指向のファイル形式の定番で、データレイクやレイクハウスの標準になっています。
| 行指向(CSV・業務 DB) | 列指向(Parquet・ORC・DWH) | |
|---|---|---|
| 得意 | 1行の読み書き・更新 | 一部の列を大量に読んで集計 |
| 読む量 | 使わない列も読む | 使う列だけ読む |
| 圧縮 | 効きにくい | 同じ型・似た値が並ぶので効きやすい |
| 苦手 | 大量の集計 | 1行ずつの更新・追記 |
面接ではこう答える
業務 DB の多くは1行の全部の列をまとめて保存する行指向で、1件の読み書きに向きます。分析では1億行の中の数列だけを読むことが多いので、列ごとにまとめて保存する列指向のほうが読む量がずっと少なく、同じ型の値が並ぶので圧縮も効きます。Parquet は列指向のファイル形式の定番で、DWH の内部も列指向です。そのかわり列指向は1行ずつの更新や追記が苦手です。
Dataとの関わりファイル形式の選択、DWH の料金、SELECT * をやめる理由など、データ基盤のコストと速さの話の土台です。