google-cloud-datastore - Google DataStore:如何实现条目数限制?
问题描述
想象一个包含多个用户数据的表。如何实现每个用户的最大条目数?问题是 count() 请求代价高昂,如果有大量条目,它们可能会超时。此用例是否有最佳实践?
解决方案
我遇到了类似的问题。我所做的是在用户类型(表)上有一个属性,每次用户发表帖子(条目)时我都会增加该属性。
然后,您可以检查这个数字与计算他们的所有条目。
请务必使用 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)而不是祖先,这非常有效。
推荐阅读
- c# - 使用 C# 读取 excel CSV 文件中的特定列
- sql-server - SQL Server 将小数 (18,2) 保存为 0,00 而不是 0.00
- java - 如何一次性保存父母和孩子(JPA & Hibernate)
- sql - Bigquery:使用 Group By 条件选择前 3 个
- javascript - 无法接收目标文件 Typeahead.js 中的值
- fortran - 英特尔 Fortran 编译器找不到模块“mpi”
- cron - 如何获取 cronjob 创建的作业日志?
- javascript - React Native 提取缓存不起作用(无法启用缓存)
- jenkins - Jenkins Junit Reporter 无法找到 xml 文件?
- ionic3 - 如何在 ionic 3 中实现 pushwoosh