Я работаю над доказательством концептуального приложения для социальной сети в стиле Twitter, где около 500 тыс. пользователей. Я не уверен, как лучше всего разработать "схему"
Должен ли я встраивать пользовательские подписки или иметь отдельную коллекцию подписок и использовать ссылки db? Если я внедряю, мне все равно придется выполнить запрос, чтобы получить всех пользователей-последователей. например.
С учетом следующего пользователя:
{
"username" : "alan",
"photo": "123.jpg",
"subscriptions" : [
{"username" : "john", "status" : "accepted"},
{"username" : "paul", "status" : "pending"}
]
}
чтобы найти всех подписчиков alan, мне нужно было бы запустить что-то вроде этого:
db.users.find({'subscriptions.username' : 'alan'});
с точки зрения производительности, заключается в том, что любой хуже или лучше, чем отдельный сбор подписей?
также при отображении списка подписчиков/подписчиков у меня в настоящее время возникают проблемы с n + 1, потому что документ подписки указывает мне имя пользователя целевого пользователя, но не другие атрибуты, которые могут мне понадобиться, такие как фотография профиля. Есть ли рекомендуемая практика для таких ситуаций?
спасибо Алан