MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

NoSQL-Datenstreaming mit MongoDB &Kafka

Entwickler beschreiben Kafka als "verteiltes, fehlertolerantes Pub-Sub-Messaging-System mit hohem Durchsatz. " Kafka ist als partitionierter, verteilter und replizierter Commit-Protokolldienst bekannt. Es bietet auch die Funktionalität eines Messaging-Systems, jedoch mit einem einzigartigen Design. Auf der anderen Seite ist MongoDB bekannt als "Die Datenbank für Riesenideen. " MongoDB ist in der Lage, Daten in JSON-ähnlichen Dokumenten zu speichern, die in ihrer Struktur variieren können, und bietet ein dynamisches, flexibles Schema. MongoDB ist für Hochverfügbarkeit und Skalierbarkeit konzipiert, mit integrierter Replikation und Auto-Sharding.

MongoDB wird unter "Datenbanken" klassifiziert, während Kafka zur Kategorie "Message Queue" des Tech-Stacks gehört. Entwickler sehen in Kafka „High-Throughput“, „Distributed“ und „Scalable“ als Schlüsselfaktoren; wobei „dokumentorientierte Speicherung“, „kein SQL“ und „Benutzerfreundlichkeit“ als Hauptgründe für die Bevorzugung von MongoDB gelten.

Datenstreaming in Kafka

Im heutigen Datenökosystem gibt es kein einzelnes System, das alle erforderlichen Perspektiven bieten kann, um einen echten Einblick in die Daten zu liefern. Um eine bessere Visualisierung von Datenerkenntnissen aus Daten abzuleiten, müssen riesige Mengen an Informationen aus mehreren Datenquellen gemischt werden. Daher sind wir bestrebt, sofort Antworten zu erhalten. Wenn die Zeit, die zum Analysieren von Datenerkenntnissen benötigt wird, 10 Millisekunden überschreitet, geht der Wert verloren oder ist irrelevant. Anwendungen wie Betrugserkennung, Hochfrequenzhandel und Empfehlungsmaschinen können es sich nicht leisten, zu warten. Dieser Vorgang wird auch als Analyse des Datenflusses bezeichnet, bevor er als Datensatzdatenbank ohne Toleranz für Datenverlust aktualisiert wird, und die Herausforderung wird noch entmutigender.

Kafka hilft Ihnen dabei, große Datenmengen zuverlässig aus mehreren Datenquellen aufzunehmen und schnell zu verschieben und sie dann an die Systeme weiterzuleiten, die sie benötigen, indem es unterwegs gefiltert, aggregiert und analysiert wird. Kafka hat einen höheren Durchsatz, eine höhere Zuverlässigkeit und Replikationseigenschaften, eine skalierbare Methode, um Streams von Ereignisdaten von einem oder mehreren Kafka-Produzenten an einen oder mehrere Kafka-Konsumenten zu übermitteln. Beispiele für Ereignisse sind:

  • Erfasste Luftverschmutzungsdaten auf regelmäßiger Basis
  • Ein Verbraucher, der in einem Online-Shop einen Artikel in den Einkaufswagen legt
  • Ein mit einem bestimmten Hashtag geposteter Tweet

Streams von Kafka-Ereignissen werden erfasst und in vordefinierten Themen organisiert. Der Kafka-Produzent wählt ein Thema aus, an das ein bestimmtes Ereignis gesendet werden soll, und die Verbraucher wählen aus, aus welchen Themen sie Ereignisse abrufen. Beispielsweise könnte eine Börsenfinanzanwendung Aktiengeschäfte von einem Thema und Finanzinformationen von Unternehmen von einem anderen abrufen, um nach Handelsmöglichkeiten zu suchen.

Die Zusammenarbeit von MongoDB und Kafka bildet heute das Herzstück vieler moderner Datenarchitekturen. Kafka ist für grenzenlose Datenströme ausgelegt, die Ereignisse nacheinander in Commit-Protokolle schreiben, wodurch Datenbewegungen in Echtzeit zwischen MongoDB und Kafka durch die Verwendung von Kafka Connect ermöglicht werden.

Der offizielle MongoDB Connector für Kafka wurde entwickelt und wird von MongoDB Inc. unterstützt. Ingenieure. Es wird auch von Confluent (dem Pionier der unternehmenstauglichen Event-Streaming-Plattform) verifiziert und entspricht den Richtlinien, die von Confluents Verified Integrations Program festgelegt wurden. Der Konnektor ermöglicht es, MongoDB sowohl als Senke als auch als Quelle für Kafka zu konfigurieren. Erstellen Sie einfach robuste, reaktive Datenpipelines, die Ereignisse zwischen Anwendungen und Diensten in Echtzeit streamen.

