使用Neo4j在一台服务器上创建多个数据库

Kel*_*son 47 database neo4j

如何使用neo4j在一台服务器上创建多个数据库?我有多个客户端,我想将所有客户端信息分成不同的数据库,以避免数据泄漏.

Ste*_*ter 37

您需要在conf/neo4j.properties和中安装多个具有不同端口配置的Neo4j安装conf/neo4j-server.properties.

或者,您可以使用某些虚拟化或容器工具(如http // docker.io)来实现更复杂的方法.

  • 这背后的逻辑是什么?当然,我仍然被我对SQL的知识蒙蔽了眼睛但是只有一个数据库的原因是什么? (12认同)
  • @StefanArmbruster更多努力创建新的数据库并支持另一个端口/服务器实例 (7认同)
  • 所以我们需要制作完整的neo4j社区目录的多个副本?每个数据库图一个副本?Neo4J为什么不像RDBMS那样处理架构图呢? (3认同)
  • 我如何进行另一个neo4j安装?当然apt-get不会让您更改安装位置吗? (2认同)

ulk*_*kas 9

或者label为客户端添加一个特殊的节点,例如:ClientName.或为每个客户端数据库创建根节点,并始终在第一个节点开始查询.

在neo4j db中,你可以有单独的子图.如果您对代码编程很好,那么就没有理由发生这样的泄漏.

  • 需要一个单独的数据库是非常真实的.例如,在测试中,您不希望针对您用于开发的主数据库进行测试(或者如果某人有足够的勇气可以进行生产),因为每个测试都以新的数据库状态运行(理想情况下) (19认同)
  • @Ash我的意思是在测试和开发时有两个独立的环境.很明显,在生产中进行测试是不可能的.在得出结论之前,请仔细阅读我的评论 (8认同)
  • @TanNguyen如果你在生产服务器上开发/测试我认为你可能有设计问题.干杯! (3认同)
  • @decebal hi decebal,简单.将数据库A中的所有节点附加到一个"根"节点,并将数据库B中的所有节点附加到另一个根节点.查询数据集必须始终包含要访问的数据库的特定根节点.这是一个基于代码的解决方案,用于区分一个neo4j服务器实例中的独立数据集. (2认同)

Bas*_*sav 5

正如@ stefan-armbruster所提到的,最好使用多个Neo4j docker容器实例来运行多个数据库

可能在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
Run Code Online (Sandbox Code Playgroud)

将以上内容保存到docker-compose.yml后,请运行以下命令

docker-compose up 
Run Code Online (Sandbox Code Playgroud)

如果您想在后台运行

docker-compose up -d 
Run Code Online (Sandbox Code Playgroud)

现在,您应该能够访问数据库,如下所示http://localhost:7474:如果您使用的是docker-machine,则必须使用docker-machine IP地址访问数据库

通过维护多个带有不同端口的docker-compose文件,您可以维护多个数据库,这不仅适用于neo4j,还可以用于任何类型的数据库(Mongo,Redis,RabbitMQ等)。

用于指定其他docker compose文件,请尝试以下命令

docker-compose -f <your docker compose file name> 
Run Code Online (Sandbox Code Playgroud)