2011-02-04 20 views
12

Estoy diseñando un sistema basado en CouchDB. Tendrá un puñado de diferentes componentes: una lista de usuarios, un almacén de datos principal, registro, etc. Lo que quiero conocer es, ¿cuál debería ser el alcance de una base de datos CouchDB? ¿Debería tener bases de datos separadas para cada componente, o simplemente juntar todo en una y usar una propiedad 'tipo' para cada documento? Sé que las bases de datos individuales pueden ser muy grandes, pero ¿el rendimiento de las vistas se ve afectado por mantener todo en una base de datos, en lugar de dividir las bases de datos? Esencialmente, ¿cuáles son las compensaciones involucradas?¿Cuándo uso una base de datos separada de CouchDB?

Saludos a todos.

Respuesta

13

Buena pregunta, Dan.

Creo que esto es básicamente un problema de optimización. Una buena idea es no optimizar (separar en varias bases de datos) demasiado pronto. (Una excepción pueden ser los registros, que pueden dominar rápidamente todos los demás datos, que requieren compactación a menudo. Podría dividir los registros inmediatamente.)

El rendimiento de la vista no se verá afectado. A cambio de consultas predefinidas (ver definiciones), CouchDB garantiza resultados de vista rápida, siempre.

Si dividir en varias bases de datos generalmente depende de las inquietudes de autenticación y permiso. Si usa un front-end de servidor web normal, eso es menos preocupante.

Al igual que con todas las vistas, están bien si consulta con frecuencia. Las consultas mantienen la vista actualizada, con un tiempo de respuesta rápido. Las demoras en la consulta causan que el procesamiento se acumule para la próxima. En producción, esto no es un gran problema.

+1

¡Gracias, esa es la respuesta que estaba buscando! Mi instinto era contrario a la optimización prematura, y he comenzado a mantener todo en una base de datos, pero la sugerencia de dividir los registros suena bien. – stompydan

Cuestiones relacionadas