Как мне структурировать документы Firestore с большим количеством документов, которые нужно читать каждый раз - PullRequest
0 голосов
/ 28 октября 2019

У меня есть список услуг, каждое из которых имеет несколько полей, которые структурированы следующим образом:

Сервис1 *

     ServiceID*
     NetID*
     Country*
     price*
     xxx*
     xxx*
     10 fields in total*

Сервис2 *

     ServiceID*
     NetID*
     Country*
     price*
     xxx*
     xxx*
     10 fields in total*

В настоящее время я договорился, что каждая служба представляет собой собственный документ на общую сумму 1180. Однако, когда пользователь заходит на мой сайт и хочет выбрать сервис, сервер получает все 1180. Всего лишь 100 пользователей Firebase будет читать 100 тыс. Документов. Я думал о том, чтобы сохранить копию всех сервисов в виде csv и загружать ее оттуда каждый раз, когда пользователь хочет найти сервис.

Есть ли какой-нибудь способ лучше структурировать данные или использовать другой метод для уменьшения моегочитать количество Firestore.

1 Ответ

2 голосов
/ 28 октября 2019

Есть ли лучший способ структурирования данных

Нет другого лучшего способа сделать это.

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

Это неправильный способ взаимодействия с Cloud Firestore. Вы загружаете огромное количество данных с высокой стоимостью. Кроме того, пользователю никогда не понадобится весь этот объем данных одновременно. Решением для этого будет загрузка данных небольшими порциями. Для Android я рекомендую посмотреть мой ответ из следующего поста:

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

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

Для Интернета автономное сохранение по умолчанию отключено. Чтобы включить постоянство, вызовите метод enablePersistence. Кэш Cloud Firestore не очищается автоматически между сессиями. Следовательно, если ваше веб-приложение обрабатывает конфиденциальную информацию, не забудьте спросить пользователя, находится ли он на доверенном устройстве, прежде чем включать постоянство.

...