sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan udvikler du applikationer til MongoDB og Redpanda ved hjælp af Docker Compose

MongoDB behøver ingen introduktion. Siden sin debut i 2007 er dokumentdatabasen støt steget i popularitet og er nu den 5. rangerende database i verden ifølge DB Engines. Det følger nu kun Oracle, MySQL, SQL Server og PostgreSQL. Dette er så meget desto mere imponerende, når man tænker på, at de fire øverste er traditionelle relationelle databaser, der udkom i det forrige århundrede. MongoDB er nummer et blandt den nye generation af skalerbare, distribuerede "NoSQL"-databaser.

MongoDBs kviksølvvækst kan tilskrives et stærkt fokus på udvikleroplevelse. Selve produktet er enkelt, nemt at bruge og giver en glad vej fra prototype til produktion. Når de prøver MongoDB, har udviklere en tendens til at have succes med at flytte fungerende prototyper til fuld-blæste produktionsimplementeringer. Det er historien at huske.

Mens MongoDB forenklede databaseudvikling for millioner af udviklere verden over, er Redpanda på en lignende mission for at forenkle realtidsstreamingapplikationer. Fra starten blev Redpanda bygget med samme dedikation til enkelhed, brugervenlighed og vigtigst af alt, udviklerproduktivitet.

Anderledes, men ens

Mens MongoDB og Redpanda adresserer forskellige dele af tech-stakken, er det interessant at bemærke lighederne i, hvordan de leverer en fornøjelig udvikleroplevelse individuelt, og hvordan de komplementerer hinanden, når de kombineres. Altså:

  • MongoDB sendes som en enkelt binær. Det gør Redpanda også. I modsætning til andre sammenlignelige streamingplatforme har Redpanda ingen afhængigheder af eksterne tjenester som Apache Zookeeper. Dette gør Redpanda lige så let at installere via pakkeadministratorer, som det er lokalt på en udviklers bærbare computer. Det leveres også som et Docker-image, så du kan oprette det via Docker Compose, integrere med CI/CD-pipelines eller implementere i Kubernetes med en simpel controller.
  • Både Redpanda og MongoDB er distribuerede systemer. For at opnå skala og modstandsdygtighed installerer du blot den nøjagtige samme binære fil på flere servere og peger dem mod hinanden. Dette giver udviklere og arkitekter mulighed for at udsætte beslutninger om skalerbarhed og ydeevne tidligt i udviklingsprocessen. Den mentale model og kode for applikationen er den samme, uanset om den kører på en bærbar computer, en virtuel single-core maskine eller på flere kraftige produktionsservere.
  • Både Redpanda og MongoDB leveres med fornuftige standardindstillinger. Dette minimerer antallet af knapper, som udviklere eller administratorer skal justere, uanset om de opretter et prototypemiljø (som med Docker Compose) eller klargør en produktionsklynge. Redpanda går endnu længere med evnen til at autotune mod underliggende hardware, så den kan maksimere de tilgængelige CPU-, hukommelses- og diskressourcer med minimal indsats.
  • Den kognitive belastning for udviklere er ikke kun på skalerbarheden af ​​bytes pr. sekund, men også på at skulle beslutte, hvilken form de skal give dine data, og hvilke typer de skal vælge. MongoDB giver udviklere fleksibiliteten til at udvikle skemaet over tid med en venlig JSON-lignende datamodel. Tilsvarende kræver begivenheder og beskeder sendt til Redpanda ikke et skema på forhånd. Der er dog mulighed for at bruge et skema, når det er nødvendigt, og at udvikle skemaet, så det matcher skiftende forretningsbehov.

Forbinder MongoDB til Redpanda

MongoDB integreres med Redpanda på to måder:som en sink, hvorved Redpanda-begivenheder forbruges og sendes til MongoDB for indsættelser eller opdateringer, eller som en CDC-kilde, hvor MongoDB eksternaliserer sin changelog til et Redpanda-emne for andre (inklusive andre MongoDB-forekomster) til forbruge. Integrationen sker via Kafka Connect. Da Redpanda er ledningskompatibel med Apache Kafka, fungerer de eksisterende Kafka-stik problemfrit. Denne evne til at udnytte det enorme Kafka-økosystem er endnu en måde, Redpanda gør udviklerens liv lettere på!

Vores venner hos MongoDB har sammensat en aktieticker-demo, der integrerer MongoDB og Redpanda via Kafka Connect. Demoen kræver Docker Compose og docker-compose.yml fil ser sådan ud:

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"

Besøg det supplerende blogindlæg på MongoDB for en komplet tutorial og gennemgang. Vi byder alle fra MongoDB-fællesskabet velkommen til at prøve Redpanda og slutte sig til Redpanda-fællesskabet Slack, hvor du kan engagere dig med de ingeniører, der bygger Redpanda og former fremtiden for streaming i realtid!

Yderligere læsning

  • Redpanda-dokumentation
  • Benchmark for Redpanda versus Kafka
  • Kom godt i gang med Redpanda

  1. Sådan implementeres Percona Server til MongoDB for høj tilgængelighed

  2. Hvordan implementerer du et primært ID med automatisk stigning i MongoDB?

  3. Installation af Redis på CentOS 8

  4. hurtigt oprette en prøve hbase tabel