Основной вопрос Firestore: как избежать N + 1 запросов на присоединение - PullRequest
0 голосов
/ 01 марта 2019

Я хотел бы знать, как я мог бы структурировать свою базу данных, чтобы избежать выполнения N запросов для всех объединений, которые я хочу сделать.Firebase становится довольно дорогим, когда вы делаете много запросов.

Допустим, у меня есть приложение todo, 400 задач, которые нужно отобразить для всей моей компании.

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

У меня есть две коллекции:

- Todos
--> id
--> ...
--> user_id

- Users
--> id

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

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

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

1 Ответ

0 голосов
/ 01 марта 2019

Логический оператор IN / OR находится на радаре команды Firestore , но я не думаю, что это возможно сегодня.

Я думаю, что комментарий Дуга правильный, и его можно перефразировать следующим образом: вам, вероятно, придется выбирать между быстрым чтением (и сохранением пользовательской информации в каждом объекте Todo, что замедлит запись) или быстрой записью(и увеличивать количество запросов, замедляя чтение).

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

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

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