以史为鉴:数据模型变迁史

以史为鉴:数据模型变迁史
这两天看了篇数据模型的论文,What Goes Around Comes Around。这篇论文是2005年Stonebraker和Hellerstein两位泰斗写的,讲的是数据库的数据模型35年的变迁历史,另外论文还总结了一些经验。 这是一个非常有趣的话题,能够让我们更多地去从市场和产品角度看问题,尤其是考虑到不断迭代的甚至是越来越快地迭代的数据库技术。   数据模型Data Model的9个历史阶段: Hierarchical(IMS): 1960年代末到197...

Quorum System的故障概率和负载

Quorum System的故障概率和负载
最近读到一个有趣的话题:Quorum System的故障概率和负载。   首先是一些概念: 节点集合 V=\{v_1, v_2, .., v_n\} Quorum  Q\subseteq V Quorum System \mathcal{S} \subseteq 2^V,且Q_1 \cap Q2 \neq \emptyset, \forall Q1,Q2 \in\mathcal{S} 故障概率Failure Probability: 假设每个节点故障概率为p,Quorum System  \mathcal{S}的故障概率记为F_p( \mathcal{S})等于每个Quorum都至少有一个节点发...

数据库系统组件

数据库系统组件
  读了Architecture of a Database System这篇经典论文,挑了些不太熟悉的内容做了笔记。 论文内容基本上谈不上是在讲架构吧,基本上就是罗列了下有哪些组件,而且内容基本上针对原来传统数据库的。   主要包括几个组件: Client Communication Manager Process Manager Relational Query Processor Transaction Storage Manager Shared Components and Utilities Client Session Manager 两层...

What's Really New with NewSQL?

What's Really New with NewSQL?
  这篇文章介绍的面很广,提到了诸多系统,不过每个点都不太细。另外虽然是16年的文章,但不知道为啥还是感觉有点陈旧了。。。简单来说,当个手册看吧,遇到具体细节问题,可以找文中提到的具体系统参考下。这里捡我感兴趣的点罗列了一下,详细内容读者可以看原文。   DBMS简史 1968年第一个DBMS上线,IBM在数据库领域发力甚早,比如System R,不过没有对外。 70年代,Oracle发布了第一个版本。 ...

漫谈复制状态机的几个有趣的问题

漫谈复制状态机的几个有趣的问题
读过Paxos等论文的读者,应该对复制状态机(Replicated State Machine)的概念并不陌生。复制状态机在分布式系统中是一个很简单却很强大的模型,也是一种很有价值的思想。 模型一句话描述就是:多个节点上,从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。 这里有几个有趣的问题。   复制状态机保持一致是什么意思? 实际上,与其说是一致,其实可以泛化为分布式的两个节点状态存在某种...

关于事务的一点琐碎思考

关于事务的一点琐碎思考
最近又零散地看了一些mvcc/snapshot的东西,有了一些新的理解和观点,记录一下,内容比较碎,不一定正确,欢迎大家讨论拍砖。 在某些实现下,2PC会影响MVCC ? MVCC相比lock-based的并发控制,可以使得写不阻塞读。不过如果如果使用基于时间戳的行级多版本,在有分布式事务时,有可能遇到类似于下面的问题:2PC中参与者prepare之后收到协调者的commit/abort通知之前是未决的状态,该参与者不知道事务是提交...

Raft One-Server成员变更

Raft One-Server成员变更
前面介绍了Paxos成员组变更,现在根据Raft博士论文介绍一下Raft是怎么做成员组变更的。前者更多描述几个核心的思想,而后者更加实用,介绍了实践过程中遇到的一些实际问题。 Raft博士论文描述了两种变更方案: One-Server变更:一阶段变更,要求每次成员组从G1变成G2时,G2相比G1加一个成员或者减一个成员。 Joint Consensus:支持任意的变更,即从成员组G1变成G2,不要求G1和G2有什么关联,比如可以完全...

Reconfiguring a State Machine

Reconfiguring a State Machine
  Reconfiguring a State Machine这篇论文主要讲解成员组reconfigure,即成员变更。发表时间还是2010年,相比Paxos原始论文的发表时间已经过去20年了。本博文先解读这篇论文,Raft做成员变更的方案后面另文阐述。 Reconfiguration是指在分布式系统执行过程中,改变系统内进程(副本)集合的动作。例如,Paxos成员组从(S1,S2,S3)变为(S1,S2)。成员变更可以改变成员组大小(从五个副本改为三个副本),...

EPaxos协议解读

EPaxos协议解读

本篇博文主要描述了EPaxos command commit的过程,并且解释了为什么fast quorum的值如此奇怪。
相比Multi Paxos和Raft,EPaxos有着自己的优势,但是缺点也非常明显,EPaxos协议非常复杂,接口行为也不见得适应现在的软件栈,比如commit和execution的阶段划分更加的明确,execution逻辑很复杂,读取操作也很复杂。我个人认为EPaxos协议的一些想法还是比较有意思的,但是不太适合生产场合使用,毕竟能实现一个高效正确的Multi Paxos协议已属不易,而且EPaxos协议虽然吞吐量能有比较大的提高,但是容易发现协议中各种操作真正在实现时,会出现大量非常耗费CPU的代码,整体性能能提高到多少,我想并不太乐观。