Neo4j Server スタートガイド

Neo4j Wiki から

目次

[edit] Neo4j Server とは

Neo4j Server は、REST API と webadmin アプリケーションをまとめて 1 つのスタンドアロンサーバーにしたものです。Neo4j Server には次のような特徴があります。

  • Java の知識がなくても Neo4j グラフデータベースを簡単にセットアップ可能。
  • REST API を介したほかの言語からのリモートクライアントアクセス。
  • Linux および Windows のサービスとして Neo4j を 簡単にインストール可能。
  • データベースへの統合管理インタフェースにより任意のブラウザからアクセス可能。
  • スクリプト言語コンソールの統合サポート。

[edit] インストール

http://neo4j.org/download にアクセスし、最新のバージョンを選択します。すぐにコーディングを始めたい場合は、「Java で Neo4j Server を使う」と「Ruby で Neo4j Server を使う」に進んでください。それ以外の場合は、このまま続きを読み進んでください。

選択したバージョンをダウンロードし、内容を適切な場所、たとえば $HOME/neo4j-server に展開します。展開後のパッケージは、Web ベースの管理インタフェースとデータアクセスのための RESTful エンドポイント、さらにログ機能と JMX を持った独立したサーバーアプリケーションです。独自に作成したアプリケーションに直接組み込まれた Java API にアクセスする方法をふだん利用している開発者の場合、必要なライブラリは lib ディレクトリで見つけることができます。

[edit] 使ってみる

パッケージには、サーバーを起動/停止するためのスクリプトが含まれています。パッケージの展開後に必要なことは、起動スクリプトを実行することだけです。

[edit] Neo4j Server の起動

Windows を使っている場合は、bin ディレクトリにある Neo4j スクリプトをダブルクリックすればサーバーがコンソール内で起動し、起動中にいくつかメッセージが出力された後、最後に次のように表示されます。

 jvm 1    | [org.mortbay.log] : started Server@166afb3

Neo4j Server を停止するには、Control-C を入力します。管理者権限がある場合は、InstallNeo4j スクリプトを使って、Neo4j Server をサービスとしてインストールできます。また、UninstallNeo4j スクリプトを使えば Neo4j Server をアンインストールできます。これらのスクリプトを実行する最も簡単な方法は、スクリプトを右クリックし、[管理者として実行]をクリックすることです。

Unix または Mac OS を使っている場合は、Neo4j Server ディレクトリに移動し、次のように入力します。

bin/neo4j start

Unix 上では、次のようなメッセージが表示され、Neo4j Server が起動します。

 Starting Neo4j Server...
 Waiting for Neo4j Server.........
 running: PID:3322

Unix では制御はシェルに戻されるので、引き続き同じコンソールを使ってコマンドを入力することができます。Windows でほかに作業を行うには、新しくシェルを開く必要があります。

[edit] Neo4j Server の操作

Neo4j Server が問題なく動作しているかどうかをチェックするために、cURL を使って、デフォルトポート (7474) で REST インタフェースが動作しているかどうかを確認します。cURL は Web サイトにアクセスするのに非常に便利なコマンドラインユーティリティで、すべての REST コマンドをサポートしています。ほとんどの Unix システムと Mac OS システムでは、cURL が最初から利用可能になっていますが、そうでない場合でも簡単にインストールすることができます。Windows ユーティリティは cURL のダウンロードページから Windows 用のビルドをダウンロードする必要があります。開発チームでは、最新の Neo4j Server リリースをテストする際、curl-7.21.2 にある Günter Knauf によるビルドを使用しました。ビルドをダウンロードしたら展開し、展開後のディレクトリを Windows システムの PATH に追加します。

では、Neo4j Server をテストしてみましょう。次のコマンドを実行し、サーバーが実際にポート 7474 で動作しているかどうか確認します。

  curl -H Accept:application/json http://localhost:7474/db/data/

動作していれば、実行中のグラフデータベースの JSON 表現が返されます。

{
  "index" : "http://localhost:7474/db/data/index",
  "node" : "http://localhost:7474/db/data/node",
  "reference_node" : "http://localhost:7474/db/data/node/0"
}

curl や Web ブラウザ、その他の自分が使い慣れた言語で利用できるシンプルな Web アクセス API を使えば、Web インタフェースを介してノードやリレーションの作成、更新、削除など、データベース操作を実際に実行することもできます。特定の言語を使ってサーバーにアクセスする方法については、言語ごとに用意された Neo4j のスタートガイドを参照してください。ここでは、curl を使った簡単な例をいくつか示します。curl で使用できるコマンドの完全なリファレンスについては、http://components.neo4j.org/neo4j-rest/ を参照してください。

まず、次のコマンドで新しいノードを作成します。

  curl -H Accept:application/json -X POST http://localhost:7474/db/data/node

出力では、作成した新しいノードに対して引き続き操作を行う場合に使用できる URL のリストが返されます。たとえば、次のような外向きのリレーション用の URL が含まれているはずです。

 "outgoing_relationships" : "http://localhost:7474/db/data/node/1/relationships/out"

また、新しいリレーションを作成するため次のような URL もあります。

 "create_relationship" : "http://localhost:7474/db/data/node/1/relationships"

では、リファレンスノード (詳細については、「設計ガイド」の「サブリファレンス」 と Javadoc の説明を参照してください) から、新しく作成したノードにつながるリレーションを新しく作成してみましょう。

  curl -H Content-type:application/json -X POST \
    -d '{"to": "http://localhost:7474/db/data/node/1", "type": "KNOWS"}' \
    http://localhost:7474/db/data/node/0/relationships
