Nosql 在2个Neo4j数据库之间同步数据的最佳方式是什么?

Nosql 在2个Neo4j数据库之间同步数据的最佳方式是什么?,nosql,neo4j,spring-data-neo4j,Nosql,Neo4j,Spring Data Neo4j,目前,我们的应用程序中有2个Neo4j数据库。我们使用弹簧数据Neo4j(SDN) 第一个数据库是我们的暂存数据库,另一个是实时数据库。这更多是为了版本控制和防止用户弄乱实时数据库 我们有大约50000个节点和150000个关系。我们的暂存区是为一小部分用户设计的,我们只允许在暂存中执行CRUD操作。在用户完成/验证暂存中的数据后,我们将数据集推送到实时数据库。 LIVE仅适用于只读数据库,CRUD仅允许在同步过程中使用 我想知道在两个数据库之间同步数据的最佳方式是什么,同步应该允许增量更新 我

目前,我们的应用程序中有2个Neo4j数据库。我们使用弹簧数据Neo4j(SDN)

第一个数据库是我们的暂存数据库,另一个是实时数据库。这更多是为了版本控制和防止用户弄乱实时数据库

我们有大约50000个节点和150000个关系。我们的暂存区是为一小部分用户设计的,我们只允许在暂存中执行CRUD操作。在用户完成/验证暂存中的数据后,我们将数据集推送到实时数据库。 LIVE仅适用于只读数据库,CRUD仅允许在同步过程中使用

我想知道在两个数据库之间同步数据的最佳方式是什么,同步应该允许增量更新

我尝试使用Cypher Query+SDN逐个节点进行同步,但遇到了一个障碍,时间太长了

@Query("START n=node:ItemCode('code:*') "
     + "WHERE has(n.status) AND n.status = 'ACTIVE') "
     + "RETURN n");
public Iterable<Item> getAllActiveItems();
@Query(“开始n=node:ItemCode('code:')”
+“其中has(n.status)和n.status='ACTIVE')”
+“返回n”);
公共Iterable GetAllActiviteItems();
在执行从暂存到LIVE db的同步过程的SyncService类上:

Iterable<Item> items = stagingRepo.getAllActiveItems();
for(Item item:items) {

    Item item = liveRepo.findItem(item.getCode());
    if(item == null) {
        //create item
    } else {
        //update item
    }
}
Iterable items=stagingRepo.getAllActivitems();
用于(项目:项目){
Item=liveRepo.findItem(Item.getCode());
如果(项==null){
//创建项目
}否则{
//更新项目
}
}
[更新]根据的回答,我想进一步探讨是否存在数据库链接概念,以便Cypher查询可以一次性在两个数据库上运行

欢迎提出任何意见

谢谢,
Gunawan

是否有任何方法可以在一个Cypher查询中执行查找和更新,并在
neo4jTemplate.query(“..”,params)
函数中执行它

如果使用上面的代码,所有匹配的内容都必须从数据库具体化到
Item
对象中,然后再次保存到repo函数中,从而产生开销

也许一个简单的

START n=node:ItemCode('code:*')
WHERE has(n.status) AND n.status = 'ACTIVE')
WITH n
SET n.updated=1

一个新的项目就可以了?这样,工作在DB中完成,不涉及SDN映射层。

欢迎访问stackoverflow.com。不幸的是,本网站仅用于编程问题。然而,您的问题是关于数据库管理的。您应该将其发布在dba.stackexchange.com上。这就是说:您是否尝试在文件系统层复制数据库?顺便说一句,这与编程问题有关。我无法复制数据库文件以在数据库之间同步,因为需要进行部分同步(仅在某些节点上,例如处于活动状态的节点上),感谢您的输入。您是否找到了解决方案?我遇到了完全相同的问题谢谢彼得。我将尝试触发查询,而不是转换回Java对象。有没有办法根据节点的存在同时创建和更新查询?找到此命令