Pregunta

Hasta donde tengo entendido, los índices de CouchDB se actualizan cuando se consulta una vista.Suponiendo que haya más lecturas que escrituras, ¿no es esto malo para escalar?¿Cómo configuraría CouchDB para actualizar los índices en escrituras, o mejor aún, según un cronograma?

¿Fue útil?

Solución

CouchDB regenera vistas al actualizar, pero solo en lo que ha cambiado desde el último acceso de lectura a la vista.Suponiendo que su volumen de lectura supere con creces su volumen de escritura, esto no debería ser un problema.

Cuando cambia una gran cantidad de documentos a la vez, esto podría generar la posibilidad de que las primeras solicitudes de lectura demoren una cantidad considerable de tiempo.Para aliviar esto se han sugerido algunas posibilidades diferentes.La mayoría confía en registrarse con las notificaciones de actualización de CouchDB y activar lecturas automáticamente.

Un script de ejemplo para hacer exactamente eso está disponible en la wiki de CouchDB en [1].

[1] http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate

Otros consejos

a) "Escalar" es un término muy sobrecargado.¿A qué "tipo" de escala te refieres?(De cualquier manera, no veo cómo te afecta negativamente).

b) Actualización sobre escrituras:Simplemente consulta tu vista después de escribir.Tenga en cuenta que agregar una gran cantidad de datos al índice es más amigable con los recursos (que no es específico de CouchDB).Por lo tanto, es posible que desee activar su vista cada N escritura.

c) Programado:Configure un cronjob que consulte su vista cada M minutos.

d) Espere a que CouchDB evolucione para brindarle la infraestructura que le permita configurar esto con un parámetro de configuración.

e) (MEJOR OPCIÓN).¡Ensúciate las manos y ayúdanos a pulir CouchDB!Cualquier contribución es muy apreciada.

d) RTFM (parpadear :)

No puedes y además, ¿por qué querrías eso?

Piénselo así:

  • Cuando importa datos a MySQL, puede desactivar los índices porque es más costoso actualizar el índice para cada fila que inserta, que actualizar el índice para 100 escrituras (o la cantidad de filas que importe) en una sola ejecución.
  • Es por eso que CouchDB actualiza el índice al leer porque es menos costoso integrar esos 100 cambios al mismo tiempo y luego cada cambio cuando se escribe.

¡Ésta es una de las ventajas de CouchDB!:) No estoy diciendo que esta sea una característica exclusiva de CouchDB, pero es inteligente hacerlo durante la lectura.

Una cosa que podría hacer es leer con update=false, que es una lectura sucia y es posible que no devuelva lo esperado.Si siempre hace esto, puede programar una lectura "regular" de un cronjob y actualizar su índice con eso.Simplemente no creo que tenga sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top