我要寻找的本质上是将此 SQL 翻译成 Google AppEngine(适用于 Java)术语:
select count(*) from Customers
看起来很简单,但从阅读文档来看,我似乎必须运行一个匹配所有客户的查询,遍历它并计算结果,同时考虑分页。我不想检索每个元素,我只想计算它们。
或者另一种方式,有一个 API 可以遍历给定类型的所有条目(目前找不到确切的 API)。这似乎效率很低,更不用说数据存储区调用也有配额限制。
如有任何提示,我们将不胜感激。
谢谢,马克
最佳答案
正如 wooble 所说,bigtable 不支持将行数作为一个基本概念——您可以编写一个包装函数,正如 mcotton 所说,但是,正如他从文档中引用的那样,它仍然最多限制为 1000。
要克服这些限制,您需要为要计算的每种实体保留一个计数器,每次放置此类新实体时计数器都会递增,删除此类实体时计数器会递减。
为了让您的应用程序具有高度可扩展性,您可能希望对此类计数器进行分片,请参阅 http://code.google.com/appengine/articles/sharding_counters.html (不幸的是,我不知道该食谱已翻译成 Java,但概念应该是相同的)。
关于google-app-engine - 如何计算存储在 Google Appengine 数据存储区中的给定类型的所有条目数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/894376/