こんにちは、鯨井貴博@opensourcetechです。
今回は、グラフデータベース(GraphDB)であるneo4jを使ってみようと思います。
グラフデータベースって何、という質問が聞こえてきそうですが、
以下のようなものになり、
丸で囲ってあるものがノード(node)と言われるデータ、
矢印がリレーションシップ(relationship)と言われるノード間の関係性を表しています。
まずは、neo4jのインストールからいきましょう。
環境としては、windows8.1上にインストールしています。
以下のURLからneo4jをダウンロードします。
右上にある「Download Neo4j」をクリックすると、
以下の画面が表示されるので、「Download Community Edition」を選択します。
ダウンロード後は、インストーラーを起動しインストールします。
特に難しいことはないかと思います。
そして、起動。
データベースディレクトリを選択し、
statusが変化してきます。
statusが、「Neo4j is ready. Browse to http://localhost:7474」となれば、
ブラウザからneo4jを使用することが出来るようになり
ます。
ブラウザから「http://localhost:7474」にアクセスすると、
まず認証画面が表示されますので、
デフォルトアカウント及びデフォルトパスワードの
neo4j/neo4jでログインします。
ログイン後、デフォルトパスワードの変更を行います。
そうすると、グラフデータベースを作成する準備完了です!
今回は最初にも紹介した、以下のグラフデータベースを作成してみます。
ざっくり説明すると、
「Zeus-Enterprise」という会社に雇用されている講師の「鯨井貴博」が
生徒である「A」「B」「C」に教えているという関係性を表しています。
データの入力には、「Cypher Query Language」という専門の言語を使用します。
詳細は、以下のURLで見ることができます。
http://neo4j.com/docs/stable/cypher-query-lang.html
まずは、何もデータベースが存在しない状態を確認します。
MATCH n RETURN n
これで、データベース全体を確認することが出来ます。
まだ「MATCH n RETURN n」を実行しても、
no worsとなり何もデータがないと返されます。
まず会社というノードを作成します。
CREATE(company:会社{name:"Zeus-Enterprise"})
すると、ノードが追加された旨を示すメッセージが出力され、
「MATCH n RETURN n」でグラフデータベースが表示されるようになります。
初めて操作した際には、「おっ、表示された!」とかなり楽しく感じました。
ノードをクリックすると、下部にidとnameというノードが持つ属性が表示されます。
会社と同じ要領で、講師および生徒のノードを追加します。
Create(teacher:講師{name:"鯨井貴博"})
CREATE(student:生徒{name:"A"})
CREATE(student:生徒{name:"B"})
CREATE(student:生徒{name:"C"})
すると、「MATCH n RETURN n」で各ノードが表示されます。
ですが、それぞれのノード間の関係性はまだ作成していないので、
次からはそれを作成します。
以下のようにして、「Zeus-Enterprise」という会社が「鯨井貴博」という講師を雇用している関係(Relationship)を作成します。
MATCH (company:会社 { name:'Zeus-Enterprise' }),(teacher:講師 { name:'鯨井貴博' }) MERGE (company)-[roles:雇用している]->(teacher)
作成と、ノード間に矢印(Relationship)が確認出来ます。
同様の手順で講師(ノード)と生徒ノード)間の関係(Relationship)を作成します。
構成である「鯨井貴博」が生徒である「A」を教えている関係性は、
以下のように表現します。
MATCH (teacher:講師{name:"鯨井貴博"}),(student:生徒{name:"A"}) MERGE (teacher)-[roles:教えている]->(student)
また、講師:生徒を1:多でまとめて関係性を持たせる場合、
以下のようにすることも出来ます。
MATCH (teacher:講師{name:"鯨井貴博"}),(student:生徒) MERGE (teacher)-[roles:教えている]->(student)
すると、以下のように会社・講師・生徒間の関係性が完成します。
完成したグラフデータベースのノードは、
ドラッグ&ドロップで動かすことができ、全体の見た目の調整も出来ます。
なお、不要となったグラフデータベースは、
以下で全削除出来ます。
MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r
上記の他にも、
neo4jインストールディレクトリ内にあるdataディレクトリの中身を
削除してやれば初期状態に戻すことも出来ます。
※ログインパスワードもデフォルトパスワードに戻るので注意。
今回初めて、グラフデータベースというものを使ってみましたが、
作成したデータがグラフィックで確認できるというのは、
非常に面白いですね。