Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 谷歌云数据存储中是否可能存在写倾斜异常?_Google Cloud Platform_Google Cloud Datastore - Fatal编程技术网

Google cloud platform 谷歌云数据存储中是否可能存在写倾斜异常?

Google cloud platform 谷歌云数据存储中是否可能存在写倾斜异常?,google-cloud-platform,google-cloud-datastore,Google Cloud Platform,Google Cloud Datastore,基于谷歌云数据存储中关于事务隔离的说法,必须是可能的。我说得对吗?云数据存储强制执行可序列化隔离[]。这意味着每个事务都是连续执行的,在时间[]和[]上没有重叠 根据维基百科的文章,: 在写倾斜异常中,两个事务T1和T2同时进行 同时读取重叠数据集,例如值V1和V2 进行不相交的更新,例如T1更新V1,T2更新V2,最后 并发提交,两者都没有看到 另外如果系统可序列化,则会出现这种异常 不可能,因为T1或T2必须首先出现,并且 对另一方可见。相反,快照隔离允许写操作 倾斜异常 正如Ivan Pr

基于谷歌云数据存储中关于事务隔离的说法,必须是可能的。我说得对吗?

云数据存储强制执行可序列化隔离[]。这意味着每个事务都是连续执行的,在时间[]和[]上没有重叠

根据维基百科的文章,:

在写倾斜异常中,两个事务T1和T2同时进行 同时读取重叠数据集,例如值V1和V2 进行不相交的更新,例如T1更新V1,T2更新V2,最后 并发提交,两者都没有看到 另外如果系统可序列化,则会出现这种异常 不可能,因为T1或T2必须首先出现,并且 对另一方可见。相反,快照隔离允许写操作 倾斜异常


正如Ivan Prisyazhnyy OP所指出的,数据存储在事务内部是可序列化的,但在事务外部它是读提交的,这只会防止脏读,而不会出现写倾斜异常


下面是它的工作原理的一些示例。

我已经编写了一些测试来演示数据存储事务隔离中的写倾斜和读倾斜异常。这些测试未能证明预期的行为。data Store transaction manager检测到冲突的读写操作,并中止重新启动可能导致这些异常的事务(至少在所述情况下是如此)。

在文档中说明,一个事务不能同时修改另一个事务读取或修改的数据。你能重新措辞你的问题吗?您是否在询问是否在数据存储中阻止了写倾斜示例?是的,我正在询问txs的写倾斜行为是否可能。如wikipedia中所示的示例:在写倾斜异常中,两个事务T1和T2同时读取重叠的数据集,例如值V1和V2,同时进行不相交的更新,例如T1更新V1、T2更新V2,最后并发提交,两者都没有看到对方执行的更新。这是最简单的异常情况。>云数据存储强制可序列化隔离。。。事实并非如此。文档仅说明事务的内部可序列化性,这意味着从事务内部,事务正在观察可序列化行为,就像它是当前正在处理的唯一事务一样,但从外部看,情况并非如此。在外部,doc为事务声明了与read-committed类似的语义,在read-committed隔离下,不可能简单地防止写倾斜异常。RC隔离只能保证不存在脏读和脏写。这并不能阻止WS.>这意味着每个事务都是串行执行的,没有时间重叠。。。事实也并非如此。内部串行化仅仅是tx的一种幻觉。全局或外部事务使用乐观并发控制实现读提交隔离,这意味着它们确实重叠。仅禁止他们读写上次更新/访问时间版本检查中检测到的相同密钥。您能否将您的结论作为答案发布并自动接受,以便更多人有相同的问题时可以看到?谢谢@是的,我会的,但我想先写代码。