\[
\def\P{\mathcal{P}}
\def\V{\mathbb{V}}
\def\Tr{\mathbb{Tr}}
\def\X{\mathsf{X}}
\def\begin{\mathsf{begin}}
\def\ld{\mathsf{ld}}
\def\isu{\mathsf{isu}}
\def\del{\mathsf{del}}
\def\end{\mathsf{end}}
\def\HB{\mathsf{HB}}
\def\CC{\mathtt{CC}}
\def\CM{\mathtt{CM}}
\def\CCv{\mathtt{CCv}}
\]
摘要
分布式存储系统和数据库被各种类型的应用程序广泛使用。对这些存储系统的事务访问是一种重要的抽象,它允许应用程序程序员将操作块(即事务)视为原子执行。出于性能原因,现代数据库实现的一致性模型比标准可序列化模型弱,后者对应于在顺序一致内存上执行的事务的原子性抽象。例如,因果一致性就是在实践中广泛使用的此类模型之一。
在本文中,我们研究了因果一致性的几种变体之间的特定于应用程序的关系,并解决了自动验证给定事务程序是否对因果一致性具有鲁棒性的问题,即在任意因果一致数据库上执行时,其所有行为都是可序列化的。我们表明,没有
ww
竞争的程序在所有这些变化下都具有相同的行为集,并且我们表明,检查鲁棒性是多项式时间可归结为顺序一致共享内存上事务程序的状态可达性问题。后一个结果的一个令人惊讶的推论是,允许不可比较的行为集的因果一致性变体允许可比较的稳健程序集。这种简化还为利用现有的并发程序验证方法和工具(假设顺序一致性)来推理在因果一致的数据库上运行的程序打开了大门。此外,它允许确定当在不同站点执行的程序是有限状态时,检查稳健性的问题是可判定的。
作者: