나는 다양한 소스에서 오는 데이터를 저장하기 위해 CouchDB를 사용하고 ad-hoc 쿼리를 허용하기 위해 couchdb-lucene을 사용하고 있습니다. 데이터를 피드에 표시하고이 피드를 필터링 할 수 있기 때문에 중요합니다. CL은 완벽하게 보입니다.CouchDB-lucene 및 인증 된 사용자를위한 ad-hoc 쿼리
그러나 피드 앱에 권한을 추가하려고합니다. 사용자는 볼 수있는 권한이있는 경우에만 피드 항목을 볼 수 있어야합니다.
지금 은 임시 쿼리를 실행하고 현재 인증 된 사용자가을 읽을 수있는 피드 항목 만 반환 할 수 있기를 바랍니다.
내가 알아낼 수있는 유일한 해결책은 다른 사용자에 대한 모든 권한을 저장하는 각 피드 항목에 '사용 권한'필드를 추가하는 것이 었습니다 (분명히이 항목에 대한 사용 권한이없는 사용자는 건너 뜁니다 전혀)
permissions: [{user_id: '123', read: true, write: true}, ...]
이 배열을 CL로 색인화합니다.
이 작업이 효과적 일지 모르지만 피드 항목에 사용 권한 메타 데이터를 중첩시켜야하는 불편 함을 느낍니다. 개별 항목을 유지하는 것보다 더 나은 해결책이 될 수도 있지만, 여기에 선택의 여지가없는 것 같습니다.
다른 솔루션 (물론 CouchDB를 덤프하는 것만 제외하고)은 사용 권한을 염려하지 않고 특별 쿼리를 실행 한 다음 모든 "내 항목"을 선택하는 서버에서 두 번째 쿼리를 실행하고 교차로를 설정하십시오. 하지만 그 세트는 거대 할 수 있습니다 (그리고 만약 내가 그것을 청크, 그것은 아마도 많은 DB를 요청할 필요합니다 => 천천히).
내 해결책은 괜찮습니까? 아니면 더 좋은 점이 있습니까? 아니면 CouchDB가 그러한 쿼리에 적합하지 않습니까?
건배!