マネージドなグラフDBとしては Amazon Neptune があるが、こいつは Cypher をサポートしないのでいったん除外した。おれは Cypher の書き味がなんとなく好きなんです。
動作環境としては適当に debian 系のVMをクラウド上に立てた。ドキュメントを参照しつつそのままインストールしていく。特に困ることはない。
VM側では0.0.0.0を待ち受けてファイアウォールで自宅のIPアドレスのみを許可して全開放。人にはよると思うけどローカル docker より状態を持つミドルは外にあった方が好みで、neo4j 4.3 からは M1 も公式サポートするはずですが、ローカルに立てるかなぁというとけっこう微妙に思ってます。でもなー自宅ネットワークの外部IP変わったタイミングで設定し直すとかやってると、また「いやローカルに欲しい」ってなるんだよなぁ。
CLIは cypher-shell
を利用する。
$ cypher-shell -a <リモートホスト> -u neo4j -p
ブラウザコンソールでもほぼ同じことができるのでブラウザで参照できる状態を作れるならそっちが便利かもしれない。
インストール直後は neo4j ユーザしかいない。パスワードは初期設定で neo4j
になってて変更が求められる。パスワードジェネレートボタンがあるのが親切。neo4jユーザは管理ユーザとして扱っておけばよくて、接続したら新しくユーザを作成していくとよいと思う。
メモ (neo4j)
- 脳内モデルとしては、
- コミュニティ版は複数DB作れない。エンタープライズ版だと増やせます。
- コミュニティ版はHA構成作れない。まあ個人で手元ツール作る分には困らないでしょう。
- 全文検索系には Lucene が組み込まれているので十分高速。日本語周り設定するならトークナイザーの設定とかはしたほうが良いけど最初から考えなくてもいいでしょう。
- リレーションシップはタイプ(単一)、ノードはラベル(複数可)を持つ。
- Cypher は neo4jで採用されているクエリ言語。RDBMSのSQLみたいなもんです。
- 式をいろいろ書いていって最後に return で値を返すクエリ式は独特の書き味がある。
- 便利な Web コンソールがビルトインされているので布教用にはまずそっちを見せる。
メモ (Google Cloud)
- Cloud Run から Compute Engine に接続するには サーバーレス VPC アクセスの構成 | Google Cloud を利用する。インスタンス数2がミニマムなので最低月 $13 くらい。
- Cloud Shell Editor から Cloud Run のデプロイをする場合、VPCコネクタの設定ができないぽいので Cloud Run コンソールからやった。一度設定しておけば再度デプロイする時は設定が引き継がれてそう。
- Cloud Run 側の yaml 定義では
spec / template / metadata / annotations / run.googleapis.com/vpc-access-connector
に定義されていた。
- Cloud Run 側の yaml 定義では