2 个不稳定版本

0.2.0 2020 年 12 月 30 日
0.1.0 2020 年 12 月 9 日

#1246数据库接口


用于 submerge

MIT/Apache 许可

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