В настоящее время я работаю над приложением, очень похожим на Instagram.
Отношения:
- Пользователи подписаны на других пользователей
- Пользователи подписаны на хэштеги
Затем они должны получить персонализированный канал с сообщениями в соответствии с их подписками.
Мне потребовалось много времени, чтобы придумать подходящую структуру базы данных, и я до сих пор не уверен, что это так.это лучший подход.Пожалуйста, взгляните и дайте мне знать, что вы думаете.
users (col)
- user_id (doc)
- posts (col)
- post_id (doc)
-> contains only post id
- followed_users (doc)
- user_id (doc)
-> contains only user id
- feed (col)
- post_id (doc)
-> contains only post id
hashtags (col)
- hashtag_id (doc)
- posts (col)
- post_id (doc)
-> contains only post id
posts (col)
- post_id (doc)
-> contains full post
Затем я написал бы облачную функцию для заполнения коллекции каналов каждого пользователя, которая будет запускаться при каждом добавлении нового сообщения.
ВВо время загрузки канала будет несколько вызовов в БД: один вызов для получения идентификаторов сообщений (пользователи / канал) и другой вызов содержимого каждого сообщения (posts / id), как в этом коде макета:
posts = getData($userid/feed).limit(10)
posts.each:
getData(posts/$post.id)
Является ли это жизнеспособным решением с точки зрения экономической эффективности и производительности?