我遵循这个great blog。在此博客中,作者对所有类型的隔离和一致性以及它们之间的关系进行了完整描述。
database - 严格的可序列化和外部一致性之间的区别-LMLPHP

但是基于Google's blog,还有另一种称为External Consistency的一致性,由Google的Spanner数据库提供。据我了解:

External consistency = Strongly Consistency + Strict Serializable

经过一些研究,外部一致性的定义可能是:



我仍然看不到External consistencyStrict Serializability之间的区别。请给我一个示例,它满足Strict Serializability,但不能满足External Consistency

谢谢

最佳答案

可串行性要求事务看起来是顺序发生的。可串行化性不需要在与事务执行等效的串行时间表上进行任何特定的排序。
严格的可序列化性要求可序列化,但也要在串行调度的顺序上施加一个条件,事务执行等效于此:在另一个事务开始之前提交的事务必须首先出现。假设A在B开始之前提交-A必须在B之前生效。
对于单节点系统,这是免费提供的可序列化性,而且在这种情况下没有人真正讨论它。在分布式系统中,这非常困难。参见https://cs.brown.edu/~mph/HerlihyW90/p463-herlihy.pdf
外部一致性略有不同。外部一致性要求必须先出现在其他事务提交之前提交的事务。假设A在B提交之前提交了-A必须首先生效。有关外部一致性的定义,请参见here
此处的微妙区别是,严格的可序列化性不对并发事务施加任何顺序,而外部一致性则对所有事务施加总顺序。因此,从任何外部一致性系统也可以严格序列化的意义上来说,外部一致性是一个更强的条件。

10-04 21:11