Frage

Soweit ich weiß, werden CouchDB-Indizes aktualisiert, wenn eine Ansicht abgefragt wird.Angenommen, es gibt mehr Lese- als Schreibvorgänge. Ist das nicht schlecht für die Skalierung?Wie würde ich CouchDB so konfigurieren, dass Indizes bei Schreibvorgängen oder besser noch nach einem Zeitplan aktualisiert werden?

War es hilfreich?

Lösung

CouchDB hat Blick auf Update regenerieren, sondern nur auf das, was seit dem letzten Lesezugriff auf die Ansicht geändert hat. Ihre Lesevolumen überwiegen Ihre Schreibvolumen stark Unter der Annahme, dies kein Problem sein sollte.

Wenn Sie große Anzahl von Dokumenten sind zu ändern, wenn dies auf die Möglichkeit, die ersten Leseanforderungen führen könnte eine merkliche Menge an Zeit. Zur Linderung haben diese ein paar verschiedene Möglichkeiten vorgeschlagen. Die meisten verlassen sich auf mit CouchDB Update-Benachrichtigungen zu registrieren und Auslösen liest automatisch.

Ein Beispielskript für genau das, das ist bei auf dem CouchDB Wiki verfügbar [1].

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

Andere Tipps

a) „Skalierung“ ist ein so überladener Begriff.Welche „Art“ der Skalierung meinen Sie?(Wie dem auch sei, ich kann mir nicht vorstellen, wie sich das negativ auf Sie auswirkt).

b) Update zu den Schreibvorgängen:Fragen Sie einfach Ihre Ansicht nach einem Schreibvorgang ab.Beachten Sie, dass das Hinzufügen einer Reihe von Daten zum Index ressourcenschonender ist (das ist nicht spezifisch für CouchDB).Vielleicht möchten Sie Ihre Ansicht also alle N Schreibvorgänge auslösen.

c) Geplant:Richten Sie einen Cronjob ein, der Ihre Ansicht alle M Minuten abfragt.

d) Warten Sie, bis sich CouchDB weiterentwickelt und Ihnen die Infrastruktur zur Verfügung stellt, die es Ihnen ermöglicht, dies mit einem Konfigurationsparameter einzurichten.

e) (BESTE OPTION).Machen Sie sich die Hände schmutzig und helfen Sie uns beim Polieren von CouchDB!Jeder Beitrag wird sehr geschätzt.

D) RTFM (blinken :)

Sie können nicht und auch, warum sollte man das wollen?

Denken Sie darüber nach wie folgt aus:

  • Wenn Sie Daten in MySQL importieren Sie von Indizes drehen kann, weil es teurer ist, den Index für jede Zeile bearbeiten Sie einsetzen, als es ist, den Index für 100 schreibt (oder wie viele Zeilen, die Sie importieren) in einem einzigen Durchlauf zu aktualisieren .
  • Aus diesem Grunde CouchDB den Index auf Lese aktualisiert, weil es weniger teuer ist, diese 100 Änderungen in der gleichen Zeit zu integrieren, dann jede Änderung, wenn es geschrieben.

Dies ist einer der Vorteile von CouchDB! :) Ich sage nicht, dass dies ein CouchDB einziges Feature, aber es ist nur klug dies beim Lesen zu tun.

Eine Sache, die Sie tun können, ist mit dem Update lesen = false, die ein schmutziges Lese- und Rück möglicherweise nicht, was Sie erwarten. Wenn Sie immer das tun, könnten Sie einen „normalen“ durch einen Cronjob lesen planen und aktualisieren Sie Ihren Index damit. Ich glaube einfach nicht, es macht Sinn.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top