使用 Alloy 阅读通用隔离级别定义论文

主要观点:用 Alloy 建模语言基于一阶逻辑来模拟数据库事务执行历史,通过定义实体、事件等,利用可视化工具展示模型,添加事实约束以避免生成无意义历史,还展示了对不同一致性模型的建模与验证,鼓励尝试 Alloy 并提供相关资源。
关键信息

  • 定义了对象(Object)、事务(Transaction,包括已提交和已中止的子类)、事件(Read、Write、Commit、Abort 等)等实体。
  • Event 签名有 tr、eo、tnext 等字段,Read 有 sees 字段,Write 有 obj、wn 字段。
  • 可使用 Alloy 可视化工具生成模型可视化,通过配置主题可美化,添加事实可约束模型避免无意义历史。
  • 定义了版本(Version),建模了直接写依赖关系(ww)等。
  • 展示了对不同一致性模型(如 anomaly serializable 等)的建模与验证及反例。
    重要细节
  • sig 是 Alloy 中的关键字表示签名,用于定义实体。
  • 利用 open util/ordering[WriteNumber] 等模块定义顺序。
  • 在模型中通过函数和事实来描述各种关系和约束,如 events 函数、不同的 fact 等。
  • 对于不同的一致性模型,通过 pred 定义相关条件,如 AnomalySerializableStrict 等,并使用 check 进行验证,展示反例及相关关系图(如 DSG)。
  • 介绍了谓词读(PredicateRead 等)的定义和相关事实。
阅读 16
0 条评论