MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak tworzyć aplikacje dla MongoDB i Redpanda przy użyciu Docker Compose

MongoDB nie wymaga przedstawiania. Od czasu debiutu w 2007 roku baza danych dokumentów stale rosła na popularności i jest obecnie piątą bazą danych w rankingu na świecie według DB Engines. Teraz podąża tylko za Oracle, MySQL, SQL Server i PostgreSQL. Jest to tym bardziej imponujące, jeśli weźmie się pod uwagę, że cztery najlepsze to tradycyjne relacyjne bazy danych, które pojawiły się w poprzednim stuleciu. MongoDB jest numerem jeden wśród nowej generacji skalowalnych, rozproszonych baz danych „NoSQL”.

Rtęciowy wzrost MongoDB można przypisać silnemu skupieniu się na doświadczeniu programisty. Sam produkt jest prosty, łatwy w użyciu i zapewnia szczęśliwą drogę od prototypu do produkcji. Podczas wypróbowywania MongoDB programiści z powodzeniem przenoszą działające prototypy do pełnych wdrożeń produkcyjnych. To jest historia do zapamiętania.

Podczas gdy MongoDB uprościł tworzenie baz danych dla milionów programistów na całym świecie, Redpanda ma podobną misję, polegającą na uproszczeniu aplikacji do przesyłania strumieniowego w czasie rzeczywistym. Od samego początku Redpanda była budowana z takim samym zaangażowaniem w prostotę, łatwość użytkowania i, co najważniejsze, produktywność programistów.

Różne, ale takie same

Podczas gdy MongoDB i Redpanda zajmują się różnymi częściami stosu technologicznego, warto zauważyć podobieństwa w tym, w jaki sposób zapewniają przyjemne wrażenia programistyczne indywidualnie i jak uzupełniają się nawzajem w połączeniu. To znaczy:

  • MongoDB jest dostarczany jako pojedynczy plik binarny. Podobnie Redpanda. W przeciwieństwie do innych porównywalnych platform do przesyłania strumieniowego, Redpanda nie jest uzależniona od usług zewnętrznych, takich jak Apache Zookeeper. Dzięki temu Redpanda jest tak łatwa do zainstalowania za pomocą menedżerów pakietów, jak lokalnie na laptopie programisty. Jest również dostarczany jako obraz Docker, dzięki czemu można go rozkręcić za pomocą Docker Compose, zintegrować z potokami CI/CD lub wdrożyć w Kubernetes za pomocą prostego kontrolera.
  • Zarówno Redpanda, jak i MongoDB to systemy rozproszone. Aby osiągnąć skalowalność i odporność, wystarczy zainstalować dokładnie ten sam plik binarny na wielu serwerach i wskazać je sobie nawzajem. Pozwala to programistom i architektom na odkładanie decyzji dotyczących skalowalności i wydajności na wczesnym etapie procesu projektowania. Model mentalny i kod aplikacji są takie same, niezależnie od tego, czy są uruchomione na laptopie, jednordzeniowej maszynie wirtualnej, czy na kilku wydajnych serwerach produkcyjnych.
  • Zarówno Redpanda, jak i MongoDB są dostarczane z rozsądnymi ustawieniami domyślnymi. Minimalizuje to liczbę pokręteł, które programiści lub administratorzy muszą dostroić, niezależnie od tego, czy tworzą środowisko prototypowe (jak w przypadku Docker Compose), czy udostępniają klaster produkcyjny. Redpanda idzie jeszcze dalej dzięki możliwości automatycznego dostrajania do podstawowego sprzętu, co pozwala zmaksymalizować dostępne zasoby procesora, pamięci i dysku przy minimalnym wysiłku.
  • Obciążenie poznawcze dla programistów to nie tylko skalowalność bajtów na sekundę, ale także konieczność decydowania, jaki kształt nadać danym i jakie typy wybrać. MongoDB zapewnia programistom elastyczność w rozwijaniu schematu w czasie za pomocą przyjaznego modelu danych podobnego do JSON. Podobnie zdarzenia i komunikaty wysyłane do Redpanda nie wymagają z góry schematu. Istnieje jednak możliwość korzystania ze schematu w razie potrzeby i rozwijania schematu w celu dopasowania do zmieniających się potrzeb biznesowych.

Łączenie MongoDB z Redpanda

MongoDB integruje się z Redpanda na dwa sposoby:jako sink, w którym zdarzenia Redpanda są zużywane i wysyłane do MongoDB w celu wstawienia lub aktualizacji, lub jako źródło CDC, gdzie MongoDB udostępnia swój dziennik zmian do tematu Redpanda dla innych (w tym innych instancji MongoDB) do konsumować. Integracja odbywa się za pośrednictwem Kafka Connect. Ponieważ Redpanda jest przewodowo kompatybilny z Apache Kafka, istniejące złącza Kafka działają bezproblemowo. Ta możliwość wykorzystania ogromnego ekosystemu Kafki to kolejny sposób, w jaki Redpanda ułatwia życie programistom!

Nasi przyjaciele z MongoDB stworzyli demo giełdowe, które integruje MongoDB i Redpanda za pośrednictwem Kafka Connect. Demo wymaga Docker Compose i pliku docker-compose.yml plik wygląda mniej więcej tak:

Wersja
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"

Aby zapoznać się z pełnym samouczkiem i przewodnikiem, odwiedź uzupełniający wpis na blogu w MongoDB. Zapraszamy wszystkich członków społeczności MongoDB do wypróbowania Redpandy i dołączenia do społeczności Redpanda Slack, gdzie możesz współpracować z inżynierami, którzy budują Redpanda i kształtują przyszłość strumieniowania w czasie rzeczywistym!

Dalsza lektura

  • Dokumentacja Redpanda
  • Wzorzec Redpanda kontra Kafka
  • Pierwsze kroki z Redpanda

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Operatory agregacji MongoDB dla zwracających części dat

  2. Co tak naprawdę oznaczało, że MongoDB nie był zgodny z ACID przed wersją 4?

  3. tworzyć i aktualizować wiele dokumentów MongoDB w jednym połączeniu

  4. Dlaczego MongoDB nie używa przecięcia indeksu?

  5. Indeks poddokumentów w mongo