2010-04-06 11 views
8

Se il numero di documenti è maggiore, l'interrogazione dei dati diventa più lenta in CouchDB?Prestazioni query CouchDB

Esempio Scenario:

  • ho una casella combinata in un modulo per nome del cliente. Quando l'utente digita il nome del cliente, devo eseguire il riempimento automatico.
  • Ci saranno circa 10k documenti del cliente nel CouchDB. Capisco che devo creare una vista per fare lo stesso.
  • Il database CouchDB si trova nel computer locale in cui risiede l'applicazione.

Domanda: Sono necessari più di 2 - 3 secondi per interrogare il DB per la corrispondenza dei nomi dei clienti? Le query richiedono più tempo per ogni query se ci sono molti documenti nel CouchDB (ad esempio circa 100000 documenti)?

Qualsiasi suggerimento su come creare viste/indice sarà utile.

Grazie in anticipo.

risposta

7

La vista viene eseguita su tutti i documenti, ma solo una volta. Successivamente, i valori di visualizzazione del documento vengono memorizzati per sempre. Recuperare un cliente per nome sarà molto veloce perché normalmente nella nuova visualizzazione si dovrebbero elaborare solo pochi nuovi documenti al momento dell'interrogazione.

Il tempo di interrogazione non aumenta in modo evidente se si dispone di più documenti. Tecnicamente, i tempi di accesso crescono logaritmicamente con il numero di documenti. Tuttavia, in pratica il recupero dei documenti è fondamentalmente un tempo costante e molto improbabile che sia un problema.

+0

Ciao @JasonSmith, c'è un modo per affrontare il problema delle prestazioni lente al primo utilizzo? Ho sicuramente visto che il primo colpo sulla vista dura per sempre (occupandosi di documenti 10k in un'unica visualizzazione). C'è un modo per rilevare se la vista è stata eseguita prima/facendo questo per la prima volta? – Bundeeteddee

+0

@Bundeeteddee È possibile aggiungere l'opzione? Stale = update_after, che restituirà immediatamente ciò che si trova nella vista e inizierà a rinfrescare la vista in background. Ciò comporterà un compromesso: riceverai una risposta immediatamente, ma potrebbero non essere i dati più recenti. In alternativa, puoi interrogare _canges? Feed = continuous e quindi puoi interrogare la vista ogni volta che CouchDB ti avverte che è avvenuta una modifica. Questo richiede un po 'di lavoro, ma questo è il modo più sicuro – JasonSmith