MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да разработите приложения за MongoDB и Redpanda с помощта на Docker Compose

MongoDB няма нужда от представяне. От дебюта си през 2007 г., базата данни с документи непрекъснато нараства популярността си и сега е 5-та в класацията база данни в света според DB Engines. Сега следва само Oracle, MySQL, SQL Server и PostgreSQL. Това е още по-впечатляващо, като се има предвид, че първите четири са традиционни релационни бази данни, които се появиха през предходния век. MongoDB е номер едно сред новото поколение мащабируеми, разпределени „NoSQL“ бази данни.

Живателният растеж на MongoDB може да се дължи на силен фокус върху опита на разработчиците. Самият продукт е прост, лесен за използване и осигурява щастлив път от прототипа до производството. Когато изпробват MongoDB, разработчиците са склонни да бъдат успешни в преместването на работещи прототипи към пълно разгръщане на производство. Това е историята, която трябва да запомните.

Докато MongoDB опрости разработването на бази данни за милиони разработчици по целия свят, Redpanda е на подобна мисия да опрости стрийминг приложенията в реално време. От самото начало Redpanda беше създадена със същата отдаденост към простотата, лекотата на използване и най-важното, производителността на разработчиците.

Различни, но еднакви

Докато MongoDB и Redpanda се занимават с различни части от технологичния стек, интересно е да се отбележи приликите в начина, по който предоставят приятно изживяване на разработчиците поотделно и как се допълват взаимно, когато се комбинират. А именно:

  • MongoDB се доставя като единичен двоичен файл. Същото прави и Redpanda. За разлика от други сравними платформи за стрийминг, Redpanda няма зависимости от външни услуги като Apache Zookeeper. Това прави Redpanda толкова лесна за инсталиране чрез мениджъри на пакети, колкото е локално на лаптопа на разработчика. Той също така се доставя като изображение на Docker, така че можете да го развъртите чрез Docker Compose, да се интегрирате с CI/CD конвейери или да внедрите в Kubernetes с обикновен контролер.
  • И Redpanda, и MongoDB са разпределени системи. За да постигнете мащаб и устойчивост, просто инсталирате точно същия двоичен файл на множество сървъри и ги насочвате един към друг. Това позволява на разработчиците и архитектите да отлагат решенията относно мащабируемостта и производителността в началото на процеса на разработка. Мисловният модел и кодът на приложението са едни и същи, независимо дали работи на лаптоп, едноядрена виртуална машина или на няколко мощни производствени сървъра.
  • И Redpanda, и MongoDB се доставят с разумни настройки по подразбиране. Това свежда до минимум броя на копчетата, които разработчиците или администраторите трябва да настроят, независимо дали създават среда за създаване на прототипи (както при Docker Compose) или осигуряват производствен клъстер. Redpanda отива още по-далеч с възможността за автоматично настройване спрямо основния хардуер, което й позволява да максимизира наличните ресурси на процесора, паметта и диска с минимални усилия.
  • Когнитивното натоварване за разработчиците не е само в мащабируемостта на байтове в секунда, но и в това, че трябва да решат каква форма да дадат на данните си и какви типове да изберат. MongoDB дава на разработчиците гъвкавостта да развиват схемата с течение на времето с приятелски JSON-подобен модел на данни. По същия начин събитията и съобщенията, изпратени до Redpanda, не изискват предварително схема. Въпреки това, има опция за използване на схема, когато е необходимо, и за развитие на схемата, за да отговаря на променящите се бизнес нужди.

Свързване на MongoDB с Redpanda

MongoDB се интегрира с Redpanda по два начина:като приемник, при който събитията на Redpanda се консумират и изпращат до MongoDB за вмъкване или актуализации, или като източник на CDC, където MongoDB екстернализира своя регистър на промените към тема на Redpanda за други (включително други екземпляри на MongoDB), за да консумират. Интеграцията се извършва чрез Kafka Connect. Тъй като Redpanda е съвместим с Apache Kafka, съществуващите конектори на Kafka работят безпроблемно. Тази способност за използване на огромната екосистема на Kafka е още един начин, по който Redpanda улеснява живота на разработчиците!

Нашите приятели от MongoDB са събрали демонстрация на борсов тикер, която интегрира MongoDB и Redpanda чрез Kafka Connect. Демонстрацията изисква Docker Compose и docker-compose.yml файл изглежда така:

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"

За пълен урок и инструкции посетете допълнителната публикация в блога в MongoDB. Приветстваме всички от общността на MongoDB да изпробват Redpanda и да се присъединят към общността Redpanda Slack, където можете да се ангажирате с инженерите, които изграждат Redpanda и оформят бъдещето на стрийминг в реално време!

Допълнително четене

  • Документация на Redpanda
  • Еталон на Redpanda срещу Kafka
  • Първи стъпки с Redpanda

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сравнете масиви и върнете разликата

  2. Как да получите целия брой на модела мангуста?

  3. MongoDB findOneAndUpdate()

  4. Как да разпечатате повече от 20 елемента (документа) в обвивката на MongoDB?

  5. MongoDB заявки с нулева стойност