论文标题
经认证的可合并复制数据类型
Certified Mergeable Replicated Data Types
论文作者
论文摘要
复制的数据类型(RDT)是数据结构,可以同时修改多种,潜在的地理分布的复制品,而无需它们之间的协调。 RDT的设计方式是,相互矛盾的操作最终确定性地和解,以确保融合。由于对复制品的独立发展的理由的复杂性,构建正确的RDT仍然是一项艰巨的努力。侧重于RDT的正确性(以及正确的),现有的RDT方法在本地操作的时间和空间复杂性方面,与它们的顺序相比,RDT的效率较低。这是不幸的,因为RDT经常在本地操作远远超过远程通信的本地优先环境中使用。 在本文中,我们提出了Peepul,这是一种务实的方法来构建和验证有效的RDT。为了使有关正确性的推理更加容易,我们将RDT施放在分布式版本控制系统的模具中,并为其配备三向合并功能,以核对矛盾的版本。此外,我们不仅可以验证融合,还提供了一种方法来验证任意复杂的规格。我们将复制感知的模拟关系与将RDT规格与其有效纯粹功能实现相关联。我们将Peepul实施为F*库,该图书馆将证明义务释放给SMT求解器。经过验证的有效RDT被提取为OCAML代码,并在类似GIT的分布式数据库Irmin中使用。
Replicated data types (RDTs) are data structures that permit concurrent modification of multiple, potentially geo-distributed, replicas without coordination between them. RDTs are designed in such a way that conflicting operations are eventually deterministically reconciled ensuring convergence. Constructing correct RDTs remains a difficult endeavour due to the complexity of reasoning about independently evolving states of the replicas. With the focus on the correctness of RDTs (and rightly so), existing approaches to RDTs are less efficient compared to their sequential counterparts in terms of time and space complexity of local operations. This is unfortunate since RDTs are often used in a local-first setting where the local operations far outweigh remote communication. In this paper, we present Peepul, a pragmatic approach to building and verifying efficient RDTs. To make reasoning about correctness easier, we cast RDTs in the mould of a distributed version control system, and equip it with a three-way merge function for reconciling conflicting versions. Further, we go beyond just verifying convergence, and provide a methodology to verify arbitrarily complex specifications. We develop a replication-aware simulation relation to relate RDT specifications to their efficient purely functional implementations. We implement Peepul as an F* library that discharges proof obligations to an SMT solver. The verified efficient RDTs are extracted as OCaml code and used in Irmin, a Git-like distributed database.