objectify подсчитать все объекты в хранилище данных - PullRequest
0 голосов
/ 03 июля 2018

Я использую 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 голосов
/ 06 июля 2018

Конечно, вы можете сосчитать все сущности в вашем роде, используя keys() ... вплоть до тех пор, пока не столкнетесь с той же проблемой, которая заключается в том, что ваш запрос занимает слишком много времени. Я не знаю, как далеко вы можете пройти, но я сомневаюсь, что вы достигнете миллионов. Этот подход, вероятно, будет работать только для тысяч.

В хранилище данных нет хорошего эквивалента SELECT COUNT(*). Вы можете отслеживать добавления и удаления в счетчике, если вам нужен актуальный ответ. Если вам нужно только приблизительное значение, вы можете использовать карту / уменьшить (см. Свойство __scatter__) или просто посмотреть статистику, которую Google периодически пересчитывает:

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

...