В настоящее время я рассматриваю создание поставщика роли .NET для couchbase для использования в проекте. Я хотел бы моделировать это в двух типах документов.Является ли это разумным подходом к поставщику роли пользовательской роли .NET для решения, использующего couchbase?
Первый тип документа представляет собой простой список всех ролей, доступных в приложении. Это упрощает поддержку Add, Delete, GetAllRoles и т. Д. Этот документ будет иметь фиксированный ключ для каждого приложения, поэтому «applicationname_roles» так хорошо известен с точки зрения кодов и быстро извлекается.
Второй документ отображает пользователю роли, так, например
{ "типа": "roleprovider.user-роль", "пользователь": "user1", "роль" : «role1», «приложение»: «app1» }
ключ для данного типа документа будет иметь формат «applicationname_roles_username_rolename», что делает наиболее распространенную операцию тестирования, если пользователь находится в конкретной Роль тривиальная и быстрая.
Для поддержки методов GetRolesForUser или GetUsersInRole поставщика роли .NET. Я рассматриваю использование вида формы.
function (doc, meta) {
if(meta.type != 'json')
{
return;
}
if (doc.type == "roleprovider.user-role")
{
if(doc.application && doc.user && doc.role)
{
emit([doc.application, "user:" + doc.user, doc.role]);
emit([doc.application, "role:" + doc.role, doc.user]);
}
}}
Таким образом, для каждого пользователя для сопоставления ролей мы получаем 2 строки, выпущенные в виде. Первый позволяет нам запрашивать представление о том, для каких ролей принадлежит пользователь. Второй, для которого пользователи играют роль. Поставщику .NET просто нужно префикс либо «user:», либо «role:» на основании того, что он не запрашивает GetRolesForUser или GetUsersInRole, чтобы отфильтровывать то, что ему нужно.
Итак, теперь на вопрос, все это кажется достаточно тривиальным и логичным, однако в первый раз я работал с Couchbase и задавался вопросом, попадал ли я в какие-либо ловушки с этим? Очевидным альтернативным подходом было бы использовать 2 взгляда, но в своем чтении я видел, что он упомянул, что лучше всего уменьшить количество проектных документов и количество просмотров внутри них, см. Ответ Перри Круг в couchbase views per bucket discussion, в этом он упоминает, пытаясь «сгенерировать несколько разных запросов от одного индекса». Поэтому в основном мне интересно, относится ли описанный выше подход к тому, что говорит Перри, или если я просто обманываю себя и собираюсь причинить себе боль вниз.
Спасибо за любые указатели.