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

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

💡 縦読みが得意な分析特化のデータベース
📌 このページのポイント
行指向 vs 列指向のデータ格納 行指向 田中 30 開発 500万 鈴木 25 営業 400万 佐藤 35 開発 600万 → 行ごとにまとめて格納 列指向 田中 鈴木 佐藤 30 25 35 開発 営業 開発 500万 400万 600万 → 列ごとにまとめて格納 AVG(年収) = 500万 年収列だけ読めばOK! 名前 年齢 部署 年収 ClickHouse Redshift Cassandra
行指向と列指向のデータ格納方式の比較
ひよこ ひよこ

列指向って、普通のデータベースは何指向なの?

ペンギン先生 ペンギン先生

普通のデータベースは「行指向」だよ。例えば社員データなら、田中さんの名前・年齢・部署をまとめて1行として保存する。列指向は逆で、全社員の「名前」をまとめて保存、全社員の「年齢」をまとめて保存、という具合に列ごとに固めるんだ

ひよこ ひよこ

それって何がうれしいの?

ペンギン先生 ペンギン先生

「全社員の平均年齢を出して」と言われたとき、行指向だと全行を読まないといけない。でも列指向なら「年齢」の列だけ読めばいいから圧倒的に速いんだ。100万行あっても必要な列だけスキャンすればOKだよ

ひよこ ひよこ

じゃあ普通の検索は遅くなるの?

ペンギン先生 ペンギン先生

そのとおり!「田中さんのデータを全部取得」のように1行分のデータを丸ごと欲しいときは、各列から集めないといけないから行指向より遅くなるんだ。だから列指向はOLTPトランザクション処理)には向かず、OLAP(分析処理)に使われるよ

ひよこ ひよこ

圧縮率が高いって聞いたけどなぜ?

ペンギン先生 ペンギン先生

同じ列には似たようなデータが並ぶからだよ。例えば「部署」列には「営業」「開発」「人事」が繰り返し出てくるよね。これを圧縮すると元の10分の1以下になることもある。ClickHouseなんかは圧縮が特に得意で、ペタバイト級のデータもサクサク分析できるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「列指向データベース」って出てきたら「大量データの集計・分析が超高速なデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Columnar Database」 = 列指向データベース
💬 Columnarは「列の」という意味で、データを列ごとにまとめて保存する方式を表しているよ
← 用語集にもどる