繁体   English   中英

Google AppEngine数据存储区一致性

[英]Google AppEngine DataStore constistency

我目前对Google AppEngine的High Replication数据存储的了解如下:

  • 各个实体的 获取 放置通常始终是高度一致的 ,即,该条目的放置完成后,以后的get都不会比完成的放置早返回版本。 或者,更准确地说,只要任何一个get返回新版本,以后的get就不会再返回旧版本。

  • 如果多个实体的 gets puts属于同一祖先组并且在事务中执行,则它们是高度一致的,即,如果我有两个实体都在事务中被put修改并且“同时”以不同的方式读取使用get进行事务处理, get将返回两个条目的旧版本或两个条目的新版本,这取决于在getput -transaction是否已完成,但它永远不会返回旧值一个实体的价值和另一实体的新价值。

  • 可以选择具有祖先过滤器的查询为高度一致或最终一致的查询,其中高度一致的查询需要更长的时间才能完成,但始终会返回该祖先在同一事务中更新的所有实体的“相同”版本(旧的或新的)组,永远不要使用任何旧版本和新版本。

  • 跨始祖的查询最终始终是一致的 ,即可能返回一个结果实体的旧版本,而返回另一个结果实体的新版本。

我说对了吗? 这实际上记录在任何地方吗? 在这里 (第一个和第二个“ Note”之间)和这里 ,我只找到了一些有关查询一致性的文档,但是没有讨论获取放置 ...)

是的,你是对的。 他们只是在措辞上略有不同:

https://developers.google.com/appengine/docs/java/datastore/

一开始就有5个点形特征。 最后两个描述您的问题,除了它们引用的是“读取”而不是“获取”。

这可能会增加您的困惑,但是当它们表示“读取”或“获取”时,实际上意味着直接通过键或ID获取实体。 如果您使用键或ID以外的属性调用python的“ get”函数,则它实际上是在发出查询,该查询最终是一致的(除非它是祖先查询)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM