传播更新(和隔离节点)实践

时间:2015-02-09 12:35:14

标签: neo4j

我正在考虑为我的应用程序实现一个在线伪模式更新机制。我使用的是neo4j的嵌入式HA版本(2.1 / 2.2里程碑)。

伪架构更新的含义是一组新属性(可能还有关系(可能甚至是新节点))被添加到现有属性中。说,我有

(h :Word {title : "node"})-[s :Synonym]->(v :Word {title : "vertex"})

我希望我的超级应用程序的下一个版本具有这种结构:

(h :Word :Adjective {title : "hot"})-[s :Synonym]->(b :Word :Adjective {title : "balmy"})
(h)-[a :Antonym]->(c: Word {title : "cold"})
// I'd like to have index on `titles` of all `Adjective`s as well!

由于我的应用程序非常棒,我希望它能够尽可能多地使用,因此我有一个3(5,7等)节点集群,并且有一些冗余。

现在,对我而言,完美的情景是以某种方式拉动'来自群集的节点(其余部分正在提供美味内容)并在离线模式下进行更改:创建索引和关系,添加标签和索引等。之后,节点被插回群集并且变化缓慢传播。

这种情况在某种程度上与CAP定理的局限性有关,因为我无法看到制作“模式”的方法。升级原子,同时保持与升级期间可能发生的所有数据更新一致。也就是说,我无法在保持一致性的同时提供更新原子性。我希望外部世界尽可能无缝地看到更新,但看起来我无法一步到位。

问题是:

  1. (通常情况下)在更新过程中可能会在过期节点上创建一些新数据。
  2. 我不知道如果它不是主人,那么是否有可能从已经过时的节点传播更改(因此问题 - 我可以强制分配群集的主人?)
  3. 问题是我是否在这里走上正轨,如果你遇到这样的情况,你会采用什么程序?有没有解决我的问题的迁移工具?或者,如果有可能,我可以参与一些社区活动来创建类似的东西吗?

    总的来说,我需要的是设计建议而不是最终的技术解决方案。

0 个答案:

没有答案