Использует ли запрос Select весь размер документа в Firestore? - PullRequest
0 голосов
/ 24 июня 2019

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

Извлечение всех документов потребовало бы большой полосы пропускания, а компьютерам с медленным интернет-соединением потребовалось бы10-30 секунд, чтобы загрузить.Мне нужно, чтобы это было сделано быстрее, поэтому я подумал об использовании запроса SELECT, чтобы получить только атрибут местоположения, но мой вопрос: все ли данные документа все еще загружаются во внешний интерфейс и затем удаляются ненужные атрибуты,или я получаю только из бэкэнда только местоположение.

Если последним был случай, то время, необходимое для получения всех документов, было бы меньше, так как каждый размер документа был бы намного меньше (как толькоместоположение получено).Может ли кто-нибудь подтвердить, как это работает?

Если у кого-то есть другие идеи, как к этому подойти, было бы здорово.

Спасибо,

Карлино

1 Ответ

1 голос
/ 24 июня 2019

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

Да, он загружает весь документ, но никак не нарезается. Слушатели Cloud Firestore запускают на уровне документа. Невозможно вызвать только отдельные поля документа или разделить документ, чтобы получить только одно свойство. Это весь документ или ничего. Таким образом, клиентские SDK Firestore всегда возвращают полные документы. К сожалению, нет способа запросить только часть документа с помощью клиентского SDK, хотя этот параметр существует в методе select () серверного SDK на стороне сервера.

Если последним был случай, тогда время, необходимое для получения всех документов, было бы меньше, так как каждый размер документа был бы намного меньше (поскольку извлекается только местоположение). Кто-нибудь может подтвердить, как это работает?

Это не так, поскольку вы не можете получить только одно свойство документа.

Если у кого-то есть какие-либо идеи о том, как к этому подойти, было бы замечательно.

Общий подход в этом случае заключается в денормализации данных . Это означает, что вы должны создать новую коллекцию, в которой вы должны хранить те же документы, но эти документы будут содержать только одно свойство. В этом случае размер документа будет очень маленьким.

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