2012-01-23 15 views
5

¿Se puede configurar la replicación filtrada de Can CouchDB para que replique no solo la versión más reciente de cada documento, sino también las últimas 100 revisiones de cada documento?¿La replicación filtrada de Can CouchDB replica las últimas 100 revisiones de un documento?

Quiero esta característica, porque tengo la intención de permitir que cada instancia de aplicación elija qué revisión reciente (las revisiones provendrán de múltiples fuentes, cada una con un nivel diferente de precisión/confiabilidad) es la más precisa, entonces necesito más de una revisión disponible en cada instancia de base de datos.

El uso-caso específico es el siguiente:

CouchApp 1 contiene una base de datos de los datos en todas las congregaciones de una denominación reformada.

CouchApp 2 contiene una base de datos de datos de todas las congregaciones en todas las denominaciones reformadas en todo el mundo.

CouchApps 1 & 2 están configurados para replicarse bidireccionalmente para mantenerse sincronizados entre sí, pero CouchApp 1 solicita solo los datos de una denominación del filtro de replicación de denominación de CouchApp 2.

El usuario 1 es anónimo, por lo que no es de confianza, y el usuario 2 es el administrador de CouchApp2, por lo que tiene un alto nivel de autoridad/confiabilidad. Ambos CouchApps están configurados para confiar en los datos recientes 2/3 más que los datos autorizados.

Primero (en el orden del tiempo), el usuario autorizado 2 ingresa 10 revisiones de los datos de la congregación sobre la congregación 1 en CouchApp 2 (todas las denominaciones). Segundo (en el orden del tiempo), el usuario anónimo 1 ingresa 10 revisiones de los datos de la congregación sobre la congregación 1 en CouchApp 1 (una denominación).

Se produce la replicación bidireccional.

CouchApp 2 (todas las denominaciones) muestra los datos del usuario 1 de manera predeterminada, porque esos datos son más recientes. Pero, como el usuario 1 solo ingresó algunos (pero no todos) los campos de los datos de la congregación 1, CouchApp 2 muestra los datos del usuario 2 para todos los demás campos.

Estoy abierto a que se diga que una aplicación no vale la pena replicar más de una revisión, o evaluar la precisión de la entrada de los usuarios después de la replicación (podría hacerse antes de la replicación) o evaluar esa precisión en absoluto.

Respuesta

2

Lo sentimos, no puede replicar revisiones antiguas directamente. El único propósito del número _rev es para MVCC y no está diseñado para rastrear el historial de revisiones. Dicho esto, no es imposible para hacer esto.

Considere almacenar viejas revisiones como archivos adjuntos JSON en un documento en sí. Esto hará que se repliquen junto con el resto del documento. Además, hay other strategies que las personas han ideado para vencer este problema. (Google a su alrededor y probablemente pueda encontrar aún más)

+0

Gracias por esta recomendación; como se describe con más detalle aquí http://blog.couchbase.com/simple-document-versioning-couchdb (que estaba vinculado a la página a la que se hace referencia), parece que podría proporcionar lo que necesito. – timblack1

Cuestiones relacionadas