CI COV License: MIT

DottedVersionVector 库

这是一个 Swift 实现的点状版本向量,描述于 Gonçalves R, Almeida PS, Moreno CB, Fonte V, Preguiça N. (2012) 的论文 点状版本向量:分布式键值存储的高效因果关系追踪 中。此代码使用了 Erlang 中的参考实现 作为指导(和测试用例)。

实现细节

基本类是 DVV,它包含一个版本向量和一个 DotDot 只是一个命名的计数器。版本向量本身只是一个有序的 Dot 实例集合,但具有略微不同的语义。DVV 中的 Dot 实例指的是给定服务器的写入计数器,而版本历史记录中的 Dot 实例记录了版本之间的关系。

Erlang 参考实现将时间戳包含在 Dot 定义中,用于在服务器或副本键相同时对 Dot 实例进行排序。这个 Swift 实现没有这样做 -- 它假设管理 Dot 计数器的服务器或副本可以保证每次更新时都正确地增加计数器。

就像 Erlang 实现一样,DVV 是不可变的。 DVV API 将生成一个新的 DVV 实例,而不是就地更改值。

更多链接