【れつしこうでーたべーす】
列指向データベース とは?
最終更新:
💡 縦読みが得意な分析特化のデータベース
同じ列の値をまとめて格納するデータベース。必要な列を多数の行にわたって集計する分析処理に向く。ClickHouseやAmazon Redshiftが例。
📌 このページのポイント
- 同じ列の値をまとめて格納し、分析に必要な列を読み出す
- 多数の行の一部の列を集計するOLAP用途に向く
- 列の型や値に合う圧縮を使いやすいが、圧縮率はデータによる
- ClickHouseやAmazon Redshiftが例で、SQLも利用できる
列指向って、行指向とどう違うの?
行指向は、田中さんの名前・年齢などを1行分まとめて保存する方式。列指向は全員の名前をまとめ、全員の年齢をまとめる、といった方式だよ。表の見た目ではなく、保存するときのまとまりが違うんだ
それって何がうれしいの?
例えば平均年齢なら、必要なのは年齢の列だよね。列指向ではその列をまとめて読み出せるので、不要な列を含む読み取りを減らしやすい。集計する行数や列数、索引などの条件によって、実際の速さは変わるよ
じゃあ、1人分のデータを取り出すときは?
複数の列から値を集める必要があるよ。少数の行を頻繁に読み書きする処理では、行指向が適する場合が多い。列指向は多数の行を集計する分析処理が主な用途だけれど、全ての検索が必ず遅いとは決まらないんだ
圧縮しやすいって聞いたけどなぜ?
同じ列には同じ型の値が集まるので、その型や値の並びに合う圧縮方式を選びやすいからだよ。どれだけ小さくなるかはデータや方式による。ClickHouseやAmazon Redshiftは列指向の例で、列指向でもSQLを使えるんだ
📖 おまけ:英語の意味
「Columnar Database」 = 列指向データベース
💬 Columnarは「列の」という意味で、データを列ごとにまとめて保存する方式を表しているよ