Neo4j入門[NoSQL][グラフデータベース]

2015年6月22日

neo4j

 

これから更に加速するであろうIoT時代において、地味に注目されているのがNoSQL(Not only SQL)としてのデータベースだ。今回はプロパティグラフモデル(property graph model)であるNeo4jウェブインターフェイスにて試したみた。

 

Neo4jは主にデータをグラフ構造として保存する。グラフは、ノード(node)とその関係(リレーションシップ/relationship)で構成され、それぞれにプロパティ(property)を設定できる。視覚的にも直感的に表せるデータベースなので「ホワイトボードフレンドリー」としても認知されている。

 

利用バージョン

Neo4j 2.2.2

 

Neo4jのインストールについては以下のリンクを参考にさせて頂いた。

 

MacでNeo4jを使ってみる

Pythonでグラフデータベース Neo4j入門 for ビギナー (Mac OSX向け)

 

 

 

ウェブインターフェイスの使い方概略


 

インストールが完了しブラウザで初めてlocalhost:7474/を開くと、下記のような画面が表示される。赤い枠線内のどちらかのボタンをクリックすると$が表示され、コマンドが入力できるようになる。

 

neo4j-01

 

neo4j-2

 

1をクリックすると作成されたラベル等(これから説明する)の一覧が表示される。これら一覧を削除するのはウェブインターフェイスからではなく、shellを利用する(当ブログ記事では説明しない)。

 

2には良く利用するコマンドを保存しておくことができる。試しに$の部分に「MATCH n RETURN n」(全てのデータを表示するコマンド)を入力し3の★(もしくは!)をクリックしてみよう。コマンドが保存され、ドラッグして整理することができる。

 

4の+をクリックすると入力していたコマンドを消去することができる。

 

5のボタンは例えば「MATCH n RETURN n」のように一行ではなく

MATCH n

RETURN n

のように二行以上にまたがったコマンドを実行する時に利用する。

 

 

 

Cypherでデータを登録する


 

ご多分に漏れず映画データベースを作成してみる。

 

まずは映画作品から登録してみる。下記コードをコピーして$の横にペーストしたら、実行ボタンをクリックする。

 

結果

neo4j-3

 

上記コードはCypherと呼ばれるNeo4j専用のクエリ言語で(リレーショナルデータベース(RDB)におけるSQL言語の関係と同じ)、ノードは()で表現される。

 

一般的なノード ( 識別子:ラベル { プロパティ: ‘プロパティ名’ } )

 

ノードはラベルによってグループ分けすることができる。つまりRDBにおけるテーブルのような役割をもつ。上記の例では「Movie」ラベルが付けられているが、ひとつのノードに対して複数のラベルを付けることができる(例→ :Movie:Cinema)。

 

そしてノードに対してプロパティを設定している。プロパティは{key:value}の形式となっている。もちろん{key:value, key2:value2}のように複数設定することができる。

 

またノードを記述する際、識別子を付けることがある。これは同一のクエリ内において、一時的にノードを区別(単独のノードやグループ単位でのノードまで)する際に用いられる。上記の例ではhogeという識別子を一時的に付加して、戻り値を指定するRETURNによってhogeと名付けたノードをグラフとして表示させている。

 

引き続き人物を登録する。

 

結果

neo4j-4

 

 

次に映画と人物を関連付ける。

 

結果

neo4j-5

 

MATCHでノードのパターンを抽出し、MERGEによってノードを関連付けている。関係すなわちリレーショナルは[]で表現され、ノードと同じくプロパティを設定できる。

 

上記の例は、あらかじめ作成していたMovieラベルの”マトリックス”とPersonラベルの”キアヌ・リーブス”を、俳優という関係で結び付け、その関係のプロパティに登場人物名であるネオを設定している。

 

最終的に一行目で付けられたmovie及びperson識別子を用いてRETURNし、グラフを表示させている。

 

以上

 

 

 

参照サイト


 

Neo4jウェブインターフェースを使い倒す

 

Cypher Query Language(QL)-初級編 #neo4j

 

グラフDBのNeo4jを1日触ってみた

 

Intro to Neo4j and Cypher

 

Neo4j Tutorial

 

 

Copyright © 2017 アクト・オブ・リーディング All Rights Reserved.  プライバシーポリシー