列指向データベース管理システム
列指向データベース管理システムは、データベース管理システム (DBMS) の内部構造において、列のデータをひとまとまりにして取り出すときに効率的であるように設計されたものである。これはデータウェアハウスや図書館のカタログのように、大量の類似のデータ項目に対し集計が行われるものに対して有用である。このアプローチはvalue-basedなストレージ構造を使用する行指向データベースや相関データベースと対比される。
列指向データベース管理システムは、一般的に「カラムナデータベース」 (Columnar Database) とも呼ばれる。
ある列に含まれるデータの型は一致しているので、行指向データベースでは難しいストレージ効率の最適化も、列指向データベースでは採用できる可能性がある。似た値が近い場所に配置されるため、繰り返しを効率よく圧縮できるLZWなどのデータ圧縮を適用できる余地がある。このような圧縮を行指向データベースに適用しても、列指向と比べて効率は劣る。特に列方向に同一の値が多数ある場合や、疎行列のように値が割り当てられていないフィールドの比率が高い場合には、圧縮効率は飛躍的に高まる。
一方、ランダムアクセス性能はトレードオフになる。ある1行の列全体を取得する場合には、行指向データベースのように、その行のデータを一箇所に集めて配置したほうが効率的である。列指向データベースで連続する値を圧縮している場合には、読み取りのたびに展開処理が必要になるため、ランダムアクセスは特に難しくなる。そのため、列指向データベースでは圧縮されたデータにアクセスする必要性を減らす機構が追加されている場合もある。.