【问题标题】:Set up In-Memory database instance of Neo4j设置 Neo4j 的 In-Memory 数据库实例
【发布时间】:2016-04-01 16:17:56
【问题描述】:

我想将 neo4j 2.3 完全在内存中运行作为独立的可执行文件,并为测试套件提供可配置的端口。我项目的测试套件是用另一种语言(不是 Java!)编写的,并将通过 HTTP API 与 neo 进行通信。

这是我目前发现的:

  • 标准构建conf/ 目录中的文件似乎没有办法配置它。
  • 有一个类CommunityServerBuilder,它是一个公共build 方法,它返回一个预先配置为内存的TestCommunityNeoServer 服务器。

我将如何使用CommunityServerBuilder 创建和运行内存中的 neo4j 数据库?或者conf/ 中是否有一个配置属性可以完成同样的事情?

【问题讨论】:

  • 您是否查看了以下关于使用ImpermanentDatabase 进行单元测试的链接。
  • @MadhusudanaReddySunnapu 我不做单元测试。我的测试套件不是用 Java 编写的。
  • @MadhusudanaReddySunnapu 最新版本的 neo4j-kernel 没有 TestGraphDatabaseFactory。

标签: neo4j


【解决方案1】:

您可以为数据库位置设置一个临时内存文件系统(有时称为“RAM 磁盘”)和point your neo4j server(或“子目录”)。

在 Linux 上,您有多种设置 RAM 磁盘的选择,包括 ramfstmpfsHere is a write-up.

在 OSX 上,a nice script 用于挂载 RAM 磁盘。在 Finder 中,RAM 磁盘显示为设备列表中的设备(可能名称为“untitled”)。

在 Windows 上,有许多用于创建 RAM 磁盘的商业软件包,但 this article 展示了如何使用免费工具。

【讨论】:

  • 假设你有一个 RAM 磁盘的路径,你如何让 neo4j 使用那个子目录?
  • neo4j.com/docs/stable/…。信息就在开头。基本上,在 conf/neo4j-server.properties. 文件中适当地设置 org.neo4j.server.database.location 值。
【解决方案2】:

对于需要服务器实例的测试,使用TestServerBuilder 或(使用junit 时)测试规则@Neo4jRule。两者都提供适合测试的进程内服务器。请参阅http://neo4j.com/docs/stable/server-unmanaged-extensions-testing.html 上的代码示例。

【讨论】:

  • 感谢您的回答。我不想使用进程内服务器;我提到我的测试套件将使用 HTTP API 与内存中的 neo4j 进行通信。还是这有帮助,我想念怎么做?
【解决方案3】:

与其走自定义 CE 路线,不如使用基于 Java 的版本?

  • 下载并解压 java 应用程序。
  • 使用它在单个目录树中创建标准数据库配置

当你需要测试时,

  • 创建一个 RAM 磁盘,
  • 将标准数据库配置复制到 RAM 磁盘
  • 修改 neo4j-server.properties 配置文件中的端口

org.neo4j.server.webserver.port=7474

  • 启动服务器
  • 进行测试
  • 停止服务器/删除内存盘

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多