注意: Windows では、上のコマンドラインを実行するときにいくつか問題があるので、2 つの方法で手を加える必要があります。まず、行を継続するための \ を使わずに、全体を 1 行で記述します。次に、単一引用符はフィールド区切りとして認識されないので、JSON テキストを二重引用符で囲み、その内側にある二重引用符はすべてバックスラッシュでエスケープする必要があります。したがって、JSON ブロックは "{\"to\": \"http://localhost:7474/db/data/node/1\", \"type\": \"KNOWS\"}" のようになります。以下では、引き続き Unix 流のシンプルなスタイルを使いますが、Windows で例を入力する場合には、必要に応じてここで説明した修正を行ってください。

コマンドを実行すると、作成したリレーションについての説明を含む出力が返されます。

{
 "start" : "http://localhost:7474/db/data/node/0",
 "property" : "http://localhost:7474/db/data/relationship/0/properties/{key}",
 "self" : "http://localhost:7474/db/data/relationship/0",
 "properties" : "http://localhost:7474/db/data/relationship/0/properties",
 "type" : "KNOWS",
 "end" : "http://localhost:7474/db/data/node/1"
}

リレーションを一覧表示しても同じ出力を得ることができます。

  curl -H Content-type:application/json \
  http://localhost:7474/db/data/node/0/relationships/out

[edit] 管理

Neo4j Server には、管理用の Web アプリケーションが付属しています。まず、サーバーが実行されていることを確認し、次に Web ブラウザを開いて、http://localhost:7474/webadmin にアクセスします。スタートページでは、データベースが実行されていることを確認できます。

Image:Webadmin.png

Data browser に移動し、いくつかデータを追加します。

Image:Webadmin-data.png

[Data] タブの [Node] ボックスの最下部に [New property] があります。ここで、キーと値を追加します。

次に、[Dashboard] タブをクリックし、データベースにデータが作成されたかどうか確認します。

Image:Webadmin-stats.png

[Primitive entities] のグラフと [Primitives] ボックスには、データベースに存在しているノード、リレーション、およびプロパティの数が表示されるはずです。cURL を使ってすでにノードとリレーションを追加している場合は、これらのノードやリレーションも、今追加したプロパティに加えて表示されるはずです。容易に想像がつくように、管理用の Web アプリケーションも背後では、すでに cURL で利用した REST API を介してデータベースを呼び出しています。

[edit] スクリプトコンソール

グラフにデータを入力したら、[Console] タブにあるスクリプトコンソールを使ってデータを見ることができます。コンソールでは、グラフの操作に特化したスクリプト言語 Gremlin を使用しています。Gremlin は最初はやや取っつきにくく思うかもしれませんが、実際にはすぐに慣れますし、使い方も簡単で機能は強力です。手始めに次のように入力してください。

  $_ := g:id(0)
  ./@name := 'neo4j'
  g:map(.)
  g:map(g:id-v(0))

判読不能の象形文字のように見えますが、構文の背後にある論理構造をいったん把握してしまえば、理解は容易です。

$_ は、現在のスタートノードを保持する予約変数です。ここでは、id 0 のノード (g:id-v(0)) を代入しています。g:map() は、引数のプロパティをマップとして取得するという意味で、g:id-v(0) は id 0 のノードを取得するという意味です。この 2 つが組み合わされることで、グラフから id 0 のノードを取得するという意味になります。どうですか? 簡単でしょう。

[edit] JMX イントロスペクション

Jconsole で提供されているものと同様の JMX ブラウザが、Web 管理インタフェースでも利用できます。 Image:Webadmin-jmx.png

[edit] シェル登場

コマンドラインからデータベースに接続できると便利なことがあります。さっそく試してみましょう。

 Windows: bin\neo4j-shell
 *nix: bin/neo4j-shell

リレーション、ノード、およびプロパティを追加することができます。'help' と入力すると、利用できるすべてのコマンドが表示されます。

Image:Neo4j-shell-server.png

[edit] Neo4j Server の停止

Windows の場合、Neo4j スクリプトをダブルクリックするか、または bin\neo4j console を実行してコンソールでサーバーを起動しているときは、Control-C を入力すればサーバーを停止できます。Neo4j Server を Windows のサービスとしてインストールした場合は、UninstallNeo4j を管理者として実行して Neo4j をアンインストールします。または、管理者用シェルを開いて bin\neo4j stop を実行すれば、Neo4j をアンインストールすることなく、サービスを停止することができます。

Unix と Mac では、次のコマンドを実行します。

  bin/neo4j stop

[edit] REST クライアントの開発

Neo4j Server がリリースされたことで、リモートからサーバーにアクセスする REST クライアントを開発できるようになりました。

クライアントは、HTTP をサポートしている任意の言語で記述できます。すでに示した curl を使った例は、コマンドラインアプローチを使ったクライアントの例ですが、実際のアプリケーション開発では、PHP や Java、Python、Perl、Ruby など、もっと一般的な Web アプリケーション言語を使うことになるでしょう。これらの言語のいくつかについては、近いうちに使い方のガイドを追加する予定ですが、現在は次の 2 つのガイドがすでに用意されています。

[edit] REST API と今後の Neo4j Server リリース

最後に、既存の Neo4j REST コンポーネントを使用しているユーザー向けに注意点を述べます。既存の Neo4j REST コンポーネントは Neo4j Server にマージされ、現在のリリースでは直接の API 互換性が維持されています。これ以後、REST コンポーネントは非推奨となり、新しい機能はすべて Neo4j Server に直接実装されることになります。

Neo4j のサイト
ツールボックス