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へアクセスすると以下のような画面が表示されます。
以下を入力してConnectをクリックします。
- Connect URL: bold://localhost:7687
- Authentication type: Username / Password
- Username: neo4j
- Password: neo4j
ログインに成功すると以下のようなページが表示されます。
サンプルデータベースの作成
サンプルの映画データベースを作成してみます。
Webインターフェース上部のコマンド入力部分に:play movie graph
を入力し,右側の▷をクリックします。
下部にある>
をクリックして2ページ目に移動するとcypherスクリプトが表示されます。枠の中をクリックします。
上部のコマンド入力部分に空くrぷ都がコピーされるので,右側の▷をクリックします。
以下のようにグラフが表示されます。
データの取得
キアヌリーヴスの出演映画を取得してみましょう。
以下のコマンドをコマンド入力部に入れ,右側の▷をクリックします。
コマンド入力部ではShift + Enterで改行できます。
MATCH (actor:Person)-[r:ACTED_IN]->(movie) WHERE actor.name = "Keanu Reeves" RETURN actor,movie
実行すると以下のようなグラフが表示されます。
(ジョンウィックがない・・)
表示形式はグラフのほかにもレスポンスのテキスト形式などに切り替えることができます。
まとめ
Neo4JをDocker for Windowsで起動し,チュートリアルを実行できました。
グラフデータベース,何かにつかえそうですね,なにかに。