【发布时间】:2016-12-15 09:51:28
【问题描述】:
如果定义了太多的索引,或者具有太多属性的复合索引,或者一个 Kind 中的数据太多,那么后续查询可能会在很长一段时间内找不到实体——几分钟或更长时间——之后已插入。
是否有大型索引影响的基准?大概基准会将对象插入到一个大的 Kind 中,然后查询另一个副本,并测量时间。
【问题讨论】:
标签: google-app-engine google-cloud-datastore eventual-consistency
如果定义了太多的索引,或者具有太多属性的复合索引,或者一个 Kind 中的数据太多,那么后续查询可能会在很长一段时间内找不到实体——几分钟或更长时间——之后已插入。
是否有大型索引影响的基准?大概基准会将对象插入到一个大的 Kind 中,然后查询另一个副本,并测量时间。
【问题讨论】:
标签: google-app-engine google-cloud-datastore eventual-consistency
涉及的因素更复杂。
确实,增加索引的数量可能会增加最终的一致性,因为需要做更多的工作来应用它们——索引是同步写入的,而实体本身总是在提交返回之前应用。读/写模式也会影响最终的一致性,例如超过每个实体组准则每秒 1 个事务。后端的其他因素包括数据中心/副本中断和后续恢复等。
基准测试不太可能让您深入了解这些问题,尤其是因为您无法强制基准测试针对特定副本。
一般指导是最终一致性平均在几毫秒内解决,偶尔在几秒内解决。在极端情况下,这可能会延长至数小时或更长时间(例如数据中心刚刚恢复在线)。
如果可能,建议在最终一致性不可接受的情况下使用强一致性机制(祖先查询、查找)。
【讨论】: