代码之家  ›  专栏  ›  技术社区  ›  awdz9nld

图形和版本控制

  •  8
  • awdz9nld  · 技术社区  · 14 年前

    请参见下图: Graph versions

    场景1:“空指针悖论”

    顶点A将回滚到版本1.0。由于此回滚将沿其子图层叠,C将不再指向D。这可能会造成危险。行为是否应:

    • 1.1:删除边C->D,创建断开的图形
    • 1.2:删除D,使E成为孤儿
    • 1.3:删除D和E
    • 1.X:其他解决方案?

    情景2:“间接影响”

    顶点D将被更新,以使以下内容保持不变:

    • D现在是版本1.2
    • C现在是1.3版
    • A现在是1.3版

    • A现在是1.2版
    • C现在是1.2版
    • D现在是版本1.1

    • 2.1:将E回滚到1.0
    • 2.2:由于版本危险而拒绝回滚,实际上损害了功能
    • 2.X:其他解决方案?
    3 回复  |  直到 14 年前
        1
  •  4
  •   Jörg W Mittag    14 年前

    在我看来,这里的粒度有些混乱。如果只对单个顶点进行版本转换,而不对图形进行版本转换,则回滚单个顶点不应影响图形的其余部分。如果,奥托,你 希望 整个图形要回滚,那么还应该对整个图形进行版本转换。

        2
  •  6
  •   Community prosti    7 年前

    你所处理的是一个非常复杂的问题,虽然我不知道专门针对这方面的重点研究项目,但我听到一些人试图处理这个问题。

    我最终做的是拒绝执行任何类型的修订控制,而是每次都用新的标识创建新节点。我失去了回退,失去了任何一种追踪,但我保持了事情的可控性。

        3
  •  1
  •   asaf000    11 年前

    Antiquity是蓝图的版本化图形实现(因此它也适用于neo4j), 看看: https://github.com/asaf/antiquity