Trầ*_* Dự 9 database distributed-system google-cloud-spanner
我关注这个很棒的博客。在这篇博客中,作者对所有类型的隔离和一致性以及它们之间的关系进行了完整的描绘。

但是基于谷歌的博客,还有另一种类型的一致性External Consistency,它是由谷歌的 Spanner 数据库提供的。据我了解:
External consistency = Strongly Consistency + Strict Serializable
经过一番研究,外部一致性的定义可能是:
对于任意两个事务 1 和 2(即使在地球的两侧):如果 2 在 1 完成提交后开始提交,则 2 的时间戳大于 1 的时间戳。
我还没有看到之间的差异External consistency和Strict Serializability。请给我一个它满足Strict Serializability但不满足的例子External Consistency。
谢谢
aaw*_*aaw 12
可串行性要求事务看起来是按顺序发生的。可串行性不需要事务执行所等效的串行调度上的任何特定顺序。
严格的可串行性需要可串行性,但也对事务执行等效的串行调度顺序施加了一个条件:在不同事务开始之前提交的事务必须首先发生。假设 A 在 B 启动之前提交 - A 必须看起来在 B 之前生效。对于单节点系统,这是免费的可串行性,并且没有人真正在这种情况下讨论它。在分布式系统中这是非常困难的。请参阅https://cs.brown.edu/~mph/HerlihyW90/p463-herlihy.pdf。
外部一致性有点不同。外部一致性要求在不同事务提交之前提交的事务必须看起来首先发生。假设 A 在 B 之前提交——A 必须首先生效。请参阅此处了解外部一致性的定义。
这里的微妙区别在于,严格的可串行性对并发事务不施加任何顺序,而外部一致性对所有事务施加总顺序。因此,外部一致性是一个更强的条件,因为任何外部一致的系统也是严格可序列化的。
你是对的,严格的可串行性和外部一致性几乎是相同的。据我了解,严格的可串行性并不明显的外部一致性保证是,强大的快照读取将遵循严格的可串行性,并将观察所有先前提交的事务,即使它不采取锁定。