对象化计算数据存储中的所有实体
objectify count all entities in datastore
我正在使用 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()
这让我出错,说查询有限制,这是否意味着我可以通过计算所有键来计算所有实体的数量?
当然,您可以使用 keys()
... 计算您同类中的所有实体,直到您 运行 遇到同样的问题,即您的查询花费的时间太长。我不知道你能走多远,但我怀疑你会达到数百万。这种方法可能只适用于数千人。
数据存储中没有 SELECT COUNT(*)
的良好等效项。如果您需要最新的答案,您可以在分片计数器中跟踪添加和删除。如果你只需要一个近似值,你可以使用 map/reduce(参见 __scatter__
属性)或者你可以只查看 Google 定期重新计算的统计数据:
我正在使用 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()
这让我出错,说查询有限制,这是否意味着我可以通过计算所有键来计算所有实体的数量?
当然,您可以使用 keys()
... 计算您同类中的所有实体,直到您 运行 遇到同样的问题,即您的查询花费的时间太长。我不知道你能走多远,但我怀疑你会达到数百万。这种方法可能只适用于数千人。
数据存储中没有 SELECT COUNT(*)
的良好等效项。如果您需要最新的答案,您可以在分片计数器中跟踪添加和删除。如果你只需要一个近似值,你可以使用 map/reduce(参见 __scatter__
属性)或者你可以只查看 Google 定期重新计算的统计数据: