Domanda

Per quanto ho capito, gli indici CouchDB vengono aggiornati quando viene richiesta una vista. Supponendo che ci siano più letture che scritture, non è male per il ridimensionamento? Come configurerei CouchDB per aggiornare gli indici sulle scritture o, meglio ancora, su una pianificazione?

È stato utile?

Soluzione

CouchDB rigenera le viste all'aggiornamento, ma solo su ciò che è cambiato dall'ultimo accesso in lettura alla vista. Supponendo che il tuo volume di lettura superi di gran lunga il tuo volume di scrittura, questo non dovrebbe essere un problema.

Quando si modifica un numero elevato di documenti contemporaneamente, ciò potrebbe portare alla possibilità che le richieste in prima lettura richiedano un notevole lasso di tempo. Per alleviare ciò sono state suggerite alcune diverse possibilità. La maggior parte si affida alla registrazione con le notifiche di aggiornamento di CouchDB e all'attivazione automatica delle letture.

Uno script di esempio per fare esattamente questo è disponibile sul wiki di CouchDB in [1].

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

Altri suggerimenti

a) " Ridimensionamento " è un termine così sovraccarico. Che tipo di "tipo" di ridimensionamento ti riferisci a? (Ad ogni modo, non riesco a vedere come ti influisce negativamente).

b) Aggiornamento su scritture: basta interrogare la vista dopo una scrittura. Si noti che l'aggiunta di un mucchio di dati all'indice è più favorevole alle risorse (non specifico per CouchDB). Quindi potresti voler attivare la tua vista ogni N scrive.

c) Pianificato: imposta un cronjob che interroga la tua vista ogni M minuti.

d) Attendi che CouchDB si evolva per fornirti l'infrastruttura che ti consenta di impostare questo con un parametro di configurazione.

e) (MIGLIORE OPZIONE). Sporcati le mani e aiutaci a lucidare CouchDB! Tutti i contributi sono molto apprezzati.

d) RTFM ( blink :)

Non puoi e anche, perché dovresti volerlo?

Pensaci in questo modo:

  • Quando si importano dati in MySQL, è possibile disattivare le dimensioni poiché è più costoso aggiornare l'indice per ogni riga inserita, piuttosto che aggiornare l'indice per 100 scritture (o comunque molte righe importate) in una singola esecuzione .
  • Questo è il motivo per cui CouchDB aggiorna l'indice in lettura perché è meno costoso integrare quelle 100 modifiche contemporaneamente, quindi ciascuna modifica quando è scritta.

Questo è uno dei vantaggi di CouchDB! :) Non sto dicendo che questa è solo una funzione di CouchDB, ma è solo intelligente farlo in lettura.

Una cosa che potresti fare è leggere con update = false, che è una lettura sporca e potrebbe non restituire ciò che ti aspetti. Se lo fai sempre, puoi programmare un "normale" leggi un cronjob e aggiorna il tuo indice con quello. Non penso che abbia senso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top