NoSQL: модель ролевых отношений - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы знать, что может быть лучшим подходом для моделирования ролевых отношений между пользователями и другими объектами.Давайте возьмем страницу Facebook, например: у пользователя могут быть разные роли на странице.Он может быть администратором, модератором и т. Д.

Как должны быть разработаны Коллекции для такого случая?Должно быть легко запрашивать все страницы, для которых данный пользователь выполняет одну конкретную роль.Также должно быть легко проверить разрешения на уровне базы данных.

Я думал о разных подходах:

A: Хранить страницы / роли в коллекции User

  1. Легко запрашивать все страницы для данного пользователя
  2. Возможно раздутая модель User

B: Хранить пользователей с их ролями в коллекции Pages

  1. Легко запрашивать все пользователей / ролей для данной страницы
  2. Возможно раздутая Pages модель

C: Использовать коллекцию отношений PageRoles

  1. Выигралне раздувать доменные модели
  2. Требуется дополнительный запрос для проверки ролей

Если мы говорим об A или B, у нас снова два возможных подхода:

A: Использование плоских массивов

Пример:

{
  name: 'A Page',
  admins: [],
  moderators: [],
}

B: Использование объектов

Пример:

{
  name: 'A Page',
  roles: {
    // maps userId to the users role
    1: 'admin', 
    5: 'admin',
    6: 'moderator'
  }
}

Какие могут быть плюсы и минусыиз этих разных подходов?

Спасибо за любой вклад.

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