web-dev-qa-db-ja.com

Neo4jを使用して1つのサーバーに複数のデータベースを作成する

Neo4jを使用して1つのサーバーに複数のデータベースを作成するにはどうすればよいですか?複数のクライアントがあり、すべてのクライアント情報を異なるデータベースに分離して、データリークを回避したいと考えています。

44
Kelly Watson

conf/neo4j.propertiesおよびconf/neo4j-server.propertiesの異なるポート構成で複数のNeo4jをインストールする必要があります。

または、http // docker.ioなどの仮想化ツールまたはコンテナツールを使用して、より洗練されたアプローチをとることもできます。

36

または、特別なlabelをクライアントの各ノードに追加します。 :ClientName。または、各クライアントデータベースのルートノードを作成し、常に最初のノードでクエリを開始します。

neo4j dbでは、別々のサブグラフを持つことができます。コードを適切にプログラミングすれば、そのようなリークが発生する理由はないはずです。

8
ulkas

@ 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> 
4
Basav