想象一个包含多个用户数据的表。如何实现每个用户的最大条目数? 问题在于count()请求的成本很高,并且如果有大量条目,它们可能会超时。 此用例有最佳实践吗?
答案 0 :(得分:0)
我遇到了类似的问题。我要做的是在用户种类(表)上拥有一个属性,该属性在用户每次发表帖子(输入)时都会增加。
然后您可以对照此数字进行检查,而不是计算其所有条目。
请确保使用memcache:https://cloud.google.com/appengine/articles/best-practices-for-app-engine-memcache来保存数据库读/写。
**更新**
另一种选择是,如果数据属于其自身种类(意味着您无需指定查询参数),则可以仅对键查询(https://cloud.google.com/datastore/docs/concepts/queries#projection_queries)进行计数。
从其定价页面(https://cloud.google.com/appengine/pricing)引用:
“无限制。包括调用以分配不使用distinct子句的Cloud Datastore ID,仅键查询和投影查询。仅计算键的查询或不使用distinct子句的投影查询作为查询本身的单个实体读取。单个结果被视为小操作。”
因此,您可以使用仅键查询来获取计数,并且该计数将仅作为单个实体读取进行计数。如果您在祖先上使用命名空间(https://cloud.google.com/datastore/docs/concepts/multitenancy),则效果很好。