2

我正在研究离线优先数据库和中央服务器之间的同步过程。举个简单的例子,有项目和部门,一个项目属于一个部门。每个客户端都可以修改任何实体。

我知道对于文本文档,有一些算法/技术可以处理 OT 和 CRDT 等冲突:

但是我想知道您是否可以将这些用于更复杂的结构,例如数据库中的结构。就我而言,让我们保持简单并说您有:

  • 项目 - id、名称、department_id
  • 部门 - id,名称

单个元素中的“名称”等属性的更改是可管理的(可能使用版本、增量、时间戳)。删除有点小技巧,但您可能会丢弃名称更改,因为元素已被删除。

当有关系时,它就更加棘手了。当一个客户将项目移动到一个部门而另一个客户删除该部门时会发生什么。

在一定程度上,其中一些冲突类似于使用 OT 的文本中可能发生的冲突。有人更改标题,其他人将其删除。或者有人将一个元素添加到项目符号列表中,而其他人将该列表移动到文档的不同部分。

我的问题是,您可以将 OT 或 CRDT 用于关系数据吗?如果可以,您会怎么做?如果没有,是否还有其他类似的算法或技术来处理关系数据中的冲突?

4

0 回答 0