En particular, ¿se puede realizar la replicación filtrada con PouchDB? Quiero asegurarme de que el cliente no pueda omitir el filtro y, por lo tanto, sincronizar con toda la base de datos.¿Es posible usar la replicación filtrada de CouchDB para replicar solo el subconjunto de datos ACLed a un usuario?
Respuesta
No hay un "protocolo" de replicación CouchDB. El proceso de replicación es simplemente un cliente que se conecta a dos puntos finales de CouchDB, lee documentos de uno y los escribe en el otro. Por supuesto, CouchDB viene con un cliente así ("el replicador") incorporado; pero conceptualmente es una aplicación de terceros.
Lo que eso significa es que puede eliminar la replicación de su análisis de seguridad de su aplicación. Primero considere los clientes web normales que leen y escriben en su servidor. Bloquea eso. Puede suponer un adversario hipotético con un navegador web pirateado o con un cliente HTTP personalizado (que no respeta las políticas de origen cruzado, por ejemplo).
Con este problema resuelto, la replicación, por necesidad, seguirá su política de seguridad.
En otras palabras, la replicación entre PouchDB y CouchDB:
- Si está empujando al servidor remoto, su herramienta de seguridad es la función remota
validate_doc_update
. - Si está tirando desde el servidor remoto, su herramienta de seguridad es el objeto _security de la base de datos - específicamente las matrices
"members"
. Un cliente puede leer una base de datos por completo o no leerla en absoluto. Por supuesto, puede hacer réplicas filtradas en bases de datos de uso especial en el lado del servidor.
- 1. Replicación filtrada de CouchDB
- 2. ¿La replicación filtrada de Can CouchDB replica las últimas 100 revisiones de un documento?
- 3. ¿Es factible el enfoque de la base de datos por usuario de CouchDB para usuarios con muchos datos compartidos?
- 4. ¿La información es un subconjunto de datos?
- 5. Django admin - ¿Es posible limitar el acceso de un usuario a solo sus propios datos ingresados?
- 6. CouchDB: La restricción de los usuarios solamente replicar sus propios documentos
- 7. ¿Es posible implementar compras en la aplicación solo para un subconjunto de países?
- 8. ¿Cómo puedo usar Spring Security con un clúster con replicación de sesión para conmutar por error a un usuario autenticado?
- 9. Resolviendo conflictos de replicación completamente dentro de CouchDB
- 10. Replicación continua permanente con CouchDB en reinicios
- 11. Replicación de la base de datos. 2 servidores, base de datos maestra y el 2do es de solo lectura
- 12. La longitud de los datos de LOB (78862) a replicar excede el máximo configurado 65536
- 13. Calcular correlación - cor() - para solo un subconjunto de columnas
- 14. La replicación de CouchDB no funciona correctamente detrás de un proxy
- 15. Replicación punto a punto de una base de datos sqlite
- 16. Derechos de acceso de solo lectura CouchDB
- 17. ¿Cuándo es apropiado usar couchDB?
- 18. Replicación de MySQL: ¿evita temporalmente la replicación de sentencias SQL específicas a los esclavos?
- 19. ¿Qué visualizador de base de datos usar para CouchDB?
- 20. Replicación de MySQL para el escenario alternativo
- 21. CouchDB escenario de base de datos por usuario con sistema privado de mensajería
- 22. ¿Es posible llamar a la función Python de un solo parámetro sin usar paréntesis?
- 23. Cómo exportar un subconjunto consistente de la base de datos
- 24. Utilice Django dumpdata para volcar un subconjunto de datos generales?
- 25. Cuando usar CouchDB vs RDBMS
- 26. ¿Es posible usar read_csv para leer solo líneas específicas?
- 27. ¿Es posible usar el recolector de basura Boehm solo para la parte del programa?
- 28. Replicación de matriz a nivel de elemento según un recuento
- 29. Solr: opciones de replicación
- 30. Para CouchDB o no?
Esta era mi suposición, que no expondría directamente CouchDB (tanto como no expondría a MySQL ni a ningún otro almacén de datos directamente), sino que implementaría algún tipo de punto final de paso. Pero estoy un poco confundido cuando dices que no hay un "protocolo" CouchDB. Entiendo lo que quiere decir con que actúa como un cliente externo, pero mi suposición sería que la replicación de PouchDB está logrando una interoperabilidad al tratar esencialmente ese comportamiento como un protocolo, ¿o aún me falta algo aquí? –
Sí, tienes razón. Mi comentario es casual, no pretende ser claro como el cristal. Por supuesto, hay una conversación rígida entre los puntos finales para replicar: un protocolo. Pero lo bueno es que esta conversación es simplemente un cliente que se conecta y hace actualizaciones normales. No hay un canal mágico fuera de banda para la replicación. Describo el modelo conceptual un poco más aquí: http://stackoverflow.com/questions/4766391/what-is-the-couchdb-replication-protocol-is-it-like-git – JasonSmith
CouchDB está diseñado para exponerse directamente a los usuarios, como un servidor de aplicaciones. Por supuesto, muchas personas lo usan con éxito en un modelo tradicional de 3 niveles también (como MySQL). La decisión sobre exponer a los usuarios se reduce a si puede trabajar con los usuarios de CouchDB y el modelo de autenticación. Eso es un salvavidas (si su aplicación se ajusta a ese modelo) o un factor decisivo (si no es así) – JasonSmith