Neo4jとは
Neo4jは、Neo Technologyが開発しているオープンソースNoSQLのグラフ型データベースです。実装言語は、JavaとScalaを使用しています。2003年から開発を始めて、2007年に公開されました。ソースコードはGitHub上にあります。現在、Neo4jは多くの業界の企業や組織で導入されています。

図4:Neo4jの特徴
特徴は、プロパティグラフモデルをストレージレベルにまで実装していることです。また、ACID(Atomicity、Consistency、Isolation、Durability)トランザクションをフルサポートしています。
その他には、JVMベース、数十億のエンティティの対応、クラスタなどがあります。また、使用言語はJavaだけではなくRubyやPython、Clojureなどからも呼び出すことができます。箇条書きでまとめると、以下になります。
- オープンソース
- 洗練されたユーザーインターフェース(UI)
- データモデリングの容易さ
- 読みやすいクエリ
- 活発なコミュニティ活動
- 高パフォーマンス
- オプショナルスキーマ
特に、パフォーマンスについては、数十億のノード、リレーション、プロパティを管理でき、2000リレーションの検索(探索)は、ミリ秒程度です。最短ルートの計算は、1000ノード程度のデータでさえ、MySQLの1000倍のスピードです。もちろん、ノードの数が増えると、その違いはさらに大きくなります。さらに、Ext3ファイルシステムとSSDディスクの組み合わせでは、毎秒10万オペレーションが実行可能です。
Neo4jデータベースの設定
Neo4jは、ウェブサイトからダウンロードできます。Neo4jをインストールした後に、起動するには、以下のコマンドをコマンドラインから入力します。
$ bin/neo4j start Starting Neo4j Server...WARNING: not changing user process [1100]... waiting for server to be ready............ OK. http://localhost:7474/ is ready.
ローカルのPCでNeo4jのサーバが立ち上がりました。Neo4jを利用するには、ブラウザからhttp://localhost:7474/にアクセスします。ブラウザからNeo4jサーバにアクセスして、クエリを入力できます。
ここでは、Neo4jに付録としてついているExample graphsのMovie Graphを利用してみます。ここを選択すると、DBを構築するNeo4jのクエリがあります。このクエリをコピーして、コマンドラインにペーストして、DBを作成します。
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'}) CREATE (Keanu:Person {name:'Keanu Reeves', born:1964}) CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967}) (中略) CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix), (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix), (中略)
このクエリをNeo4jでは「Cypher」と呼びます。文法は、SQLに似ています。初めの3行でデータ、最後の2行でリレーションを生成しています。
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
は、KeanuはマトリクスにNeoとして演技したというリレーションを表しています。データベースができると、このように、Neo4j特有のグラフが図として表示されます。

図5:Neo4jのグラフ