首页 > 解决方案 > Google DataStore:如何实现条目数限制?

问题描述

想象一个包含多个用户数据的表。如何实现每个用户的最大条目数?问题是 count() 请求代价高昂,如果有大量条目,它们可能会超时。此用例是否有最佳实践?

标签: google-cloud-datastore

解决方案


我遇到了类似的问题。我所做的是在用户类型(表)上有一个属性,每次用户发表帖子(条目)时我都会增加该属性。

然后,您可以检查这个数字与计算他们的所有条目。

请务必使用 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 ):

“无限制。包括分配 Cloud Datastore ID 的调用、仅键查询和不使用 distinct on 子句的投影查询。仅键查询或不使用 distinct on 子句的投影查询计为单个为查询本身读取的实体。单个结果被计为小操作。”

因此,您可以使用仅键查询来获取计数,它只会计为单个实体读取。如果您使用命名空间(https://cloud.google.com/datastore/docs/concepts/multitenancy)而不是祖先,这非常有效。


推荐阅读