Мое приложение позволяет пользователям продавать и покупать товары, опубликованные другими пользователями.
У меня есть общий фрагмент недавней записи, где я показываю самую последнюю запись всех пользователей, независимо от того, следите вы за ними или нет. Так что с этим подходом (таблица ниже) получение последних 30 сообщений, упорядоченных по метке времени, очень быстро из-за индексации в firestore.
users(collection){
user1(document){
username: rocky
following:[user2,user3....] // or subcollection with users as documents
}
user2(document){
username: paul
following:[user2,user5....] // or subcollection with users as documents
}
}
posts(collection){
post1(document){
author:user1
timestamp:...
imageurl:...
...
}
post2(document){
author: user55
timestamp:...
imageurl:...
...
}
}
Но у меня также есть фрагмент фида, который работает точно так же, как фид instagram, это показывает пост людей, за которыми я следую, упорядоченных по дате.
Я думал, что могу сохранить пользователей, за которыми пользователь следует, в списке или создать вложенную коллекцию для каждого пользователя, а затем при загрузке приложения получить этот список Идентификаторы пользователей, и вот где я не знаю, как обрабатывать.
Итак, допустим, я получаю список идентификаторов 5k, теперь я должен искать все сообщения, которые содержат каждый идентификатор, получить сообщения и заказать их по дате.
Мне нужно было бы прочитать 5k и еще немного, чтобы прочитать сообщения. Есть ли эффективный способ сделать это?
Я немного перезапустил и обнаружил, что хорошим способом является денормализация данных и добавление новой коллекции, например:
feed(collection):{
user1(document){
posts(collection){
post1(document){
//post info
}
post2(document)
//post info
}
}
}
Но, как в Инстаграм основной целью приложения является создание поста и чтобы люди видели его. Таким образом, большинство пользователей будут создавать много постов в день.
Так что, если у меня 100 пользователей с 10 тыс. Подписчиков, и эти 100 пользователей создают 3 поста в день, я бы хотел 3 миллионных записи только для этих 100 пользователей плюс еще немного, если они отредактируют этот пост в будущем, и это звучит страшно !!
Есть ли лучший способ сделать это?
Возможно, я думаю, что это неправильно, если у меня 100 пользователей с 10k подписчиками, это означает, что мое приложение очень активно, поэтому я должен иметь возможность получать доход для покрытия этой стоимости.
Извините, фот длинный пост. Любая помощь приветствуется.