Replicación selectiva con CouchDB.

Actualmente estoy evaluando posibles soluciones al siguiente problema:

Un conjunto de entradas de datos se debe sincronizar entre varios clientes, donde cada cliente solo puede ver (o incluso conocer la existencia de) un subconjunto de los datos. Cada cliente "posee" algunos de los elementos, y la decisión de quién más puede leer o modificar esos elementos solo puede ser tomada por el propietario. Para complicar aún más esta situación, cada elemento (y cada revisión de elemento) debe tener un identificador único que sea igual para todos los clientes.

Si bien este último parece una tarea perfecta para CouchDB (y un modelo de datos basado en documentos se ajustaría perfectamente a mis necesidades), no estoy seguro de si el subsistema de autenticación / autorización de CouchDB puede manejar estos requisitos: Aunque debería ser posible restringir la escritura acceso mediante las funciones de validación, no parece haber una forma de autorizar el acceso de lectura. Todas las soluciones que he encontrado para este problema proponen enrutar todas las solicitudes de CouchDB a través de un proxy (o una capa de aplicación) que maneja la autorización.

Entonces, la pregunta es: ¿es posible implementar una capa de autorización que filtre las solicitudes a la base de datos para que el acceso se otorgue solo a los documentos a los que el cliente solicitante tenga acceso de lectura y aún use el mecanismo de replicación de CouchDB? Simplificado, esto sería una especie de "replicación selectiva" donde solo algunos de los documentos, y no toda la base de datos, se replican.

También agradecería las instrucciones para obtener información detallada sobre cómo funciona la replicación. El wiki de CouchDB e incluso el libro "Guía Definitiva" no son demasiado específicos al respecto.

Respuestas a la pregunta(4)

Su respuesta a la pregunta