最终的一致性意味着GAE(HRD)?

时间:2015-03-24 10:12:05

标签: google-app-engine consistency

来自GAE文档A query may include entities in the result set that should not have been included, or exclude entities that should have been included.这是否意味着SELECT ORDERS FROM USERX这样的查询可以返回USERX以外的其他用户的结果?

2 个答案:

答案 0 :(得分:2)

是的 - 您可以在一定程度上考虑落后于实体的指数。如果您执行 get-by-key ,您将始终获得强大的一致性 - ,您将始终获得“正确的”(最新)实体。

每当您执行(非祖先)查询时,数据存储区将扫描一个或多个索引。那些索引可能尚未(尚未)反映实体中的最新值。 “最终”,它们将保持一致,但不保证何时(必须在不同位置复制实体并更新相关索引)。

所以,如果可以的话(例如,如果你知道你想要获取什么实体), get-by-key 总是很好,因为你将获得强大的一致性并避免索引扫描

如果您需要对某些具有强一致性的实体进行查询,则需要为这些实体提供一个共同的祖先,但要小心,因为它通常会限制您以后(特别是写入速率) )。

答案 1 :(得分:1)

这意味着您可能会得到一个结果集,其中包含过时的实体或实际已删除的实体,但不包含任何错误的实体。换句话说,您可能会看到缓存的结果而不是非常新的结果。

如果这是一个问题,那么您将不得不使用祖先并将结果限制为单个实体组。