MongoDB-Senkenanschluss

Die MongoDB-Senke ermöglicht es uns, Ereignisse von Kafka in unsere MongoDB-Instanz zu schreiben. Der Sink-Konnektor wandelt den Wert aus den Kafka Connect SinkRecords in ein MongoDB-Dokument um und führt je nach gewählter Konfiguration eine Einfügung oder Einfügung durch. Es erwartete die im Voraus erstellte Datenbank und die erstellten gezielten MongoDB-Sammlungen, falls sie nicht vorhanden sind.

MongoDB Kafka Source Connector

Der MongoDB Kafka Source Connector verschiebt Daten aus einem MongoDB-Replikatsatz in einen Kafka-Cluster. Der Konnektor konfiguriert und verarbeitet Change Stream-Ereignisdokumente und veröffentlicht sie in einem Thema. Change Streams, eine in MongoDB 3.6 eingeführte Funktion, generieren Ereignisdokumente, die Änderungen an in MongoDB gespeicherten Daten in Echtzeit enthalten, und bieten Garantien für Dauerhaftigkeit, Sicherheit und Idempotenz. Sie können Änderungsströme konfigurieren, um Änderungen auf Sammlungs-, Datenbank- oder Bereitstellungsebene zu beobachten. Es verwendet die folgenden Einstellungen, um Änderungsströme zu erstellen und die Ausgabe so anzupassen, dass sie im Kafka-Cluster gespeichert wird. Es veröffentlicht die geänderten Datenereignisse in einem Kafka-Thema, das aus der Datenbank und dem Namen der Sammlung besteht, aus der die Änderung stammt.

 MongoDB- und Kafka-Anwendungsfälle

eCommerce-Websites

Anwendungsfall einer E-Commerce-Website, bei der die Bestandsdaten in MongoDB gespeichert werden. Wenn der Lagerbestand des Produkts einen bestimmten Schwellenwert unterschreitet, möchte das Unternehmen eine automatische Bestellung aufgeben, um den Lagerbestand zu erhöhen. Der Bestellvorgang wird von anderen Systemen außerhalb von MongoDB durchgeführt, und die Verwendung von Kafka als Plattform für solche ereignisgesteuerten Systeme ist ein großartiges Beispiel für die Leistungsfähigkeit von MongoDB und Kafka, wenn sie zusammen verwendet werden.

Website-Aktivitätsverfolgung

Site-Aktivitäten wie besuchte Seiten oder gerenderte Anzeigen werden in Kafka-Themen erfasst – ein Thema pro Datentyp. Diese Themen können dann von mehreren Funktionen wie Überwachung, Echtzeitanalyse oder Archivierung für Offline-Analysen genutzt werden. Erkenntnisse aus den Daten, die in einer Betriebsdatenbank wie MongoDB gespeichert sind, wo sie zusammen mit Daten aus anderen Quellen analysiert werden können.

Internet der Dinge (IoT)

IoT-Anwendungen müssen mit einer enormen Anzahl von Ereignissen fertig werden, die von einer Vielzahl von Geräten generiert werden. Kafka spielt eine entscheidende Rolle bei der Bereitstellung der Fan-in- und Echtzeiterfassung all dieser Sensordaten. Ein häufiger Anwendungsfall ist die Telematik, bei der Diagnosen von den Sensoren eines Fahrzeugs empfangen und an der Basis verarbeitet werden müssen. Nach der Erfassung in Kafka-Themen können die Daten auf verschiedene Weise verarbeitet werden, einschließlich Stream-Verarbeitung oder Lambda-Architekturen. Sie werden wahrscheinlich auch in einer Betriebsdatenbank wie MongoDB gespeichert, wo sie mit anderen gespeicherten Daten kombiniert werden können, um Echtzeitanalysen durchzuführen und betriebliche Anwendungen wie das Auslösen personalisierter Angebote zu unterstützen.

Fazit

MongoDB ist als nicht relationale Datenbank bekannt, die unter einer Free-and-Open-Source-Lizenz veröffentlicht wird. MongoDB ist in erster Linie eine dokumentenorientierte Datenbank, die für die Verwendung mit halbstrukturierten Daten wie z Textdokumente. Es ist die beliebteste moderne Datenbank, die für die Handhabung riesiger und massiver Mengen heterogener Daten entwickelt wurde.

Kafka ist eine weit verbreitete Streaming-Plattform, die Tausende von Unternehmen wie New Relic, Uber und Square nutzen, um skalierbare, hochdurchsatzstarke und zuverlässige Echtzeit-Streaming-Systeme aufzubauen.

Zusammen spielen MongoDB und Kafka eine wichtige Rolle in unserem Datenökosystem und vielen modernen Datenarchitekturen.