Структура базы данных Firestore для многоцелевой социальной сети - PullRequest
0 голосов
/ 10 февраля 2019

В настоящее время я работаю над приложением, очень похожим на 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)

Является ли это жизнеспособным решением с точки зрения экономической эффективности и производительности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...