«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как Firestore может оптимизировать системы подачи и подписки для масштабируемости в социальных сетях?

Как Firestore может оптимизировать системы подачи и подписки для масштабируемости в социальных сетях?

Опубликовано 23 ноября 2024 г.
Просматривать:640

How can Firestore optimize feed and follow systems for scalability in social networks?

Оптимизация систем подачи и отслеживания в Firestore

Проблемы масштабируемости с базой данных реального времени

В вашем В предыдущем приложении социальной сети, использующем базу данных Firebase Realtime, вы столкнулись с проблемами масштабируемости из-за следующее:

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

Оптимизированная структура Firestore

Чтобы решить эти проблемы в Firestore, рассмотрите следующую базу данных структура:

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

Улучшенная масштабируемость

Эта структура позволяет эффективно обрабатывать подписчиков и публикации:

  • Сохранение подписчиков в подписке -collections устраняет необходимость копирования данных.
  • Разделение публикаций на подколлекции гарантирует получение последних публикаций подписок пользователи остаются эффективными даже при большом количестве подписчиков.

Запрос публикаций пользователей, на которые вы подписаны

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

Query query = rootRef.collection("posts/"   uid   "/userPosts")
    .orderBy("date", Query.Direction.DESCENDING).limit(3);

Этот запрос извлекает последние три сообщения для указанного пользователя (uid) и может использоваться с разбиением на страницы для непрерывной загрузки. .

Оптимизация для большого объема сообщений

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3