$$ \def\po{\mathsf{\textcolor{red}{po}}} \def\AR{\mathsf{\textcolor{brown}{AR}}} \def\VIS{\mathsf{\textcolor{orange}{VIS}}} \def\Obj{\mathsf{Obj}} \def\Op{\mathsf{Op}} \def\Hist{\mathsf{Hist}} \def\Event{\mathsf{Event}} \def\REvent{\mathsf{REvent}} \def\WEvent{\mathsf{WEvent}} \def\HEvent{\mathsf{HEvent}} \def\EventId{\mathsf{EventId}} \def\read{\mathtt{read}} \def\write{\mathtt{write}} \def\H{\mathcal{H}} \def\A{\mathcal{A}} $$
摘要
现代分布式系统通常依赖于数据库,这些数据库通过仅提供关于分布式事务处理一致性的弱保证来实现可扩展性。与此类数据库交互的程序的语义取决于其一致性模型,该模型定义了这些保证。不幸的是,一致性模型通常是非正式的或使用不同的形式主义,通常与数据库内部相关。为了解决这个问题,我们提出了一个框架,用于统一和声明性地指定各种事务一致性模型。
我们的规范以弱内存模型的形式给出,使用事件和关系结构。这些规范特别简洁,因为它们利用了许多一致性模型保证的原子可见性属性:事务的所有更新或所有更新都对另一个事务可见。这允许规范从事务内部的单个事件中抽象出来。我们通过指定几个现有的一致性模型来说明我们框架的使用。为了验证我们的规范,我们证明它们等同于替代操作规范,这些规范是更接近实际实现的算法。我们的工作为开发弱一致性大规模数据库中出现的新形式并发的元理论提供了严格的基础。
作者:


