MongoDB

MongoDB ist die führende Open-Source, Document Datenbank die für einfache Entwicklung und Skalierung aber auch für Big Data Szenarien entwickelt wurde.

Tailable Cursors vs. Change Streams

Marc-David Militz
Experte
Mit MongoDB 3.6 wurde ein neues Feature eingeführt, dass auf dem bereits vorhandenen "Tailable Cursor" aufbaut, die sog. "Change Streams". Für beide Features benötigt man eine "Capped Collection", d.h. eine Collection mit einer fest definierten größe, die nicht dynamisch wachsen kann.

Das Konzept von Tail ist ganz ähnlich den "tail" Befehl aus der UNIX/Linux Welt. Der Datenbankcursor liefert ein initales Abfrageergebnis, bleibt dann aber offen und liefert weitere Ergebnisse, sobald neue Datensätze den Bedingungen der Abfrage entsprechen. Tail verwendet für die Abfrage keine Indexe. MongoDB selbst verwendet intern einen "Tailable Cursor" auf dem Oplog um die Replikation zu realisieren.
var cursor = db.chat.find( { chatnum: 1 } ).noCursorTimeout().tailable( { isAwaitData : true } )


"Change Streams" sind weniger komplex in der Verwendung als ein "Tailable Cursor". Ein Change Stream kann auf eine Collection gesetzt werden und liefert immer ein Ergebnis solbald sich ein Datensatz in der Collection ändert. Der Stream Output kann, soweit das gewünscht ist mit einigen Funktionen wie $match, $project, $addFiels, $replaceRoot oder $redact beeinflusst werden. "Change Streams" sind damit ideal für den Einsatzzwecke im Internet of Things (IoT).
var watchCursor = db.getSiblingDB("data").sensors.watch()


https://docs.mongodb.com/manual/core/tailable-cursors/
https://docs.mongodb.com/manual/changeStreams/

Neueste Mitgliederaktivitäten

Diesen Community Beitrag weiterempfehlen