python - 谷歌应用引擎计数

标签 python google-app-engine

在应用引擎(ndb 或 db)中处理计数的合适方法是什么?

我有两个项目,一个是 django-nonrel,另一个是纯 django 项目,但两者都需要能够进行查询并返回计数。结果可能大于 1,000。

我看到一些帖子说我可以使用 Sharded Counters但他们计算的是所有实体。我需要能够知道有多少实体具有以下属性 x=1,y=True,z=3

#Is this the appropriate way?
count = some_entity.gql(query_string).count(SOME_LARGE_NUMBER)

最佳答案

数据存储不擅长这种查询,因为要权衡使其分布式。其中包括相当慢的读取和非常有限的索引。

如果您需要一组有限的统计数据(用户数量、文章数量等),那么您可以在单独的实体中保持运行总计。这意味着您需要在发生变化时进行两次写入(放置):一次用于发生变化的实体,另一次用于更新统计实体。但是您只需要一次读取(获取)即可获得您的统计数据,而不是从许多实体中提炼出来。

您可能对此感到不舒服,因为它违背了我们所了解的规范化知识,但它的效率要高得多,并且在许多情况下都可以正常工作。如果这很关键,您始终可以让 cron 作业定期执行查询以检查统计信息是否准确。

关于python - 谷歌应用引擎计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217185/

相关文章:

python - 什么是 SOAP 服务的好框架?

python - 字典的更新方法-Python

java - 是否有适用于Google App引擎的开源Java SIP服务器?

java - GAE DataStore 复合索引无法工作/无法识别

python - 用空格数替换整数

python - 保存许多图后 Matplotlib 崩溃

python - 基于多列过滤文本文件

google-app-engine - 如何根据 App Engine 中的电子邮件地址确定 user_id?

java - 计算数据存储区 AppEngine java 中的对象数量

google-app-engine - App 引擎应用程序和 Datastore 的权限问题