软件开发中的数据处理与工作流模式解析
1. 可变属性模式
在数据处理系统中,可变属性模式是处理数据变更的重要方式。当用户设备可能临时与服务器断开连接,或者网络连接缓慢时,这种模式允许节点自主记录属性的新值,无需事先与其他节点连接以防止并发更改。
1.1 结构
可变属性用一个事实来表示,实体作为前驱,值作为字段。为了跟踪随时间的变化,它在一个前驱集合中记录先前的版本。
fact Entity {
identifier: type
}
fact EntityProperty {
entity: Entity
value: type
prior: EntityProperty*
}
通常情况下,当用户更改属性时,前驱集合只捕获最近的版本,形成一个线性的属性事实链。但如果两个用户(或一个用户在两个设备上)同时更改一个属性,图就会分叉,形成一个有多个叶子节点的树。
1.2 并发更改处理
当节点计算出有多个叶子节点的树时,就识别出了并发更改。此时,应用程序通常会将所有叶子节点作为候选值呈现给用户,用户可以从中选择并解决冲突。应用程序也可以自行计算解决方案,比如通过对叶子节点应用一个简单的函数(如取最大值)。在极少数情况下,开发者可能会基于所有叶子节点的最近共同祖先来解决冲突,像 Git 这样的源代码控制系统会进行三方合并,但这种复杂函数不适用于大多数应用。
为了计算叶子节点集合,节点可以运行以下查询:
query valuesOfProperty(e: Entity) {
match p: EntityProp
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



