根据doc关于Google Cloud Datastore中交易隔离的说法,write-skew anomalies (ssi-vldb12.pdf#2.1.1)必须是可行的。我对吗?
Cloud Datastore强制执行可序列化隔离[1]。这意味着每个交易都是连续执行的,没有及时重叠[2],[3]。
根据维基百科的文章,Snapshot isolation:
在写入偏斜异常中,两个事务(T1和T2)同时读取重叠数据集(例如值V1和V2),同时进行不相交更新(例如T1更新V1,T2更新V2),最后同时提交,既没有看到更新由另一个执行。如果系统是可序列化的,那么这样的异常将是不可能的,因为T1或T2必须“先”发生,并且对另一个是可见的。相反,快照隔离允许写入偏斜异常。
我写了几个测试来证明数据存储区事务隔离(sitano/datastore-writeskew)中的写入偏斜和读取偏移异常。这些测试未能证明预期的行为。数据存储区事务管理器检测到冲突的读写和中止(重新启动)事务,这些事务可能至少在表示的情况下导致这些异常。