首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计中的CRDT与合并冲突

数据库设计中的CRDT与合并冲突
EN

Software Engineering用户
提问于 2021-10-21 09:21:30
回答 1查看 47关注 0票数 -1

我经常在软件开发中遇到这个问题,但我并不真正知道这个问题的名称。不过,这听起来很普遍。

  • 两个节点(例如,一台计算机和一部移动电话)共享一个普通的sqlite数据库(作为文件)。
  • 在分钟00:00,两者有相同的条目和生活是完美的。
  • 在分钟01:00中,第二个节点在DB的本地副本中编辑了一行。
  • 在分钟02:00中,第一个节点在DB的本地副本中编辑同一行。
  • 在分钟03:00,第一个节点与远程服务器同步。
    • 现在,远程服务器的DB版本有第一个节点的更改

  • 在分钟04:00,第二个节点尝试与远程服务器同步。
    • 现在,第二个节点的客户端或远程服务器必须处理一个冲突

我确实意识到CRDTs (比如自动机)可以解决这个问题,像git这样的程序可以以merge conflicts的名义不断地处理这个问题,但是这个例子呢?Automerge仅限于JSON结构,git仅限于git。

在一个个人笔记项目中,我解决了这个问题,我只是有一个git回购,我的电脑和手机共享,我手动解决合并冲突,但是否有一个通用的‘非交互’解决方案,扩展到数据库( DBRMS不可知像sqlite)。

此外,在软件工程领域,这个话题的名称是什么?

事先非常感谢

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-10-21 13:30:57

除了“合并冲突”之外,我不知道任何其他名称。有许多不同的策略,您使用的策略通常依赖于应用程序。如果你在CRDTs上搜索youtube上的对话,就会有一些很好的对话来解决这个问题。您可以:

  • 插入两行。
  • 随便挑一个去赢。
  • 指定一个将获胜的“主”版本。
  • 使用时间戳,让最新的一个获胜。
  • 如果是个数字,你可以让最高的人赢。
  • 提示用户手动解决冲突。

没有一种方法适用于所有的应用程序。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/432887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档