MongoDB behoeft geen introductie. Sinds zijn debuut in 2007 is de documentendatabase gestaag in populariteit gestegen en is nu de 5e database in de wereld volgens DB Engines. Het volgt nu alleen Oracle, MySQL, SQL Server en PostgreSQL. Dit is des te indrukwekkender als je bedenkt dat de top vier traditionele relationele databases zijn die in de vorige eeuw uitkwamen. MongoDB is de nummer één van de nieuwe generatie schaalbare, gedistribueerde "NoSQL"-databases.
De groei van MongoDB kan worden toegeschreven aan een sterke focus op de ervaring van ontwikkelaars. Het product zelf is eenvoudig, gebruiksvriendelijk en biedt een gelukkig pad van prototype tot productie. Bij het uitproberen van MongoDB zijn ontwikkelaars meestal succesvol in het verplaatsen van werkende prototypes naar volledige productie-implementaties. Dat is het verhaal om te onthouden.
Terwijl MongoDB de database-ontwikkeling voor miljoenen ontwikkelaars over de hele wereld vereenvoudigde, heeft Redpanda een vergelijkbare missie om realtime streaming-applicaties te vereenvoudigen. Vanaf het begin is Redpanda gebouwd met dezelfde toewijding aan eenvoud, gebruiksgemak en vooral de productiviteit van ontwikkelaars.
Anders maar hetzelfde
Hoewel MongoDB en Redpanda verschillende delen van de technische stapel behandelen, is het interessant om de overeenkomsten op te merken in hoe ze afzonderlijk een plezierige ontwikkelaarservaring bieden en hoe ze elkaar aanvullen wanneer ze worden gecombineerd. Te weten:
- MongoDB wordt verzonden als een enkel binair bestand. Dat doet Redpanda ook. In tegenstelling tot andere vergelijkbare streamingplatforms is Redpanda niet afhankelijk van externe services zoals Apache Zookeeper. Hierdoor is Redpanda net zo eenvoudig te installeren via pakketbeheerders als lokaal op de laptop van een ontwikkelaar. Het wordt ook geleverd als een Docker-image, zodat je het kunt laten draaien via Docker Compose, kunt integreren met CI/CD-pipelines of kunt implementeren in Kubernetes met een eenvoudige controller.
- Zowel Redpanda als MongoDB zijn gedistribueerde systemen. Om schaal en veerkracht te bereiken, installeert u eenvoudig exact hetzelfde binaire bestand op meerdere servers en wijst u ze naar elkaar. Hierdoor kunnen ontwikkelaars en architecten beslissingen over schaalbaarheid en prestaties vroeg in het ontwikkelingsproces uitstellen. Het mentale model en de code voor de applicatie zijn hetzelfde, of ze nu op een laptop, een single-core virtuele machine of op meerdere krachtige productieservers draaien.
- Zowel Redpanda als MongoDB worden geleverd met verstandige standaardinstellingen. Dit minimaliseert het aantal knoppen dat ontwikkelaars of beheerders moeten aanpassen, of ze nu een prototyping-omgeving opzetten (zoals bij Docker Compose) of een productiecluster inrichten. Redpanda gaat nog verder met de mogelijkheid om automatisch af te stemmen op onderliggende hardware, waardoor het met minimale inspanning de beschikbare CPU-, geheugen- en schijfbronnen kan maximaliseren.
- De cognitieve belasting voor ontwikkelaars ligt niet alleen bij de schaalbaarheid in bytes per seconde, maar ook bij het moeten beslissen welke vorm ze aan uw gegevens moeten geven en welke typen ze moeten kiezen. MongoDB geeft ontwikkelaars de flexibiliteit om het schema in de loop van de tijd te ontwikkelen met een vriendelijk JSON-achtig datamodel. Evenzo vereisen gebeurtenissen en berichten die naar Redpanda worden verzonden, geen vooraf schema. Er is echter de mogelijkheid om indien nodig een schema te gebruiken en het schema aan te passen aan veranderende zakelijke behoeften.
MongoDB verbinden met Redpanda
MongoDB integreert op twee manieren met Redpanda:als een sink, waarbij Redpanda-gebeurtenissen worden geconsumeerd en naar MongoDB worden verzonden voor invoegingen of updates, of als een CDC-bron, waarbij MongoDB zijn changelog naar een Redpanda-onderwerp voor anderen (inclusief andere MongoDB-instanties) consumeren. De integratie gebeurt via Kafka Connect. Omdat Redpanda wire-compatibel is met Apache Kafka, werken de bestaande Kafka-connectoren naadloos samen. Dit vermogen om gebruik te maken van het enorme Kafka-ecosysteem is nog een andere manier waarop Redpanda het leven van ontwikkelaars gemakkelijker maakt!
Onze vrienden bij MongoDB hebben een stock ticker-demo samengesteld die MongoDB en Redpanda integreert via Kafka Connect. De demo vereist Docker Compose en de docker-compose.yml
bestand ziet er ongeveer zo uit:
version: '3.7'
services:
redpanda:
command:
- redpanda
- start
- --smp
- '1'
- --reserve-memory
- 0M
- --overprovisioned
- --node-id
- '0'
- --kafka-addr
- PLAINTEXT://0.0.0.0:9092,OUTSIDE://0.0.0.0:9093
- --advertise-kafka-addr
- PLAINTEXT://redpanda:9092,OUTSIDE://localhost:9093
image: docker.vectorized.io/vectorized/redpanda:v21.9.3
ports:
- 9093:9093
connect:
image: confluentinc/cp-kafka-connect-base:latest
build:
context: .
dockerfile: Dockerfile-MongoConnect
depends_on:
- redpanda
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: 'redpanda:9092'
CONNECT_REST_ADVERTISED_HOST_NAME: connect
CONNECT_REST_PORT: 8083
CONNECT_GROUP_ID: connect-cluster-group
CONNECT_CONFIG_STORAGE_TOPIC: docker-connect-configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_FLUSH_INTERVAL_MS: 10000
CONNECT_OFFSET_STORAGE_TOPIC: docker-connect-offsets
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: docker-connect-status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
CONNECT_AUTO_CREATE_TOPICS_ENABLE: "true"
CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
mongo1:
image: "mongo:5.0.3"
volumes:
- /data/db
ports:
- "27017:27017"
restart: always
nodesvr:
image: node:16
build:
context: .
dockerfile: Dockerfile-Nodesvr
depends_on:
- redpanda
- mongo1
ports:
- "4000:4000"
Voor een volledige tutorial en walkthrough, bezoek de aanvullende blogpost op MongoDB. We verwelkomen iedereen van de MongoDB-community om Redpanda uit te proberen en lid te worden van de Redpanda-community Slack, waar je kunt communiceren met de technici die Redpanda bouwen en de toekomst van realtime streaming vormgeven!
Verder lezen
- Redpanda-documentatie
- Benchmark van Redpanda versus Kafka
- Aan de slag met Redpanda