2 个不稳定版本
0.2.0 | 2020 年 12 月 30 日 |
---|---|
0.1.0 | 2020 年 12 月 9 日 |
#1246 在 数据库接口
用于 submerge
115KB
2K SLoC
clepsydra
概览
这是对 minimalist 分布式数据库核心协议的逐步实现。它试图尽可能小和简单,同时尝试提供相对复杂的功能。
-
严格的序列化
-
在线重新配置
-
容错
-
高吞吐量
实现基于简化版的 "Ocean Vista" (OV) 协议,并在可能的情况下使用其术语。OV 将复制、事务提交和并发控制合并为一个单一协议。
摘要
协议的简短版本是
-
事务表示为对快照的确定性 thunks。
-
每个事务都分配一个全局唯一的时间戳。
-
事务被分为两个阶段:S 阶段和 E 阶段。
-
S 阶段(存储)由无协调的“盲目多数写入”组成,将 thunks 复制到每个副本上的 MVCC 顺序。
-
水印跟踪最小事务时间戳被在节点之间传播,随着多数写入的完成而增加。
-
只有在水印超过它之后,事务才进入 E 阶段。
-
E 阶段(评估)多数读取并评估水印以下的一致快照中的 thunks,懒加载解决任何较早的 thunks。水印以下的一切都是无协调和确定性的。
注意事项
没有什么是完美的,这个包也不例外。
-
这个包非常不完整,还不工作。除了实验和玩具之外,不要用它做任何事情。恢复、重新配置、超时和复杂的容错路径肯定不工作。
-
它还(相当鲁莽地)尝试将 OV 的重新配置和 Gossip 协议组合成 [concorde] 可重新配置格协议的一个实例。这甚至可能不是理论上的安全。
-
它比完整的 OV 协议更简约:没有对分片的支持,也没有两层对等节点-数据中心本地组织。这个包将其整个对等组视为一个单一对称分片。
-
因此,性能不会是“Web 规模”或任何东西。如果你向它投入核心,它会垂直扩展,但不会更好,并且其延迟将始终包含光速 WAN RTT 因素。它是分布式用于容错,而不是横向扩展。
-
与 OV 一样,这个包也需要部分时钟同步。它不需要非常紧密:时钟漂移只会随着水印的进步而增加延迟,因为它只影响所有时间中最小值;它不影响正确性。正常的弱 NTP 级同步应该没问题。
-
与OV、Calvin以及所有确定性数据库一样:您的交易必须是确定性的,并且必须具有确定性的读取和写入集。如果它们的读取和写入集不能静态计算(例如,如果它们依赖于数据来决定读取和写入集),则您必须构建略微尴尬的多阶段交易。文献中的术语是“侦察查询”。
参考
华帆,戈拉布。Ocean Vista:基于Gossip的地理分布式交易的可见性控制。PVLDB,12(11):1471-1484,2019。
DOI: https://doi.org/10.14778/3342263.3342627
http://www.vldb.org/pvldb/vol12/p1471-fan.pdf
名称
维基百科
水钟或滴漏(希腊语 κλεψύδρα 来自 κλέπτειν kleptein,'偷取'; ὕδωρ hydor,'水')是一种计时器,通过调节液体流入(流入类型)或流出(流出类型)容器来衡量时间,然后测量其量。
许可证:MIT OR Apache-2.0
依赖项
~10–20MB
~300K SLoC