tshell_blog

ソフトウェアと車輪がついた乗り物のはなし

Docker for WindowsでNeo4Jを動かす

グラフデータベースNeo4JをDockerで動かしてみました。 SQLなどの一般的にイメージされるデータベースと異なり,グラフ構造のデータを格納することができるデータベースです。ノードとノードのつながりを表現することができるので,要求と仕様を対応させられるツールが作れそうだな~なんて夢が広がります。

環境

以下の環境を使いました。

  • Windows 10 Professional version 1903
  • Docker CE 19.03
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:22:37 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:29:19 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
  • Neo4j:4.0

インストール

コマンドプロンプトまたはPowershellで以下のコマンドを実行してNeo4JのDockerイメージを取得しておきます。

> docker image pull neo4j:4.0

コンテナの起動

以下のコマンドでコンテナを起動します。コマンドを実行するディレクトリがコンテナの/dataにマウントされます。

コマンドプロンプトの場合

> docker run -p 7474:7474 -p 7687:7687 -v "$pwd:/data" neo4j:4.0

Powershellの場合

> docker run -p 7474:7474 -p 7687:7687 -v "$(Get-Location):/data" neo4j:4.0

コンテナが起動すると以下のようなメッセージが表示されます。

Directories in use:
  home:         /var/lib/neo4j
  config:       /var/lib/neo4j/conf
  logs:         /logs
  plugins:      /var/lib/neo4j/plugins
  import:       /var/lib/neo4j/import
  data:         /var/lib/neo4j/data
  certificates: /var/lib/neo4j/certificates
  run:          /var/lib/neo4j/run
Starting Neo4j.
2020-02-13 04:39:51.067+0000 INFO  ======== Neo4j 4.0.0 ========
2020-02-13 04:39:51.077+0000 INFO  Starting...

Webインターフェースへのアクセス

http://localhost:7474へアクセスすると以下のような画面が表示されます。

f:id:tshell:20200217211712p:plain

以下を入力してConnectをクリックします。

  • Connect URL: bold://localhost:7687
  • Authentication type: Username / Password
  • Username: neo4j
  • Password: neo4j

f:id:tshell:20200217211748p:plain

ログインに成功すると以下のようなページが表示されます。

f:id:tshell:20200217211820p:plain

サンプルデータベースの作成

サンプルの映画データベースを作成してみます。
Webインターフェース上部のコマンド入力部分に:play movie graphを入力し,右側の▷をクリックします。

f:id:tshell:20200217211915p:plain

下部にある>をクリックして2ページ目に移動するとcypherスクリプトが表示されます。枠の中をクリックします。

f:id:tshell:20200217211954p:plain

上部のコマンド入力部分に空くrぷ都がコピーされるので,右側の▷をクリックします。

f:id:tshell:20200217212042p:plain

以下のようにグラフが表示されます。

f:id:tshell:20200217212112p:plain

データの取得

キアヌリーヴスの出演映画を取得してみましょう。
以下のコマンドをコマンド入力部に入れ,右側の▷をクリックします。
コマンド入力部ではShift + Enterで改行できます。

MATCH (actor:Person)-[r:ACTED_IN]->(movie)
WHERE actor.name = "Keanu Reeves"
RETURN actor,movie

実行すると以下のようなグラフが表示されます。
(ジョンウィックがない・・)

f:id:tshell:20200217212258p:plain

表示形式はグラフのほかにもレスポンスのテキスト形式などに切り替えることができます。

f:id:tshell:20200217212350p:plain

まとめ

Neo4JをDocker for Windowsで起動し,チュートリアルを実行できました。
グラフデータベース,何かにつかえそうですね,なにかに。