Neo4j Auraとは?AuraDB Freeで無料&手軽にグラフデータベースを使ってみよう #Neo4j #AuraDB #Neo4jAura

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
今回は「Neo4j Aura」についての紹介と、実際に「Neo4j AuraDB Free」を使ってみたので紹介します。
※【2023年4月19日更新】AuraDB EnterpriseがAzureでも利用できるようになりました。
目次
・Neo4j Aura とは
・AuraDB
・AuraDS
・AuraDB Freeを使ってみよう
・インスタンス作成
・ブラウザで接続
・Bloomで接続
・データのインポート
・アプリケーションへの接続
・スナップショット
・データベースインポート
・ログ
・感想
Neo4j Aura とは
Neo4j Auraは、クラウドサービスとして提供される、高速でスケーラブルな常時稼働の完全自動化されたグラフプラットフォームです。
Auraには「AuraDB」と「AuraDS」の2種類あります。
AuraDBはフルマネージドのグラフデータベースで、アプリケーションを構築する開発者向けのサービスです。
AuraDSはフルマネージドのデータサイエンスソリューションで、クラウド上でグラフデータサイエンスを実行できます。
AuraDB
AuraDBはフルマネージドのグラフデータベースで、アプリケーションを構築する開発者向けのサービスです。
3つのサブスクリプションプラン AuraDB Free、AuraDB Professional、AuraDB Enterpriseがあります。
それぞれのプランの比較です。
| AuraDB Free | AuraDB Professional | AuraDB Enterprise | |
|---|---|---|---|
| 用途 | 小規模な開発プロジェクト、学習、実験、プロトタイピング | 高度な開発環境、中規模アプリケーションの本番環境 | 高度なセキュリティと24時間365日のサポートを必要とする、大規模アプリケーション |
| インスタンスの数 | 1つまで無料 | 制限なし | 制限なし |
| インスタンスサイズ | ノード数(200k)とリレーションシップの数(400k)の制限 | 1GB-64GB(RAM) | 4GB-384GB(RAM) |
| クラウドプロバイダー | GCP | GCP | AWS、GCP、Azure |
| クラウドテナント | マルチテナント | マルチテナント | シングルテナント |
| バックアップ頻度 | 手動のみ | 毎日 | 毎時 |
| バックアップの保持期間 | 最新スナップショットのみ保持し7日 | 7日 | 90日 |
| 課金モデル | Free | 容量ベースの従量課金 | 1年間分先払い |
| 支払い | - | クレジットカード払い($65~/月) | 価格は問い合わせ |
AuraDS
AuraDSはフルマネージドのデータサイエンスソリューションで、クラウド上でグラフデータサイエンスを実行できます。
AuraDSについては別記事にて紹介予定です。
グラフデータサイエンスってなんだろう?という方はCL Labで紹介しているのでこちらをご覧ください。
CL Lab:Neo4j Graph Data Science Library(GDS)の紹介
AuraDB Freeを使ってみよう
それではさっそく無料で使えるAuraDB Freeを試してみましょう。
インスタンス作成
アカウントごとに作成できるAuraDB Freeインスタンスは1つです。
公式サイトのStart Freeから始めます。

ユーザー登録orログインをして

プライバシーポリシーに同意して

インスタンス作成画面で必要な情報を入力します。
インスタンスタイプ:AuraDBFree
インスタンスの詳細:
-インスタンス名:好きな名前をつけます。
-リージョン:現在地から一番近いリージョンを選んだほうがインスタンスの応答時間が早くなります。
今回は日本に一番近いSingapore (asia-southeast1)を選択しました。
開始データセット:選択したデータセットのデータがインスタンスに事前入力されます。
今回はMoviesを選択しました。
入力が終わったら[Create Instance]を押します。

クレデンシャルが表示されます。
ユーザー名とパスワードをコピーしておきましょう。
[Download credentials... .env]からクレデンシャルをダウンロードしてもOKです。

インスタンスができました!

ブラウザで接続
[Query]ボタンを押すとブラウザからNeo4jインスタンスへ接続できます。

コピーしておいたパスワードを入れて[Connect]します。

Personノード、Movieノードと、その間のリレーションシップを表示するクエリを実行してみます。
MATCH p=(:Person)-[]->(:Movie) RETURN p

あっという間にNeo4jでクエリを実行できる環境を作ることができました!
Cypher試してみたいだけなんだよね!って人はここまででOKです。
思う存分Neo4jブラウザでCypherを書いてみてください。
ここから先はAuraDBの他の機能の紹介です。AuraDBって他に何ができるの?と気になった方はぜひお読みください。
Bloomで接続
AuraDBには、ブラウザ接続以外にもBloomで接続できる機能がついています。試してみましょう。
Bloomはデータビジュアライゼーションツールです。Cypherクエリを書かなくてもデータの検索ができます。
(詳細は別記事で紹介予定ですのでもう少しお待ちください。)
Neo4jブラウザ画面を開いている場合は、インスタンス一覧画面へ戻ります。
[Explore]ボタンを押すと、BloomからNeo4jインスタンスへ接続できます。

