sql >> Database >  >> NoSQL >> MongoDB

NoSQL-gegevensstreaming met MongoDB en Kafka

Ontwikkelaars beschrijven Kafka als een "Gedistribueerd, fouttolerant, hoge doorvoer, pub-sub, berichtensysteem. " Kafka staat bekend als een gepartitioneerde, gedistribueerde en gerepliceerde service voor het vastleggen van vastleggingen. Het biedt ook de functionaliteit van een berichtensysteem, maar met een uniek ontwerp. Aan de andere kant staat MongoDB bekend als "De database voor gigantische ideeën. " MongoDB is in staat om gegevens op te slaan in JSON-achtige documenten die in structuur kunnen variëren en biedt een dynamisch, flexibel schema. MongoDB is ontworpen voor hoge beschikbaarheid en schaalbaarheid, met ingebouwde replicatie en auto-sharding.

MongoDB is geclassificeerd onder "Databases", terwijl Kafka behoort tot de categorie "Berichtenwachtrij" van de technische stapel. Ontwikkelaars beschouwen Kafka "High-throughput", "Distributed" en "Scalable" als de belangrijkste factoren; overwegende dat "Documentgerichte opslag", "Geen SQL" en "Gebruiksgemak" worden beschouwd als de belangrijkste redenen waarom MongoDB de voorkeur geniet.

Gegevensstreaming in Kafka

In het huidige data-ecosysteem is er geen enkel systeem dat alle vereiste perspectieven kan bieden om echt inzicht in de data te krijgen. Voor een betere visualisatie van data-inzichten uit data is het nodig om een ​​enorme hoeveelheid informatie uit meerdere databronnen te mengen. Als zodanig willen we graag onmiddellijk antwoorden krijgen; als de tijd die nodig is om gegevensinzichten te analyseren meer dan 10 milliseconden bedraagt, gaat de waarde verloren of is deze niet relevant. Toepassingen zoals fraudedetectie, hoogfrequente handel en aanbevelingsengines kunnen het zich niet veroorloven om te wachten. Deze operatie staat ook bekend als het analyseren van de instroom van gegevens voordat deze wordt bijgewerkt als de recorddatabase met nultolerantie voor gegevensverlies, en de uitdaging wordt zelfs nog ontmoedigender.

Kafka helpt je grote hoeveelheden gegevens uit meerdere gegevensbronnen snel en betrouwbaar op te nemen en te verplaatsen en deze vervolgens om te leiden naar de systemen die deze nodig hebben door ze onderweg te filteren, te aggregeren en te analyseren. Kafka heeft een hogere doorvoer, betrouwbaarheid en replicatiekenmerken, een schaalbare methode om stromen van gebeurtenisgegevens van een of meer Kafka-producenten naar een of meer Kafka-consumenten te communiceren. Voorbeelden van evenementen zijn:

  • Gegevens over luchtverontreiniging vastgelegd op basis van periodieke basis
  • Een consument die een artikel toevoegt aan het winkelwagentje in een online winkel
  • Een Tweet geplaatst met een specifieke hashtag

Streams van Kafka-evenementen worden vastgelegd en georganiseerd in vooraf gedefinieerde onderwerpen. De Kafka-producent kiest een onderwerp om een ​​bepaald evenement naar toe te sturen, en consumenten selecteren uit welke onderwerpen ze evenementen halen. Een financiële applicatie op de beurs kan bijvoorbeeld aandelentransacties uit het ene onderwerp halen en financiële bedrijfsinformatie uit een ander onderwerp om handelsmogelijkheden te zoeken.

De samenwerking tussen MongoDB en Kafka vormt tegenwoordig het hart van veel moderne data-architecturen. Kafka is ontworpen voor grenzeloze gegevensstromen die sequentieel gebeurtenissen in commit-logboeken schrijven, waardoor realtime gegevensverplaatsing tussen MongoDB en Kafka mogelijk wordt gemaakt door het gebruik van Kafka Connect.

De officiële MongoDB-connector voor Kafka is ontwikkeld en wordt ondersteund door MongoDB Inc. ingenieurs. Het is ook geverifieerd door Confluent (die pionierde met het enterprise-ready platform voor het streamen van evenementen), in overeenstemming met de richtlijnen die zijn uiteengezet door Confluent's Verified Integrations Program. Met de connector kan MongoDB worden geconfigureerd als zowel een gootsteen als een bron voor Kafka. Bouw eenvoudig robuuste, reactieve datapijplijnen die gebeurtenissen in realtime tussen applicaties en services streamen.

MongoDB Sink-connector

