Firestore - эффективно разбивает большое количество данных на страницы - PullRequest
0 голосов
/ 03 марта 2020

У меня есть коллекция из 500.000 документов в Firestore. Они разбиты на дни, около 500 документов в день.

Я пишу веб-приложение React для просмотра этих документов. Пользователь будет просматривать данные в больших количествах, и не обязательно это будет последовательный доступ.

Я ищу для оптимизации процесса просмотра, который в основном сводится к минимизации количества чтений.

Предположим, что пользователь просматривает первые 5 тыс. Записей, затем пару тысяч в середине и пару тысяч в конце.

Самый тупой подход - открыть snapshotListener за каждый полученный документ. Таким образом, документы остаются в кэше (насколько мне известно, документы остаются локально кэшированными до тех пор, пока у них есть активный слушатель снимка), поэтому мы не будем выполнять дополнительные операции чтения, когда пользователь посещает ранее загруженную страницу. Кроме того, всякий раз, когда изменяется содержимое документа, мы также обновляем его. Проблема с этим подходом, очевидно, может заключаться в том, что мы слушаем тысячи документов одновременно. Насколько это плохо с точки зрения производительности?

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

И еще один, я мог бы получить один раз, и вы sh результаты в редуксе. Это немного проблематично c, поскольку мне придется вручную повторно выбирать отдельные документы, когда пользователь их редактирует, но я могу с этим справиться.

Существует ли установленный шаблон для такого варианта использования?

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