从数据存储中获取大量实体
Getting large number of entities from datastore
通过 问题,我能够在数据存储区中存储大量(>50k)实体。现在我想在我的应用程序中访问所有这些。我必须对其执行数学运算。它总是超时。一种方法是再次使用 TaskQueue 但它将是异步作业。我需要一种方法来访问我的应用程序中的这些 50k+ 实体并在不超时的情况下处理它们。
您原来问题的部分已接受答案可能仍然适用,例如,截止日期为 24 小时的手动缩放实例。或 VM 实例。当然是有价的。
使用内存缓存可以实现一些加速。
旁注:根据实体的大小,您可能还需要关注实例内存使用情况。
另一种可能性是切换到 faster instance class(内存更大,但也需要额外费用)。
但所有这些改进可能仍然不够。最好的方法仍然是对您的实体数据处理算法进行更深入的思考 - 使其 可扩展.
我很难想象一个计算如此庞大,以至于不能分解成更小的部分,而这些小部分不需要所有一次的数据。我几乎可以肯定,必须有某种方法来使用部分计算,也许可以存储一些部分结果,以便您可以拆分问题并允许它在多个请求中以更小的部分进行处理。
作为一个极端的(学术)例子,想想 CPU 几乎可以做任何 super-complex 计算,基本上只需要对一小组寄存器进行一系列简单、简短的操作 - 这都是关于 如何进行的 编排它们。
Here 是一篇很好的文章,它描述了通过使用一种很好的方法(也很有趣,因为它使用的是 GAE 管道 API).
如果您 post 您的代码,您可能会得到一些更具体的建议。
通过
您原来问题的部分已接受答案可能仍然适用,例如,截止日期为 24 小时的手动缩放实例。或 VM 实例。当然是有价的。
使用内存缓存可以实现一些加速。
旁注:根据实体的大小,您可能还需要关注实例内存使用情况。
另一种可能性是切换到 faster instance class(内存更大,但也需要额外费用)。
但所有这些改进可能仍然不够。最好的方法仍然是对您的实体数据处理算法进行更深入的思考 - 使其 可扩展.
我很难想象一个计算如此庞大,以至于不能分解成更小的部分,而这些小部分不需要所有一次的数据。我几乎可以肯定,必须有某种方法来使用部分计算,也许可以存储一些部分结果,以便您可以拆分问题并允许它在多个请求中以更小的部分进行处理。
作为一个极端的(学术)例子,想想 CPU 几乎可以做任何 super-complex 计算,基本上只需要对一小组寄存器进行一系列简单、简短的操作 - 这都是关于 如何进行的 编排它们。
Here 是一篇很好的文章,它描述了通过使用一种很好的方法(也很有趣,因为它使用的是 GAE 管道 API).
如果您 post 您的代码,您可能会得到一些更具体的建议。