InfiniDBは、「列指向データベース」です。

列指向型アーキテクチャは、InfiniDBのようにDWH用のデータベースに採用されることが多いアーキテクチャです。

一般的によく知られる汎用データベースは「行」でデータを管理しています。航空券のチケット予約管理やECサイトの会員情報の管理といったようなOLTP系の処理においては、1行単位でデータの更新が頻繁に行われるため「行」でデータを管理することで効率良く処理することができます。
(例:チケットの予約、会員情報の更新処理など)

しかし、DWH用途など大量データの検索や集計を行う場合は、特定列のデータのみが大量に必要になることが多く、例えば、次の「ある期間の売上金額の合計」を求めるSQLの場合、必要な列は「価格」「割引率」「注文日」の3つの列のみです。

例)「ある期間の売上金額の合計」を求めるSQL




汎用データベースではこの処理を行う場合、SELECT文で列を指定したとしても、一旦「行」全体にアクセスし、その後必要な列データを取り出します。そうすると、本来この処理には必要のない「注文番号」や「顧客ID」といった列にもアクセスしてしまいます。(図1 上段)。

図1 列指向型データベースの特徴
cloumn-architecture

一方、列指向型データベースの場合は「列」単位でデータを管理しています。そのためこのSQLを実行した場合は「価格」「割引率」「注文日」のみにアクセスして処理を行うことができます。(図1下段)

SQLの処理にかかる時間の多くは、データ読み込みで発生するディスクI/Oによるものです。
列指向型データベースでは、このように必要のない列データへのアクセスを行わないことで、極力ディスクI/Oを削減し処理の高速化を実現しています。