App Engine的实际NDB count()限制是多少?

时间:2013-01-08 15:00:16

标签: google-app-engine app-engine-ndb

我们正在尝试使用NDB查询App Engine数据存储区以获取一些常规统计信息。他们不需要100%准确(即,我不关心最终的一致性);他们只需要反映实体的数量。

使用NDB,我们发布的内容就像:

query = MyModel.query(MyModel.source==source, MyModel.created<=some_time).order(-MyModel.created)
count = query.count(keys_only=True)

这是在60年代后超时。我们定期使用实体组和交易,但我希望这些不会影响这些计数查询。我们目前有大约4.2M的MyModel实体,但source过滤器会将此限制为210,000。

是否有另一种方法来计算这个数量的数字,而没有一堆自定义memcache-y逻辑?请记住,这些数字不需要精确,只需&#34;通常是正确的#34;。

1 个答案:

答案 0 :(得分:4)

我相信现在已经删除了之前为1000的限制。因此,实际限制是在超时之前可以计算多少。

已经提出了一些类似的问题,此时通常会Sharded Counters提出。

<德尔> 但我认为你可能会更好地运行你的计数器作为一项任务(超时到10分钟)或在后端(根本没有超时)。

正如Guido在评论中指出的那样查询的时间不能超过60秒。

编辑:前一段时间删除了1000限制,1.3.6: Release Notes:

  

数据存储区不再对计数和偏移强制执行1000实体限制。使用这些查询现在可以安全地执行,直到它们返回或您的应用程序达到请求超时限制。