저는 현재 프로젝트에서 사용할 couchbase 용 .NET 역할 공급자를 함께 사용하려고합니다. 나는 이것을 2 가지 문서 유형으로 모델링하려고한다.couchbase를 사용하는 솔루션의 .NET 사용자 지정 역할 공급자에 대한 합리적인 접근 방법입니까?
첫 번째 문서 유형은 응용 프로그램에서 사용할 수있는 모든 역할의 간단한 목록입니다. 이렇게하면 Add, Delete, GetAllRoles 등을 쉽게 지원할 수 있습니다.이 문서는 응용 프로그램마다 고정 키가 있으므로 "applicationname_roles"이므로 코드 관점에서 잘 알려져 있으며 신속하게 검색 할 수 있습니다. "roleprovider.user-역할" "사용자": "USER1" "역할"
번째 문서 그래서 예
{ "타입"사용자를 역할에 매핑 "role1", "응용 프로그램": "APP1" }
이 문서 유형의 핵심은, 형식 "applicationname_roles_username_rolename"이 될 사용자가 특정에있는 경우 테스트의 가장 일반적인 작업을 만드는 것 역할은 사소하고 신속합니다.
.NET 역할 공급자의 GetRolesForUser 또는 GetUsersInRole 메서드를 지원하려면 양식보기를 사용하고 있습니다.
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 공급자는 단순히 쿼리를 사용하는 GetRolesForUser 또는 GetUsersInRole을 기반으로 필요한 "user :"또는 "role :"접두어를 붙이면됩니다.
이제 질문에이 모든 것이 합리적이고 사소하고 논리적 인 것처럼 보입니다. 그러나 처음으로 나는 Couchbase와 협력하여이 문제가있는 트랩에 빠졌는지 궁금한가요? 명백한 대안 접근법은 2 개의 뷰를 사용하는 것이지만, 필자는 독서에서 디자인 문서의 수를 줄이거 나 그 안의 뷰의 수를 유지하는 것이 최선이라고 언급 한 것을 보았습니다. 페리 크루그의 대답은 couchbase views per bucket discussion, 여기에서 그는 '하나의 색인에서 여러 개의 서로 다른 검색어를 생성'하려고 애쓴다. 그래서 기본적으로 저는 위에서 설명한 접근 방식이 페리의 말에 대해 처방하는지, 아니면 제가 속임수를 쓰고 자신을 고통스럽게 만들 것인지 궁금합니다.
모든 포인터 주셔서 감사합니다.