Neo4jを使用して1つのサーバーに複数のデータベースを作成するにはどうすればよいですか?複数のクライアントがあり、すべてのクライアント情報を異なるデータベースに分離して、データリークを回避したいと考えています。
conf/neo4j.properties
およびconf/neo4j-server.properties
の異なるポート構成で複数のNeo4jをインストールする必要があります。
または、http // docker.ioなどの仮想化ツールまたはコンテナツールを使用して、より洗練されたアプローチをとることもできます。
または、特別なlabel
をクライアントの各ノードに追加します。 :ClientName
。または、各クライアントデータベースのルートノードを作成し、常に最初のノードでクエリを開始します。
neo4j dbでは、別々のサブグラフを持つことができます。コードを適切にプログラミングすれば、そのようなリークが発生する理由はないはずです。
@ stefan-armbrusterが述べたように、複数のデータベースを実行するために複数のNeo4jドッカーコンテナインスタンスを使用するのが良いかもしれません
Docker composeファイルの下に、これを行うのに役立つはずです
version: '2'
services:
neo4j:
image: neo4j:latest
network_mode: Host
restart: always
environment:
- NEO4J_AUTH: neo4j/neo4j
cap_add:
- SYS_RESOURCE
ports:
- "7474:7474"
- "7687:7687"
volumes:
- $HOME/neo4j/data:/data
上記をdocker-compose.ymlに保存したら、以下のコマンドを実行します
docker-compose up
バックグラウンドで実行したい場合
docker-compose up -d
これで、http://localhost:7474
としてデータベースにアクセスできるはずです。docker-machineを使用している場合は、docker-machine IPアドレスを使用してデータベースにアクセスする必要があります。
ポートが異なる複数のdocker-composeファイルを維持することで、複数のデータベースを維持できます。これはneo4jだけでなく、あらゆるタイプのDB(Mongo、Redis、RabbitMQなど)に対しても可能です。
別のdocker composeファイルを指定するには、以下のコマンドを試してください
docker-compose -f <your docker compose file name>