\[
\def\po{\mathsf{\textcolor{red}{po}}}
\def\so{\mathsf{\textcolor{purple}{so}}}
\def\wr{\mathsf{\textcolor{teal}{wr}}}
\def\ww{\mathsf{\textcolor{red}{ww}}}
\def\rw{\mathsf{\textcolor{blue}{rw}}}
\def\vis{\mathsf{\textcolor{orange}{vis}}}
\def\arb{\mathsf{\textcolor{pink}{arb}}}
\def\Write{\mathsf{Write}}
\def\Read{\mathsf{Read}}
\def\View{\mathsf{View}}
\def\RelWrites{RelWrites}
\def\MaxRelWrites{MaxRelWrites}
\def\EffWrite{EffWrite}
\def\wk{\mathsf{wk}}
\def\st{\mathsf{st}}
\def\total{\mathsf{total}}
\def\read{read}
\def\write{write}
\def\thru{thru}
\def\back{back}
\def\ANY{\mathtt{ANY}}
\def\ONE{\mathtt{ONE}}
\def\QUORUM{\mathtt{QUORUM}}
\def\ALL{\mathtt{ALL}}
\def\O{\mathcal{O}}
\def\RelTerms{RelTerms}
\def\VisBasic{VisBasic}
\]
摘要
分布式数据存储的开发人员必须牺牲一致性来换取性能和可用性。此类系统实际上可能实现弱一致性模型,例如因果一致性或最终一致性,这对应于不同的成本和对客户端的保证。我们考虑分布式系统的情况,它不仅为客户端提供单一级别的一致性,而且提供多种级别的一致性。这对应于许多实际情况。例如,流行的数据存储(如
Amazon DynamoDB 和 Apache 的
Cassandra)允许应用程序在同一会话中使用单独的一致性级别标记每个查询。在本文中,我们为多级一致性规范提供了一个正式框架,并解决了检查计算是否符合此类规范的问题。我们为这个问题提供了一种原则性的算法方法,并将其应用于具有多级一致性的模型的几个实例。
作者:
Ahmed Bouajjani1, Constantin Enea1, Madhavan
Mukund2,3, Gautham Shenoy R.2, and S. P. Suresh
2,3