【问题标题】:GAE: How long to wait for eventual consistency?GAE:等待最终一致性需要多长时间?
【发布时间】:2013-03-07 00:48:04
【问题描述】:

我有一个要创建大量实体的应用程序。我不想将它们放在同一个实体组中,因为我可能会在短时间内创建很多它们——比如 24 小时内创建 100 万个。

在某些时候,我想通过这样的查询来获取所有这些实体:

Foo.all()

在创建最后一个 Foo 实体后,我需要等待多长时间才能通过此查询获得所有 Foo 实体?

编辑:

从这个question 看来,我无法立即获得我所有的实体。很高兴知道我应该等多久。

【问题讨论】:

  • 实体应该很快就存在了,但是创建大量的实体会很膨胀。
  • 并且实际上检索然后您将用完时间。您将无法获取所有这些,但您可以过滤它们并提取您想要的任何内容。
  • @Lipis,我会在任务或后端迭代它们,所以我认为时间不是问题。

标签: python google-app-engine google-cloud-datastore eventual-consistency


【解决方案1】:

除了整个东西相当昂贵之外,您将能够立即获得所有实体。

请注意,遍历数百万个实体将需要使用任务,如果这还不够,因为它们的最后期限为 10 分钟,您应该考虑使用Backends

【讨论】:

  • 所以听起来对于上述问题的实际目的,GAE 行为或多或少是强一致的。如果您能指出一个资源来解释您的答案,我将不胜感激。
  • 根据我的个人经验,我从来没有每天写入 100 万次,但大约 100K 不是问题。文档中也没有任何地方指出读取数据存在任何延迟。这篇文章也可能对您的决定有用:bjk5.com/post/30813320623/…
  • @Kekito 虽然此链接没有提及任何有关写入的内容,而只是为应用提供服务,但您仍然可以看到 Google App Engine 可以处理的有效负载:googleappengine.blogspot.dk/2011/05/… 所以每天 1M 的写入不应该是一个问题:)
  • 24 小时内只有 100 万次写入,您可能根本不会遇到一致性问题。根据我的观察,大多数索引更新在几毫秒内完成,而像 0.01% 这样的一小部分在几分钟内仍然不稳定。然而,在重负载下(20 分钟内 1,000,000 次更新)我已经看到了长达 4 小时的不一致。
  • 为了尽量减少不一致(和其他负载相关问题),请避免在底层大表中创建热点。也就是说,不要使用(自动生成的)升序键,也不要对时间戳或计数器等顺序(单调)数据进行索引。
猜你喜欢
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
相关资源
最近更新 更多