Met de MongoDB Sink kunnen we gebeurtenissen van Kafka naar onze MongoDB-instantie schrijven. De Sink-connector converteert de waarde van de Kafka Connect SinkRecords naar een MongoDB-document en voert een insert of upsert uit, afhankelijk van de configuratie die u hebt gekozen. Het verwachtte de database die vooraf was gemaakt, de gerichte MongoDB-verzamelingen die werden gemaakt als ze niet bestaan.

MongoDB Kafka-bronconnector

De MongoDB Kafka Source Connector verplaatst gegevens van een MongoDB-replicaset naar een Kafka-cluster. De connector configureert en verbruikt wijzigingsstroomgebeurtenisdocumenten en publiceert deze naar een onderwerp. Wijzigingsstromen, een functie die is geïntroduceerd in MongoDB 3.6, genereren gebeurtenisdocumenten die wijzigingen bevatten in gegevens die zijn opgeslagen in MongoDB in realtime en bieden garanties voor duurzaamheid, beveiliging en idempotentie. U kunt wijzigingsstromen configureren om wijzigingen op het verzamelings-, database- of implementatieniveau te observeren. Het gebruikt de volgende instellingen om wijzigingsstromen te maken en de uitvoer aan te passen om op te slaan in het Kafka-cluster. Het publiceert de gewijzigde gegevensgebeurtenissen naar een Kafka-onderwerp dat bestaat uit de database en de collectienaam waaruit de wijziging afkomstig is.

 MongoDB- en Kafka-gebruiksscenario's

e-commerce websites

Gebruik een eCommerce-website waarbij de voorraadgegevens worden opgeslagen in MongoDB. Wanneer de voorraadvoorraad van het product onder een bepaalde drempel komt, wil het bedrijf een automatische bestelling plaatsen om de voorraad te vergroten. Het bestelproces wordt gedaan door andere systemen buiten MongoDB, en het gebruik van Kafka als platform voor dergelijke gebeurtenisgestuurde systemen is een goed voorbeeld van de kracht van MongoDB en Kafka wanneer ze samen worden gebruikt.

Website-activiteit bijhouden

Site-activiteit zoals bezochte pagina's of weergegeven advertenties worden vastgelegd in Kafka-onderwerpen - één onderwerp per gegevenstype. Die onderwerpen kunnen vervolgens worden gebruikt door meerdere functies, zoals monitoring, realtime analyse of archivering voor offline analyse. Inzichten uit de gegevens die zijn opgeslagen in een operationele database zoals MongoDB, waar ze naast gegevens uit andere bronnen kunnen worden geanalyseerd.

Internet of Things (IoT)

IoT-applicaties moeten omgaan met enorme aantallen gebeurtenissen die worden gegenereerd door een groot aantal apparaten. Kafka speelt een cruciale rol bij het leveren van fan-in en realtime verzameling van al die sensorgegevens. Een veelvoorkomend gebruik is telematica, waarbij de diagnose van de sensoren van een voertuig moet worden ontvangen en op de basis moet worden verwerkt. Eenmaal vastgelegd in Kafka-onderwerpen, kunnen de gegevens op meerdere manieren worden verwerkt, waaronder streamverwerking of Lambda-architecturen. Het wordt waarschijnlijk ook opgeslagen in een operationele database zoals MongoDB, waar het kan worden gecombineerd met andere opgeslagen gegevens om realtime analyses uit te voeren en operationele toepassingen te ondersteunen, zoals het activeren van gepersonaliseerde aanbiedingen.

Conclusie

MongoDB staat bekend als niet-relationele databases, die zijn gepubliceerd onder een gratis en open-source licentie. MongoDB is in de eerste plaats een documentgeoriënteerde database, bedoeld voor gebruik met semi-gestructureerde gegevens zoals tekst documenten. Het is de meest populaire moderne database die is gebouwd voor het verwerken van enorme en enorme hoeveelheden heterogene gegevens.

Kafka is een zeer populair gedistribueerd streamingplatform dat duizenden bedrijven zoals New Relic, Uber en Square gebruiken om schaalbare, snelle en betrouwbare realtime streamingsystemen te bouwen.

Samen spelen MongoDB en Kafka een vitale rol in ons data-ecosysteem en vele moderne data-architecturen.


  1. 4 manieren om een ​​document in MongoDB te verwijderen

  2. mongodb, repliceert en fout:{$err:niet master en slaveOk=false, code:13435}

  3. Hoe redis-database te scheiden voor dezelfde twee app in node.js

  4. Update ingebed object binnen array in array in MongoDB