Database Reference
In-Depth Information
doc:
{ _ id: '370254',
_ rev: '1-2c7e0deec3ffca959ba0169b0e8bfcef',
... 98 more entries ...
Hurra, unsere Anwendung funktioniert! Nachdem sie einen Datensatz für
jedes Dokument ausgibt, läuft der Prozess weiter und wartet auf weitere Än-
derungen.
Sie können das Dokument direkt in Futon ändern oder den @max -Wert in im-
port _ from _ jamendo.rb ändern und es erneut ausführen. Diese Änderungen
spiegeln sich in der Kommandozeile wider. Jetzt legen wir noch einen Zahn zu
und nutzen kontinuierliche Feeds, um die Updates noch flotter zu machen.
Änderungen kontinuierlich überwachen
Die Polling- und Longpolling-Feeds des _ changes -Dienstes erzeugen beide
saubere JSON-Ergebnisse. Der continuous -Feed geht die Dinge etwas anders
an. Statt alle verfügbaren Änderungen in einem results -Array zusammenzu-
fassen und danach den Stream zu schließen, sendet er jede Änderung einzeln
und hält die Verbindung offen. Auf diese Weise kann er serialisierte JSON-
Änderungsmitteilungsobjekte zurückliefern, sobald sie verfügbar sind.
Um zu sehen, wie das funktioniert, probieren Sie Folgendes aus (wir haben
die Ausgabe der Lesbarkeit halber gekürzt):
$ curl 'http://localhost:5984/music/ _ changes?since=97&feed=continuous'
{"seq":98,"id":"357999","changes":[{"rev":"1-0329f5c885...87b39beab0"}]}
{"seq":99,"id":"357998","changes":[{"rev":"1-79c3fd2fe6...1e45e4e35f"}]}
{"seq":100,"id":"357995","changes":[{"rev":"1-aa649aa53f...320c235aee"}]}
Treten für eine Weile keine Änderungen ein, schließt CouchDB irgendwann
die Verbindung, nachdem es eine Zeile wie die folgende ausgegeben hat:
{"last _ seq":100}
Diese Methode hat gegenüber Polling bzw. Longpolling den Vorteil eines re-
duzierten Overheads, weil die Verbindung offen bleibt. Es geht keine Zeit
beim Wiederaufbau der Verbindung verloren. Auf der anderen Seite ist die
Ausgabe kein JSON, d. h., das Parsing ist etwas aufwendiger. Auch ist die-
se Variante keine gute Wahl, wenn der Client ein Web-Browser ist. Ein den
Feed asynchron herunterladender Browser empfängt möglicherweise keiner-
lei Daten, bis die Verbindung abgebaut wird. In diesem Fall sollten Sie besser
Longpolling verwenden.
Search WWH ::




Custom Search