【问题标题】:AppEngine datastore bug - indexes are not syncedAppEngine 数据存储错误 - 索引未同步
【发布时间】:2013-10-25 15:35:18
【问题描述】:

我刚才遇到了最奇怪的事情:

我尝试将实体放入 Cloud Datastore。 实体未到达数据库,但在按索引搜索时确实返回。

我的意思是:

Select * from EntityType -> 不返回该行(尽管其他行返回)

Select * from EntityType where entityName = "xxx" -> 确实返回行(在上一个查询中没有返回)

编辑:

即使在 Put() 一个多小时后,两个查询仍然返回不一致的结果

【问题讨论】:

  • 你确定这不仅仅是最终的一致性吗?如果您再次尝试第一个查询,它现在有效吗?
  • 同意@Daniel,除非您通过密钥或使用祖先查询,否则不一致更有可能是最终一致性的结果
  • 我在 Put() 操作 10 分钟后尝试了这两个查询。不一致的时间段是否合理?
  • Put() 后 20 分钟 - 仍然不一致
  • 您是否尝试过对项目执行 get(),然后进行查询。如果这有所作为,那么它肯定是最终的一致性。

标签: database google-cloud-datastore google-cloud-platform


【解决方案1】:

这是最终一致性的经典示例 - 虽然实体是同步写入的并且保证在查找时保持一致,但包括 Kind 索引在内的实体索引是异步更新的。

这通常在几毫秒内解决,但在极少数情况下,它可能会延长到几秒甚至一个小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2017-10-23
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多