gpt4 book ai didi

database-design - 图形和版本控制

转载 作者:行者123 更新时间:2023-12-04 07:15:43 24 4
gpt4 key购买 nike

我有一个有向图数据结构,我正在尝试为每个顶点实现单独的版本控制。这创造了一些有趣的场景,我非常感谢你们的任何想法。具体来说,我希望在遇到所述场景时解决系统的默认行为。

见下图:Graph versions

场景 1:“空指针悖论”

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

  • 1.1:删除边C->D,创建断图
  • 1.2:删除D,让E成为孤儿
  • 1.3:删除D和E
  • 1.4:在所有指向 D 的边(在这种情况下是 E -> D)被删除之前拒绝执行回滚
  • 1.X:替代解决方案?

  • 情景 2:“间接影响”

    顶点 D 被更新,因此以下内容成立:
  • D 现在是 1.2 版
  • E 现在是 1.1 版
  • C 现在是 1.3 版
  • A 现在是 1.3 版

  • 顶点 A 现在回滚到 1.2 版,因此以下内容成立:
  • A 现在是 1.2 版
  • C 现在是 1.2 版
  • D 现在是 1.1 版

  • 默认行为是否应该是:
  • 2.1:将 E 回滚到 1.0
  • 2.2:由于版本风险而拒绝回滚,实际上影响功能
  • 2.X:替代解决方案?
  • 最佳答案

    在我看来,这里的粒度有些困惑。如果您只对单个顶点进行版本控制而不对图形进行版本控制,则回滚单个顶点不应影响图形的其余部分。 OTOH,如果您希望回滚整个图形,那么您还应该对整个图形进行版本控制。

    问题是,如果你只对单个顶点进行版本控制,那么你只能保证单个顶点的完整性,而不能保证整个图的完整性。因此,如果如您所描述的那样,回滚单个顶点“贯穿”整个图(或至少是连接的子图),那么您不能保证最终处于一致状态。

    似乎与您正在尝试的最接近的研究是关于 XML 的版本控制,但是,它只处理强类型树(IOW 退化图),而不是一般图。

    关于database-design - 图形和版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060645/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com