GAE:跟踪NDB类实体数量的最佳方法?

时间:2014-11-04 02:24:02

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我试图找出最佳方法来跟踪我在云数据存储区中的某种NDB类型的实体数量。

一种方法就是,当我想知道我有多少时,得到我知道将返回所有这些查询的.count(),但这需要花费大量的数据存储小操作(看起来像& #39; s与我所拥有的实体数量成正比)。这样做并不理想。

另一个选择是在数据存储区中有一个计数器,每次创建或删除实体时都会更新,但这也不理想,因为它会为我创建的每个实体添加额外的读写操作或破坏。

截至目前,看起来第二种选择是我最好的选择,所以我的问题是 - 你同意吗?还有其他更具成本效益的选择吗?

非常感谢。

PS:如果有所作为,请使用Python。

2 个答案:

答案 0 :(得分:1)

第二种选择是要走的路。

其他考虑因素:

  • 如果您每秒有多次写入,可以考虑使用shared counter
  • 要减少数据存储区写入,您可以使用cron作业以定时间隔更新数据存储区(即计算自上次运行以来已创建的实体数)。
  • 还考虑将memcache.incr()与cron作业结合使用以保留数据。这个问题的缺点是你的memcache密钥可能会下降,所以只有在计数不准确的情况下才能真正选择。

答案 1 :(得分:0)

实际上有更好/更便宜/更快的方式来查看您正在寻找的信息,但如果您需要在任何给定时刻知道确切数量的字段,那么它可能无效,因为它只更新了几次a一天(即你可以随时访问它,但可能会过时几个小时)。

"数据存储统计" GAE仪表板中的页面显示有关种类/实体的一些详细数据,包括" count"数字以及以编程方式访问它的方法。在此处查看更多信息:https://cloud.google.com/appengine/docs/python/datastore/stats