我正在研究一个有许多有界上下文的系统。一个上下文充当其他上下文的主数据。它包含用户,组织,分支机构等信息。
我正在尝试为每个其他子系统创建一个主记录neo4j实例,其中包含单独的neo4j实例。
使用neo4j复制将主记录信息复制到其他子系统中是否可行/可行,然后根据需要向子系统数据添加其他节点和关系?
这里的目的是防止主记录数据被来自其他子系统的数据所困扰。特别是一个子系统有一个非常密集的图形,我担心它会开始导致性能问题。
neo4j复制系统似乎主要用于HA,所以我不确定将它用作架构工具是否明智?
答案 0 :(得分:1)
如果没有他们同步回主人,你就不能写信给Neo4j奴隶。
我可能会将各个数据库从主服务器同步(手动)到从服务器(例如使用tx提交处理程序或change-feed)。
然后,您可以使用个别特定信息增强您的依赖有界上下文。
您还可以使用事件源架构来分发输入,或者只是将写入/更新查询复制到所有数据库(例如,使用负载均衡器)。
只要你保持在域级别,它应该可以正常工作(因为你只匹配你的域的标签和属性,而不是neo4j node-id,这对于不同的机器可能是不同的)。
可能失败的唯一写入查询是删除尝试从主上下文删除节点的位置,但不能删除子上下文,因为它们也连接到子上下文中的其他信息。
因此,您可能必须使用更具侵略性的删除查询,以确保在删除节点之前删除节点的所有关系。