2010-04-06 20 views
8

Si la cantidad de documentos es mayor, ¿la consulta de datos se vuelve más lenta en CouchDB?Función de consulta CouchDB

Ejemplo Escenario:

  • I tiene un cuadro combinado en una forma para el nombre del cliente. Cuando el usuario escribe el nombre del cliente, tengo que hacer la autocompletar.
  • Habrá alrededor de 10k documentos del cliente en el CouchDB. Entiendo que tengo que crear una vista para hacer lo mismo.
  • La base de datos de CouchDB se encuentra en la máquina local donde reside la aplicación.

Pregunta: ¿Se tardará más de 2 a 3 segundos en consultar la base de datos para encontrar los nombres de los clientes? ¿Las consultas llevarán más tiempo para cada consulta si hay muchos documentos en el CouchDB (digamos alrededor de 100000 documentos)?

Cualquier sugerencia sobre cómo crear vistas/índice será útil.

Gracias de antemano.

Respuesta

7

La vista se ejecuta en todos los documentos, pero solo una vez. Después de eso, los valores de vista del documento se almacenan para siempre. Obtener un nombre de cliente será muy rápido, ya que normalmente solo tendría que procesar unos pocos documentos en la vista en el momento de la consulta.

El tiempo de consulta no aumentará notablemente si tiene más documentos. Técnicamente, los tiempos de acceso crecen logarítmicamente con la cantidad de documentos. Sin embargo, en la práctica recuperar documentos es básicamente un tiempo constante y muy poco probable que sea un problema.

+0

Hola @JasonSmith, ¿hay alguna manera de abordar el problema de la lentitud del primer rendimiento? Definitivamente, he visto que el primer golpe en la vista tarda una eternidad (se trata de documentos de 10k en una vista). ¿Hay alguna manera de detectar si la vista se ha ejecutado antes/haciendo esto por primera vez? – Bundeeteddee

+0

@Bundeeteddee Puede agregar la opción? Stale = update_after, que devolverá inmediatamente lo que esté en la vista y comenzará a actualizar la vista en segundo plano. Eso hará un intercambio: obtienes una respuesta de inmediato, pero puede que no sea la última información. Alternativamente, puede consultar _canges? Feed = continuous y luego puede consultar la vista siempre que CouchDB le notifique que ha ocurrido un cambio. Eso requiere un poco de trabajo, pero esa es la manera más segura de hacerlo – JasonSmith