富士通研究所は2月26日、データベースシステム上のタイムリーな大規模データ分析を可能にする、列形式のデータ格納と処理エンジンを開発したと発表した。オープンソースソフトウェア(OSS)のデータベース「PostgreSQL」の分析処理を50倍以上高速化し、メモリ容量が少ない中小規模のコンピュータシステムでも最新のデータが反映されたリアルタイムなデータ分析が可能になるという。
富士通のデータベース製品「FUJITSU Software Symfoware Server」への搭載に向け、2015年度中の実用化を目指す。
今回、PostgreSQL上で行形式データの更新を瞬時に反映でき、メモリ搭載量によらない列形式のデータ格納と、列形式データを高速に処理する実行エンジンを開発。列形式のデータの管理方法を工夫することで大容量の列形式データ格納を実現したと説明。一般のデータベースシステムが備えたインデックスの中で高速に分析でき、行形式や列形式といった格納方式の違いを意識することなく利用できるという。
列形式データ処理に適した並列分析処理エンジンで読み出し、フィルタリング、集計を実行するベンチマークで従来と比較して1CPUコアで4倍、15CPUコア搭載のサーバ1台で50倍以上高速に分析できると説明している。
通常、メモリに入りきらない大容量の列形式データを効率的に管理するため、“エクステント”と呼ぶ大きな単位(約26万レコード単位)で領域の確保や削除、さらに空き領域回収といったデータ領域を管理する。大きな単位で管理すると分析処理が長時間待たされるという問題が発生する。
これを防ぐために、複数の利用者からの同時処理要求を一貫性を保って処理するための仕組みで、多くのデータベースシステムで用いられる“同時実行制御(MultiVersion Concurrency Control:MVCC)”をエクステントに導入し、分析処理とデータ領域管理が同時に進行できるようにした。
他のインデックス同様、列形式(カラムストア)インデックスを作成することで、データベースが問い合わせする内容に応じて行形式か列形式の適切なデータ格納方式を選んで、処理するようになる。カラムストアインデックスを作成した元の行形式データの更新にも追随して、列形式データも自動的に更新されるため、利用者は格納方式の違いを全く意識することなく利用できるという。
新開発のアーキテクチャ(富士通研提供)
列形式データの効果を十分に引き出すには、列形式データ化でデータの読み出し性能を上げるだけでは不十分とされる。そこで、複数データに対して一括して同じく処理するベクトル処理方式を分析処理エンジンに採用することで1並列時の性能を向上させたとしている。
並列実行による分析処理の高速化の効果を高めるために、PostgreSQLで並列動作する複数のプロセス間が低遅延でデータを受け渡しできるようメモリ共有の仕組みを新たに開発した。これによりCPUが15コアのサーバ1台で、従来のPostgreSQLの50倍以上の性能を達成できると説明している。