我有一个有向图数据结构,我正在尝试为每个顶点实现单独的版本控制。这创造了一些有趣的场景,我非常感谢你们的任何想法。具体来说,我希望在遇到所述场景时解决系统的默认行为。
见下图:Graph versions
场景 1:“空指针悖论”
顶点 A 回滚到 1.0 版。由于此回滚将向下级联其子图,因此 C 将不再指向 D。这可能会造成危险。行为是否应该是:
情景 2:“间接影响”
顶点 D 被更新,因此以下内容成立:
顶点 A 现在回滚到 1.2 版,因此以下内容成立:
默认行为是否应该是:
最佳答案
在我看来,这里的粒度有些困惑。如果您只对单个顶点进行版本控制而不对图形进行版本控制,则回滚单个顶点不应影响图形的其余部分。 OTOH,如果您希望回滚整个图形,那么您还应该对整个图形进行版本控制。
问题是,如果你只对单个顶点进行版本控制,那么你只能保证单个顶点的完整性,而不能保证整个图的完整性。因此,如果如您所描述的那样,回滚单个顶点“贯穿”整个图(或至少是连接的子图),那么您不能保证最终处于一致状态。
似乎与您正在尝试的最接近的研究是关于 XML 的版本控制,但是,它只处理强类型树(IOW 退化图),而不是一般图。
关于database-design - 图形和版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060645/