对象化计数数据存储中的所有实体

时间:2018-07-03 13:53:12

标签: google-cloud-platform google-cloud-datastore objectify

我正在使用objectify v6。我想对我的数据存储区中的所有实体进行计数。数据存储区https://cloud.google.com/datastore/docs/concepts/limits中的查找操作似乎受到限制。

在我的数据存储区中,当我这样做时,我有2000个实体

ObjectifyService.ofy().load().type(MyEntity.class).keys(); 

这有效,没有错误,但是当我这样做

ObjectifyService.ofy().load().type(MyEntity.class).list() 

这给我一个错误,就是说查询有限制,这是否意味着我可以通过对所有键进行计数来对所有实体进行计数?

1 个答案:

答案 0 :(得分:1)

当然,您可以使用keys() ...来计数同类中的所有实体,直到遇到相同的问题为止,即查询花费的时间太长。我不知道你能走多远,但我怀疑你会达到数百万。这种方法可能只能执行数千次。

数据存储区中没有一个很好的SELECT COUNT(*)等效项。如果需要最新答案,则可以在分片计数器中跟踪添加和删除。如果您只需要一个近似值,则可以使用map / reduce(请参见__scatter__属性),也可以只查看Google定期重新计算的统计信息:

https://cloud.google.com/datastore/docs/concepts/stats