列指向データベースは、従来のリレーショナルデータベースマネジメントシステム(RDBMS)に比べ、特定の利用シーンで大きな能力を発揮する。William McKnight氏は先週、NoSQL Now 2011カンファレンスにて、列指向データベースが如何にしてある種のデータストレージのニーズを効率よく扱うかについて話をした。
氏が言うには、RDBMS(データを行単位で扱うように設計されている)を使ったデータ問い合わせではたくさんのデータを取り出してしまう。現在、データの入出力(I/O)はデータ処理の上で真のボトルネックになってしまった。I/Oの際は、一度のI/Oで必要なデータを取り出せた方がいい。この問題を解決するには本当い必要な時にだけI/O処理をするようにしなければならない。列指向データベースは必要な列だけを取り出し、行全体を読み込まず、必要のない列も利用しないでデータの検索ができる。この方法は、全体の列のうちの数%しか使わない場合に大きな効果を発揮する。
列指向データベースでは、データは列に保存され、すべての列は同じ順に並ぶ。William McKnight氏はリレーショナルデータベースのレコードのデータのページレイアウトについて説明し、これを列指向データベースのデータテーブルと比較した。氏によれば、行ページの設計(RDBMSデータベースの)にはある程度のオーバヘッドがある。データ問い合わせに行スキャンやインデックススキャンが使われるが、すべてのデータをスキャンしなければならないとき、高コストな処理になってしまうからだ。氏はあるユースケースで行指向のデータベースで500,000のI/Oが必要だったのが、列指向のデータベースでは235のI/Oで済んだ例を挙げた。
列指向データベースには分解ストレージモデル、位取り表現法、修正B-Tree/Row長暗号、ビットマップのようないくつかの異なる選択肢がある。また氏は、'射影'の役割や早期マテリアライゼーションや後期マテリアライゼーションと言われる方法など、出力結果の中間生成物を作るための方法についても話した。
VerticaやParAccel、Sybase IQ、InfoBright、Exasol、VectorWiseが列指向データベースのベンダだ。また、MonetDBやInfiniDBのようなオープンソースの実装もある。
氏が言うには、リレーショナルな行ベースのデータウエアハウスやデータマートはこれからも存在し続ける。このようなデータウエアハウスやHadoopのようなフレームワークに加えて、列指向データベースを使ってデータをより高速に処理するという選択肢も出てくるだろう。データベースの設計者は優れた設計原則から出発して、行ベースのデータベースか列ベースのデータベースのどちらを使うのか決める必要がある、という考えを表明して氏はセッションを終えた。
Srini Penchikala氏 は現在セキュリティアーキテクトとして働き、17年のソフトウエアのプロダクトマネジメントの経験を持つ。