gpt4 book ai didi

algorithm - 在面向消费者的应用程序中同步数据时如何处理冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:31 27 4
gpt4 key购买 nike

假设我们有一个包含一些数据的对象 D。这在两个不同的位置进行了不同的修改,从而产生了数据对象 D1 和 D2。根据内容,D1 和 D2 在作为同步过程的一部分合并回时可能会相互冲突。

诸如版本控制系统之类的系统只是简单地指出两个数据对象相互冲突,并留给用户手动解决冲突。

但是,现在让我们想象一个面向消费者的应用程序,例如在线同步内容的笔记应用程序。在这种情况下,没有用户会想要手动解决可能由于用户键入具有不同内容的同一笔记的两个版本而引起的冲突。为新对象丢弃旧对象也是不可能的,因为旧对象中可能包含用户想要的有值(value)的内容。

我应该如何解决面向消费者的应用程序中的此类冲突?

最佳答案

好吧,如果您不想手动解决冲突,那么您将不得不自动合并来自两个更新的更改。

没有一种方法适用于所有应用程序。当您有这样的要求时,您必须仔细设计应用程序,以便自动合并有意义。

有几种常见的方法,您可以通过各种组合来使用其中一种或所有方法:

1) 合并更新非常快。想想谷歌文档——当人们编辑时,更新会实时合并。操作转换 (https://en.wikipedia.org/wiki/Operational_transformation) 是准确理解如何进行这种合并的好方法,但它不必像该文档那样复杂。这样做效果很好的原因是更新很小,您可以在投入大量工作之前判断是否有人在弄乱您的东西。礼貌可以解决冲突——你们中的一个人会等到另一个人完成这些事情。

2) 锁定。如果你点击笔记上的编辑按钮,锁定它,这样在你完成之前没有人可以编辑它,等等。这是老式的,不像 (1) 那样灵活,但它可以在某些情况下工作合并速度不够快的地方无法执行 (1)。

3) 设计您的数据模型和界面,使合并后的版本尽可能好。例如,如果任何人都可以添加注释,但注释只能由其所有者编辑,则没有问题。或者,如果您先征得我的许可,然后我给您,您才能编辑我的东西。随着事情变得越来越复杂,这变得越来越困难。如果您不愿意牺牲应用程序功能,通常不可能做好这件事。不过,你有一件事情:打扰别人的工作是不礼貌的,所以你可以做的很多事情看起来就像你做的只是为了强制良好行为,如果你这样做,用户会感谢你做得很巧妙。

关于algorithm - 在面向消费者的应用程序中同步数据时如何处理冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39146528/

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