我目前对 Google AppEngine 的 High Replication DataStore 的理解如下:
单个实体的Gets和puts始终是强一致的,即一旦这个条目的put完成,以后的get将永远不会返回比完成的put更早的版本。或者,更准确地说,只要任何一个get返回新版本,以后的get都不会再返回旧版本。
多个实体的获取和放置是高度一致的,如果它们属于同一个祖先组并且在事务中执行,即如果我有两个实体都在事务中被放置和“同时”读取在不同的使用get进行事务, get将返回两个条目的旧版本或两个条目的新版本,具体取决于put事务是否在get时完成,但它永远不会返回旧值一个实体的新价值和另一个实体的新价值。
具有祖先过滤器的查询可以选择为强一致或最终一致,其中强一致查询需要更长的时间才能完成,但将始终返回在此祖先的同一事务中更新的所有实体的“相同”版本(旧的或新的)组而不是一些旧版本和一些新版本。
跨越祖先的查询总是最终一致的,即可能返回一个结果实体的旧版本和另一个结果实体的新版本。
我做对了吗?这实际上记录在任何地方吗?(我只在这里(在第一个和第二个“注释”之间)和这里找到了一些关于查询一致性的文档,但它没有谈论获取和放置......)