グラフデータベースは、NoSQLデータベースの中で注目の存在だ
中でも今後利用が拡大するのではと思っているのが、グラフデータベースだ。ここ最近の大きな話題としては、グラフデータベースの老舗的存在である「Neo4j」が、パナマ文書の解析に使われた。これは、データ間の関係性を見出すのが得意なグラフデータベースならではの使い方だろう。
そんなグラフデータベースについては、分散型のNoSQLデータベースであるCassandraを提供するDataStaxが、グラフ形式のデータを扱える新機能「DataStax Enterprise Graph」の提供を開始している。さらにOracleでは、従来空間情報を扱う機能だったOracle Spatialが「Oracle Spatial and Graph」とグラフデータベース機能を加え拡張している。他には、最近話題のSparkにも「GraphX」と言うグラフデータを扱う機能がある。
GraphSQLはグラフデータベースのルーキー
純粋なグラフデータベースでも、新たな製品が登場している。その1つが「GraphSQL」だ。GraphSQLのCEOであるユー・シュ氏は、「米国を中心に多くの人が、データを扱う上での課題解決のためによりフレキシブルなデータモデルを持つ拡張性のあるデータベースを求めています」と語る。その1つの答えがグラフデータベースというわけだ。
とはいえ、これまでのグラフデータを扱う仕組みでは十分な性能が発揮できなかった。その問題を解決するために提供したのがGraphSQLだ。従来のリレーショナルデータベースは、スキーマを定義しデータを入れるために正規化した枠を作る。その枠にデータを当てはめ、取り出し方もあらかじめ決めておく。リレーショナルデータベースでは、枠に入れたデータに対し後からJoinを行い関係性を作る。これに対してグラフデータベースは、最初からデータ間の関係性を含めデータベースに入れている。これにより極めてデータの関係性を扱いやすいデータベースができる。
「GraphSQLはリアルタイム処理ができるパワフルなエンジンと、データにアクセスするためのGSQLというクエリ言語のインターフェイス、さらにデータを取り込むためのETLで構成されています。コンソールからGSQLで直接グラフデータを扱うこともでき、アプリケーションからはRESTful APIでアクセスします」(シュ氏)
GraphSQLの強みは、まずはスピード。最近のハードウェア環境に対応しており、データを圧縮してインメモリーも活用する。マルチコアのプロセッサにも最適化しており、並列処理が効率的に行えるエンジンとなっているのが特長だ。加えてGSQLという「ハイレベルの言語」があることが、他のグラフデータベースに対する優位性になるとシュ氏。GSQLを使って、グラフデータをリアルタイムに更新できる。「簡単に使え、既存のグラフデータベースが抱えている課題を解決しています」とのこと。このGraphSQLのエンジン部分は、性能を重視しているのでJavaではなくc++を用いて構築されている。
一方、GraphSQLで弱いところは、処理結果のビジュアライズの部分だ。ビジュアライズのための基本的な機能は持っているが「GraphSQLの中でビジュアライズの機能をどこまで持つべきかは悩ましいところです」(シュ氏)。ビジュアライズの課題解決方法の1つが、Tableauとのインターフェイスの提供だ。BIツールとして頭角を現しているTableauのオープンなインターフェイスに対して、JSON形式のデータを渡すことで見やすい表示を実現する機能も用意されている。