다중 사용자를위한 CouchDB 모델링
-
02-07-2019 - |
문제
나는 이미 문서 데이터베이스, 특히 CouchDB의 단순성에 대해 흥분하고 있습니다. 그러나 이러한 데이터베이스가 다중 사용자 시스템에 실용적인 옵션인지 이해하는 데 어려움이 있습니다. 이러한 시스템은 문서 데이터베이스가 제공하지 않는 레코드간에 어떤 종류의 관계가 필요하기 때문입니다.
그러한 경우에 완전히 잘못된 도구입니까? 아니면 일부 태깅과 임시 견해가이를 달성하는 방법입니까? 그렇지 않으면...
업데이트:
지금까지 답을 이해합니다. 그러나 질문을 조금 다시 표현하겠습니다. 일반적으로 CouchDB에 적합한 반 구조화 된 데이터가 많이 있다고 가정 해 봅시다. "type = post"및 "Year = 2008"처럼 태그를 지정할 수 있습니다. 내 질문은이 유형의 태깅으로 얼마나 멀리 갈 수 있습니까? 10.000 이름의 배열 필드를 만들 수 있습니까? 아니면 더 좋은 방법이 있습니까? 이 문서 기반 의미에서 생각하는 방법을 이해하는 문제입니다.
해결책
에 대한 토론이있었습니다 메일 링리스트 이 질문에 상당히 잘 맞는 잠시 후. 경험의 규칙은 데이터를 변경 대 증가 할 가능성이있는 문서에 데이터를 저장하는 것이 었습니다. 데이터가 성장할 가능성이 높으면 별도의 문서를 저장하고 싶을 것입니다.
따라서 다중 사용자 시스템의 경우 ACL 기반 권한을 구현하는 한 가지 방법은 적절한 권한이 표시된 상태에서 user_id를 doc_id에 매핑하는 '권한 문서'를 작성하는 것일 수 있습니다.
{
_id: "permission_doc_1",
type: "acl",
user: "John",
docid: "John's Account Info",
read: true,
write: true
}
그리고 당신의 견해는
function(doc)
{
emit([doc.user, doc.docid], {"read": doc.read, "write": doc.write});
}
문서와 userID가 주어지면 권한을 확인하는 것은 다음과 같습니다.
http://localhost:5984/db/_view/permissions/all?key=["John", "John's Account Info"]
분명히, 이것은 권한이 시행되도록 클라이언트와 소파 사이에 중개자가 있어야합니다.
다른 팁
다중 사용자 시스템은 그렇지 않습니다 필요하다 관계형 데이터베이스이지만 RDBMS는 방대한 수의 (특히 CRUD) 응용 프로그램을위한 데이터 저장/검색을위한 필수 기술입니다.
문서/객체 -지향, 분산 데이터베이스 솔루션을 YORE의 "Lotus Notes/Domino"를 검색하려면 (이 영역에서는 어플리케이션이 문서에서 설계되는지에 대한 배경 지식이 좋은 성숙한 기술/제품입니다. -기반 패러다임. 고전적으로, 그것은 실제로 워크 플로 유형 응용 프로그램에 능숙합니다).
CouchDB에서 구체적으로 다음을 확인하십시오.
http://wiki.apache.org/couchdb/ (이것은 놀랍지 않아야합니다)
http://seanoc.wordpress.com/2007/10/12/more-on-couchdb/ (쉬운 읽기 설명 개요)
http://twit.tv/floss36 (팟 캐스트 인터뷰 CouchDB에 관한 모든 것)
@micahwittman이 말하는 것. 빠른 추가 : Temp보기는 생산 시스템에서 절대 사용해서는 안되며 개발을위한 것입니다. 영구적 인보기는 온도보기가 할 수있는 모든 일을 할 수 있으며 더 빠른 크기입니다.