2013-04-08 90 views
0

我正在开发一个基于Spring Data Neo4j的使用存储库方法的项目。问题是我无法同时读取和写入图形(这是我的应用程序所需的),因为我得到这个错误,否则。我的Neo4j服务器实例没有运行,但我有不同的进程尝试使用数据库(即:相同的应用程序上下文在不同的主要方法中加载,这里应该可能是问题,我不知道)。我习惯于关系数据库,很难理解这种行为。哪种方法可以解决这个问题?或者,它实际上可能吗?Neo4j:锁定商店

这是我的应用程序上下文文件的一部分:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:context="http://www.springframework.org/schema/context" 
      xmlns:mongo="http://www.springframework.org/schema/data/mongo" 
      xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" 
      xsi:schemaLocation= 
      "http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.0.xsd 
      http://www.springframework.org/schema/data/mongo 
      http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd 
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/data/neo4j 
      http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd"> 

      <!-- Neo4j --> 
      <neo4j:config storeDirectory="/data/production/graph.db"/> 
      <neo4j:repositories base-package="org.domain.project.repositories.neo4j"/> 

在这种情况下,我能够访问neo4jOperations接口在我的自定义Neo4j的仓库实现,没有问题构建查询。另一方面,当前用户有权访问数据文件夹,所以这应该不成问题。

回答

0

你不能从两个程序写入相同的Neo4j数据库。相反,您应该设置Neo4j HA群集,并将其中一个群集实例用作SDN的嵌入式数据库。复制等将对您的应用程序透明。详情请参阅https://groups.google.com/forum/?fromgroups=#!topic/neo4j/6mxSvhemd8M

+0

将使用REST API(服务器实例运行到某处可到达)另一个选项? – jarandaf 2013-04-08 14:30:32

+1

@Turquesa是的,它允许多个客户端编写,但是在使用REST api时,您放弃了某些事情,例如管理事务的能力。 – Nicholas 2013-04-08 15:13:16

+0

好吧,这对我来说不是一个有效的解决方案,因为在某些时候我需要使用Neo4j Java API本身来执行大量的插入操作,而且我正在管理事务(存储库中的save方法会带来巨大的开销)。感谢您的意见。 – jarandaf 2013-04-08 15:45:11