PR

 情報システムでは、様々な構造のデータを扱う。RDBだけで処理していた時代は、表とその関連付けをデータごとに設計することで対処していた。NoSQLとRDBが存在する今は、その使い分けが課題になってきた。

NoSQLとRDBを組み合わせる

 例えばNECは、約5000万台の自動車に対して渋滞情報やクーポンなどを配信するデモシステムで、分散KVSと列指向型のデータベースを組み合わせた分散システムを開発した(図3)。NECの千嶋博システムプラットフォーム研究所研究部長は「複数のデータベースを使い分けるのは、シンプルなモジュールを組み合わせて、スケ ールアウトしやすい基盤を確立するため」と狙いを説明する。

図3●NECのシステムプラットフォーム研究所が開発した自動車管理用ハイブリッドデータベース
図3●NECのシステムプラットフォーム研究所が開発した自動車管理用ハイブリッドデータベース
約5000万台の自動車の位置情報やバッテリー残量などを収集し、クーポンを発行するデモシステムを構築。自動車からの情報を分散KVSに格納しながら、イベント処理エンジン(CEP)と、データ構造変換サーバーを介して分析用の列指向データベースに振り分ける
[画像のクリックで拡大表示]

 分散KVSの役割は、毎秒100万件のデータの格納だ。自動車の位置情報や速度などの運転状況、クーポンの利用履歴を5000万台分、漏れなく記録する。

 分散KVSのソフトウエアは、NECが独自開発した。重視したのは、トランザクション処理の一貫性だ。複数のデータベースクライアントが同時に更新しようとした際に、データの矛盾が起こらないようにした。「一貫性を保つ仕組みを用意しなければ、基幹系では使いにくい」(NECの鳥居隆史システムプラットフォーム研究所研究マネージャー)と判断した。

 具体的には、データベースクライアントごとに仮想的な更新領域を設けて、その領域のデータに対して更新をかける。データベースクライアントが元データに直接書き込むのではなく、分散KVSがコピーした更新対象にデータを書き込む手法である。

 もう一方の列指向型データベースは、クーポンの利用履歴や利用率などを店舗や地域ごとに分析するのに使う。

 これら分散KVSサーバーや分析用サーバーは、すべてスケールアウトが可能だ。デモシステムを構成するサーバーの数を増やせば、1秒ごとのリアルタイムデータ処理も実現可能という。