【问题标题】:neo4j - standalone server or embedded for this case?neo4j - 独立服务器还是嵌入式服务器?
【发布时间】:2012-12-11 17:59:04
【问题描述】:

我目前有一个每天更新 neo4j 数据库的 Java 应用程序。

然后我有另一个应用程序,它通过创建具有相同存储路径的嵌入式数据库来使用遍历查询数据库。

每次查询 java 应用程序运行时,我应该如何保持服务器运行并将查询定向到已经运行的实例?我不确定如何在不每次都创建嵌入式服务器实例的情况下做到这一点。

我可以保留我目前的方法,问题是每次用户提出查询请求时都必须加载数据库,这很昂贵。

谢谢!

【问题讨论】:

    标签: java neo4j graph-theory


    【解决方案1】:

    您可以在嵌入式数据库之上运行服务器:http://docs.neo4j.org/chunked/milestone/server-embedded.html

    因此,您可以保持嵌入式应用程序运行并使用计时器任务导入数据,同时提供服务器的 web-ui。

    【讨论】:

      【解决方案2】:

      不仅价格昂贵,而且如果我正确理解了您的应用程序概念,您可能会遇到锁存储错误。

      如果您的更新应用程序正在数据库中执行某些操作,因此有一个嵌入式数据库实例正在运行,同时您的其他应用程序正在尝试创建一个嵌入式数据库实例来执行查询,您' d跑进了锁店。

      我不知道您是否采取了任何预防措施来防止这种情况发生,或者到目前为止您是否幸运地没有同时发生这些行为,但我会调查一下。

      【讨论】:

      • 我有一个 tomcat 上下文变量,它保存数据库的索引。我正在尝试找出处理更新的最佳方法。我想在更新运行时简单地关闭应用程序进行维护,创建一个新数据库,然后删除旧数据库并替换为新数据库,然后再次打开应用程序。对我来说,创建一个全新的数据库进行更新比遍历每个节点检查更改更容易。