5年前にNoSQLを追いかけ始めたとき、筆者はその革新的なスキーマの柔軟性、スケーラビリティ、プログラムのしやすさに興味をそそられた。しかし同時に、あまりにも多くの点で未熟であることにも衝撃を受けた。たとえば多くの製品は、結合や(主キー以外の)インデックス、クエリ言語、ストアドプロシージャ、洗練されたセキュリティ、コストベースのオプティマイザなどの機能を備えていなかった。まるで、これらのデータベースの作者が、リレーショナルデータベースの世界に幻滅するあまりに、その成熟度やエンタープライズ分野での使い勝手などの長所も含め、あらゆる要素を否定していたかのようだった。
しかし、NoSQLデータベース製品が年齢を重ね、エンタープライズ市場を狙うようになった今では、状況も変わった。そんな中、Neo Technologyのグラフデータベース「Neo4j」に、ソフトウェア製品にとって重要な節目である3つめのバージョンがリリースされた。Neo4jの存在自体はこの業界で広く知られているが、詳しく知る人はおそらく少ないはずだ。この節目を迎えるにあたって、Neo4jには多くの重要な機能が追加された。
開発者向けの機能
第1に、Neo4jには、多数の開発者向けの機能が追加された。これは、製品が普及するには重要なポイントだ。まずNeo Technologyは、Neo4jにJavaScript、Java、Phython、および(エンタープライズ市場では重要な)C#/.NETの各言語用に、新たに公式ドライバを導入した。これらのドライバは、Neo4jとの通信に用いる「Bolt」と名付けられた新たなバイナリプロトコルを使用することで、カスタムアプリケーションとの間のインターフェースを最適化している。
ツールに関しては、「Neo4j Browser」が「Neo4j Sync」と呼ばれるクラウドベースの同期メカニズムと連携するようになった。これにより、開発者のワークスペースをマシン間で移動することが可能になった。
これで終わりではない。Neo4jでは、JavaやJVMベースの任意の言語で記述可能なストアドプロシージャが使用できるようになった。さらに、JDBCによるほかのデータベースへの接続機能も追加された。これは、ストアドプロシージャによって、Neo4jとほかのデータベース(多くの場合は従来型のRDBMS)のデータを統合し、結果をグラフ形式で返すことが可能になったことを意味している。それに加え、ストレージエンジンが改良され、グラフサイズやインデックスサイズの制限をはじめとして、さまざまな制約が撤廃されたことで、ミッションクリティカルなワークロードに利用しやすくなった。
クラウドとコンテナ
もちろん、製品の成熟度は、以前からある要件をどれだけ満たしたかだけで測れるものではない。業界で起こっている新たな変化にどれだけ適応できるかも重要なポイントだ。この分野で最も重要なトレンドの1つは、コンテナ技術だ。Neo4jでは、Dockerとの互換性を最適化するために、ファイル、config、ログに新しい構造が用意された。
これはかなり大きなことで、開発者はグラフデータベース技術の習得に対する優先順位を引き上げるべきかもしれない。グラフデータベース技術の自習については、Neo Technologyのスタッフから「Graph Academy」を利用することを勧められたが、これはかなり優れた教材のように思える。
グラフデータベースの広がり
グラフデータベースは今後も普及していき、しかもNeo4jのような独立した製品以外のものも登場すると予想される。実際、2週間前には、「Cassandra」のベンダーであるDataStaxが、「DataStax Enterprise」にグラフデータベース機能を追加したと発表した。これは、グラフデータベースが一般的になりつつあることを示しているように思える。また筆者は、1社または複数のRDBMSベンダーが、今後のリリースでグラフデータベース機能を追加してもおかしくないと考えている。
これらのスキルを身につけておくべき時期かもしれない。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。