Получить размер запроса в Firestore - PullRequest
0 голосов
/ 24 января 2019

Как эффективно получить полный размер запроса из коллекции Firestore, содержащей тысячи документов?

В моем случае я запрашиваю документы по нескольким различным правилам:

  • Дата начала
  • Дата окончания
  • Идентификатор места
  • Ключевые слова

Затем я ограничиваю запрос показом только 50 записей, но мне нужно было бы получить размер запроса без этих ограничений, поскольку в этом случае разбиение на страницы будет правильно отображаться во внешнем интерфейсе.

Я мог бы использовать облачную функцию, которая выполняет тот же запрос, что и раньше, но без ограничений, а затем получить его размер, но есть ли более эффективный способ сделать это? Размер запроса может составлять тысячи документов, поэтому есть ли проблемы с производительностью при таком способе? И как биллинг работает в такой ситуации?

Если т.е. Мой запрос 1500 документов, будет ли 1500 операций чтения, чтобы получить размер этого запроса?

Были и другие темы, в которых рекомендуется использовать счетчики для получения размера коллекции, но это не подходит моему подходу, так как размер зависит от параметров поиска пользователя, указанных выше.

Все рекомендации по этой проблеме приветствуются!

1 Ответ

0 голосов
/ 24 января 2019

Если в одной коллекции тысячи документов, может потребоваться очень часто обновлять счетчик. В Cloud Firestore вы можете обновлять только один документ примерно раз в секунду, что может быть слишком мало для некоторых приложений с большим трафиком.

Размер запроса может составлять тысячи документов, поэтому есть ли проблемы с производительностью, если вы выполняете его таким образом?

Нет, не будет. Согласно официальной документации, касающейся Firestore counter , вы можете использовать распределенные счетчики:

Для поддержки более частых обновлений счетчиков создайте распределенный счетчик. Каждый счетчик является документом с вложенной коллекцией «осколков», а значение счетчика является суммой значений осколков.

Эта практика может помочь вам достичь того, что вы хотите.

А как биллинг работает в такой ситуации?

Если вы хотите прочитать всю коллекцию одновременно, вам будет выставлена ​​счет за операцию чтения для каждого прочитанного документа.

Мой запрос 1500 документов, будет ли 1500 операций чтения, чтобы получить размер этого запроса?

Если вы зацикливаете всю коллекцию, чтобы получить количество документов, да.

Подробнее о хранении счетчиков см. В последней части моего ответа из этого сообщения :

В качестве личной подсказки не храните этот тип счетчиков в Cloud Firestore, потому что каждый раз, когда вы увеличиваете или уменьшаете счетчик, вам будет стоить операция read или write. Разместите этот счетчик в Firebase Realtime базе данных бесплатно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...