Neo Technologyは,Neo4j 2.0の一般提供を開始すると発表した。新しいグラフブラウザ,ノードラベル,オプショナルスキーマ,改良型Cypherを備える。
もっとも注目すべき改善点は,グラフあるいは表形式でのデータ表示と編集が可能になった,新しいブラウザUIだ。下に示したのは動画データベースのデモからのスナップショットで,あるひとりの俳優とその出演映画(グレーで表示),および他の俳優(赤で表示)との関係の概略を示している。
ノードにはラベルを設定できるようになった。この方法により,ノードがどのグループに属するのかマークすることができる。ひとつのノードに複数のラベルを設定することも可能だ。
リレーショナルデータベースへの回帰を思わせる機能として,Neo4j 2.0にはオプショナルスキーマが追加されている。これには,クエリ実行を改善するためのメタ情報を保持する意味がある。
クエリ言語であるCypherには,OPTIONAL MATCH句とMERGE句,リテラルノードパターン,リテラルマップとコレクションを戻り値とする機能などの改良が加えられた。
我々はNeo TechnologyのDeveloper Advocateで,Spring Integrationのリーダを務めるMichael Hunger氏にインタビューして,Neo4j 2.0の互換性の問題やスキーマの利用,今後のロードマップなどについて確認した。
InfoQ: Neo4j 2.0と以前のバージョンとの間には,互換性の問題はあるのでしょうか?
MH: そうですね,ラベルの概念やオプショナルスキーマ情報の追加によってデータモデルが拡張されたことが,おもな非互換的な変更です。
クエリ言語のCypherも1.9から大きく進化しています。また,組み込みのAPIユーザに対しては,読み込み操作においてもトランザクションが必須になっていますし,非推奨になっていた機能も多くが削除されました。
関連項目:
http://www.neo4j.org/release-notes#2.0.0
http://docs.neo4j.org/chunked/2.0.0/deployment-upgrading.html#deployment-upgrading-two-zero
InfoQ: 新たに導入されたスキーマは,クエリをどのように高速化しているのでしょう?
MH: オプショナルスキーマ情報(ラベル)によって,クエリ内で自動的に使用されるインデックスや一意制約が,フィルタ条件を自動的にインデクス参照に変換できるようになります。また,クエリの一部としてラベルを用いることで,インデックスされていない情報を検索する場合でも,データベースを部分的にスキャンすればよくなります。そして第3の側面として,ラベルはノードレコードにインライン化されているため,既存のノードを対象としたラベルのテストを行うのも容易ですし,プロパティやリレーションシップといった情報を検索する必要もありません。
InfoQ: データベースが変更された場合はどうなりますか? スキーマも手作業で更新しなければならないのでしょうか?
MH: インデックスと制約は,データ変更時のデータに追随します。
例えば新しいラベルを追加するためには,インデックスや制約も新たに定義しなくてはなりません。ですが,新しいラベルで拡張された既存のデータについては,内部で自動的にインデックスが設定されます。
InfoQ: Neo4jのロードマップはどのようなものでしょう?
MH:
- ユーザエクスペリエンスの継続的な改善
- パフォーマンス(読み取り,書き込み,クエリ言語)
- ノード,関連性の(人為的な)限界値の向上
- インポート/エクスポートの改善
- BI統合
- 操作性改善
- ビッグデータおよびグラフ演算に関する開発
- インストールエクスペリエンスの容易化
- リモート処理とドライバの改善