2010-04-06 7 views
8

Si le nombre de documents est supérieur, l'interrogation des données ralentit dans CouchDB?Performances des requêtes CouchDB

Exemple de scénario:

  • J'ai un combobox sous une forme pour le nom du client. Lorsque l'utilisateur tape le nom du client, je dois faire un remplissage automatique.
  • Il y aura environ 10k documents clients dans le CouchDB. Je comprends que je dois créer une vue pour faire la même chose.
  • La base de données CouchDB se trouve dans la machine locale où réside l'application.

Question: aura-t-il plus de 2 - 3 secondes pour interroger la base de données pour faire correspondre les noms des clients? L'interrogation prendra-t-elle plus de temps pour chaque requête s'il y a beaucoup de documents dans le CouchDB (disons environ 100000 documents)? Tout pointeur sur la façon de créer des vues/index sera utile.

Merci d'avance.

Répondre

7

La vue s'exécute sur tous les documents, mais une seule fois. Après cela, les valeurs de vue du document sont stockées pour toujours. Récupérer un client par son nom sera très rapide car vous ne disposerez normalement que de quelques nouveaux documents à traiter dans la vue au moment de la requête.

Le temps d'interrogation n'augmentera pas sensiblement si vous avez plus de documents. Techniquement, les temps d'accès augmentent logarithmiquement avec le nombre de documents. Cependant, dans la pratique, l'extraction de documents est fondamentalement un temps constant et très peu susceptible d'être un problème.

+0

Bonjour @JasonSmith, y a-t-il un moyen de s'attaquer au problème des performances lentes pour la première fois? J'ai certainement vu le premier coup sur la vue prend une éternité (traitant des documents 10k dans une vue). Existe-t-il un moyen de détecter si la vue a été exécutée avant/cela pour la première fois? – Bundeeteddee

+0

@Bundeeteddee Vous pouvez ajouter l'option? Stale = update_after, qui retournera tout ce qui est dans la vue immédiatement, et il commencera à actualiser la vue en arrière-plan. Cela fera un compromis: vous obtenez une réponse immédiatement, mais ce ne sont peut-être pas les dernières données. Alternativement, vous pouvez interroger _canges? Feed = continuous et vous pouvez interroger la vue à chaque fois que CouchDB vous informe qu'un changement est survenu. Cela prend un peu de travail mais c'est le moyen le plus infaillible – JasonSmith

Questions connexes