UserNameとPasswordをいれて[Connect]します。

Bloomに接続できました!

データのインポート
[Import]ボタンを押すと、データのインポート画面に遷移します。

[Review an Example]を押すと、サンプルcsvからデータがロードされ、データのマッピングが完了した状態までセットされます。
[Jump straight in!]を押すと、何もロードされていない状態になるので自分でデータをセットします。
今回は[Review an Example]を押してサンプルデータのインポートをします。

接続画面が出てきたらパスワードを入れて[Connect]します。

画面中央にデータモデルが表示されています。
[Preview]ボタンを押すとインポートする前にプレビューできます。

プレビューできたら[Run Import]を押してインポートします。

[Start Querying]を押すとNeo4jブラウザが立ち上がります。

グラフを見てみましょう。インポートしたデータを見ることができました!

アプリケーションへの接続
インスタンス一覧画面から、作成したインスタンスをクリックすると詳細画面に遷移します。

新しく[Connect]、[Snapshots]、[Import Database]、[Logs]のタブが出現しました。
[Connect]タブではアプリケーションへの接続情報を見ることができます。

今回はPythonとAuraDBを繋げます。
画面右側に接続方法が書いてあるのでその通りにやります。
Neo4j Python Driverをインストール
$ pip install neo4j Collecting neo4j Downloading neo4j-4.4.5.tar.gz (95 kB) Requirement already satisfied: pytz in c:\users\n-komukai\anaconda3\lib\site-packages (from neo4j) (2021.3) Building wheels for collected packages: neo4j Building wheel for neo4j (setup.py): started Building wheel for neo4j (setup.py): finished with status 'done' Created wheel for neo4j: filename=neo4j-4.4.5-py3-none-any.whl size=123292 sha256=2f7de7fa98e2b26ec8000ba38e51cd1c9013ec91c95c9357788dae939cfc9119 Stored in directory: c:\users\n-komukai\appdata\local\pip\cache\wheels\51\14\73\9085d0127d63d4882aba6a68235c3aa5efbaa51166d35a352d Successfully built neo4j Installing collected packages: neo4j Successfully installed neo4j-4.4.5
画面の左のコードをコピーしてexample.pyに貼り付けます。
UsernameとPasswordは自分のものに書き換えましょう。
$ ls example.py
実行します。以下の出力ができたらOKです。
$ python example.py Created friendship between: Alice, David Found person: Alice
スナップショット
続いて[Snapshots]タブを開きます。
25th Julのスナップショットが一つありますね。
(スナップショットを取った覚えはないのですが、、、?)
[Take Snapshot]でスナップショットを取得できます。

29th Julのスナップショットができました。

Freeインスタンスでは、最新のスナップショットのみを使用できるため、最新以外のスナップショットは消えてしまいます。
データベースインポート
[Import Database]タブではdumpをインポートできます。
[Select a .dump file]を押してファイルを選択してアップロードします。
今回は、neo4jグラフサンプルからダウンロードしてきた「女子ワールドカップ2019グラフ」を使います。

インスタンスの状態がLoadingからRunningになったら、[Query]からブラウザで接続します。
以下クエリで2019年の女子ワールドカップトーナメントに参加したチームを表示させます。
MATCH path = (t:Tournament {year: 2019})<-[:PARTICIPATED_IN]-(team)
RETURN path

これでdumpインポートもできました!
ログ
最後は[Logs]タブです。
ログを見られるのはAuraDB Professionalからでした。Freeでは見られません。残念。

感想
インスタンス作成からNeo4jブラウザで接続するまでで約10クリック、かかった時間約5分(内インスタンス起動待ちに約4分)
とかなり簡単に環境を作ることができました。
これからお試し環境としてたくさん使っていきたいなと思いました。
おまけ。Neo4j sandboxとの違い
そういえば学習用、お試し用の環境としてNeo4j sandboxもあるな、と思って違いを調べてみたらNeo4j社のナレッジベースにNeo4j sandboxとAuraの比較が載っていました。
Neo4j sandboxは3日間(+7日間延長可)という制限付きに対して、Auraは制限がないのがいいですね(※Free は3日何もしないとインスタンス停止はする)。
Neo4j sandboxにはシナリオがたくさん用意されているので、シナリオに沿って試してみたい人はsandbox、自分でデータを入れたい人はAuraが良さそうです。
Neo4j sandboxについての紹介はこちら
CL Lab:Neo4jサンドボックスの紹介
