Replicação seletiva com o CouchDB

Atualmente estou avaliando possíveis soluções para o seguinte problema:

Um conjunto de entradas de dados deve ser sincronizado entre vários clientes, onde cada cliente só pode visualizar (ou até mesmo saber sobre a existência de) um subconjunto dos dados. Cada cliente "possui" alguns dos elementos, e a decisão de quem mais pode ler ou modificar esses elementos só pode ser feita pelo proprietário. Para complicar ainda mais essa situação, cada elemento (e cada revisão de elemento) deve ter um identificador exclusivo que seja igual para todos os clientes.

Embora o último pareça uma tarefa perfeita para o CouchDB (e um modelo de dados baseado em documento atenderia perfeitamente às minhas necessidades), não tenho certeza se o subsistema de autenticação / autorização do CouchDB pode atender a esses requisitos: Embora seja possível restringir gravação acesso usando funções de validação, não parece haver uma maneira de autorizar o acesso de leitura. Todas as soluções que encontrei para esse problema propõem rotear todas as solicitações do CouchDB por meio de um proxy (ou uma camada de aplicativo) que manipule a autorização.

Portanto, a pergunta é: É possível implementar uma camada de autorização que filtre as solicitações para o banco de dados, de modo que o acesso seja concedido apenas aos documentos para os quais o cliente solicitante tenha acesso de leitura e ainda use o mecanismo de replicação do CouchDB? Simplificado, isso seria algum tipo de "replicação seletiva", em que apenas alguns dos documentos, e não o banco de dados inteiro, são replicados.

Eu também ficaria grato por instruções para algumas informações detalhadas sobre como funciona a replicação. O wiki do CouchDB e até mesmo o livro "Definite Guide" não são muito específicos sobre isso.

questionAnswers(4)

yourAnswerToTheQuestion