Разработка масштабируемой модели каналов на основе Firebase
Вопрос:
Как спроектировать социальную сеть с поддержкой Firebase в качестве бэкенда, который масштабируется?
Возможные ответы :
Решение «MVP» заключается в разработкеfeeds
корневой дочерний элемент, по одному для каждого пользователя, и добавляйте новые сообщения от следующего пользователя в лентах каждого подписчика.
users
user1
name: bob
user2
name: alice
follows:
user1: true
posts
post1
author: user1
text: 'Hi there'
feeds
user2
post1: true
Это работает хорошо, и демонстрируется вFirefeed
проект. Но это плохо масштабируется: если Кэти Перри захочет что-то опубликовать, ее мобильный телефон должен будет писать в миллионы каналов.
Следовательно, решение сообщается вэтот ТАК вопрос делегировать эту операцию на серверный процесс.
Моя проблема в том, что Firebase - это решение «без бэкенда», и это главная причина, по которой я его использую, поэтому я хотел бы убедиться, что нет абсолютно никакой возможности реализовать эту функцию без сервера.
Что делать, еслиfeeds
ребенок удален в приведенной схеме?
Затем сделайте это:
baseRef.child('posts')
.orderBy('author')
.whereIn(baseRef.child('users/user2/follows').keys())
К несчастью,whereIn
не существует ни в Firebase API, ни в подзапросах :(
Любая другая структура модели возможна без необходимости сервера?
Спасибо