【れつしこうでーたべーす】

列指向データベース とは?

最終更新:
💡 縦読みが得意な分析特化のデータベース

同じ列の値をまとめて格納するデータベース。必要な列を多数の行にわたって集計する分析処理に向く。ClickHouseやAmazon Redshiftが例。

📌 このページのポイント
同じ表でも、保存のまとまりが違う 行指向 列指向 名前 年齢 名前 年齢 田中 30 鈴木 25 佐藤 35 田中 30 鈴木 25 佐藤 35 1人分をまとめる 同じ列をまとめる 平均年齢:30歳 年齢列を読み出す 列指向の例:ClickHouse / Redshift
枠が保存のまとまりを示す簡略図。平均年齢の集計では、年齢列の値が必要になる。実際のブロック配置や性能は製品・データによる。
ひよこ ひよこ
列指向って、行指向とどう違うの?
ペンギン先生 ペンギン先生
行指向は、田中さんの名前・年齢などを1行分まとめて保存する方式。列指向は全員の名前をまとめ、全員の年齢をまとめる、といった方式だよ。表の見た目ではなく、保存するときのまとまりが違うんだ
ひよこ ひよこ
それって何がうれしいの?
ペンギン先生 ペンギン先生
例えば平均年齢なら、必要なのは年齢の列だよね。列指向ではその列をまとめて読み出せるので、不要な列を含む読み取りを減らしやすい。集計する行数や列数、索引などの条件によって、実際の速さは変わるよ
ひよこ ひよこ
じゃあ、1人分のデータを取り出すときは?
ペンギン先生 ペンギン先生
複数の列から値を集める必要があるよ。少数の行を頻繁に読み書きする処理では、行指向が適する場合が多い。列指向は多数の行を集計する分析処理が主な用途だけれど、全ての検索が必ず遅いとは決まらないんだ
ひよこ ひよこ
圧縮しやすいって聞いたけどなぜ?
ペンギン先生 ペンギン先生
同じ列には同じ型の値が集まるので、その型や値の並びに合う圧縮方式を選びやすいからだよ。どれだけ小さくなるかはデータや方式による。ClickHouseやAmazon Redshiftは列指向の例で、列指向でもSQLを使えるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「列指向データベース」って出てきたら「列ごとに保存して、大量の行を集計しやすくしたデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「Columnar Database」 = 列指向データベース
💬 Columnarは「列の」という意味で、データを列ごとにまとめて保存する方式を表しているよ

参考資料

← 用語集にもどる