sql >> Database >  >> NoSQL >> MongoDB

Applicaties voor MongoDB en Redpanda ontwikkelen met Docker Compose

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

  1. Hoe useMongoClient (Mongoose 4.11.0) in te stellen?

  2. Ik ontvang dubbele berichten in mijn geclusterde node.js/socket.io/redis pub/sub-toepassing

  3. Hoe een specifieke verzameling in MongoDB te herstellen met behulp van logische back-up

  4. Kan geen verbinding maken met Mongo Cloud mongodb Database in Golang op Ubuntu