MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana mengembangkan aplikasi untuk MongoDB dan Redpanda menggunakan Docker Compose

MongoDB tidak perlu diperkenalkan. Sejak debutnya pada tahun 2007, database dokumen terus meningkat popularitasnya dan sekarang menjadi database peringkat ke-5 di dunia menurut DB Engines. Sekarang hanya tertinggal Oracle, MySQL, SQL Server, dan PostgreSQL. Ini semakin mengesankan ketika Anda mempertimbangkan bahwa empat teratas adalah database relasional tradisional yang keluar pada abad sebelumnya. MongoDB adalah nomor satu di antara generasi baru database “NoSQL” yang skalabel dan terdistribusi.

Pertumbuhan lincah MongoDB dapat dikaitkan dengan fokus yang kuat pada pengalaman pengembang. Produk itu sendiri sederhana, mudah digunakan, dan menyediakan jalan bahagia dari prototipe ke produksi. Saat mencoba MongoDB, pengembang cenderung berhasil memindahkan prototipe yang berfungsi ke penerapan produksi yang lengkap. Itulah kisah yang harus diingat.

Sementara MongoDB menyederhanakan pengembangan basis data untuk jutaan pengembang di seluruh dunia, Redpanda memiliki misi serupa untuk menyederhanakan aplikasi streaming waktu nyata. Sejak awal, Redpanda dibangun dengan dedikasi yang sama untuk kesederhanaan, kemudahan penggunaan, dan yang terpenting, produktivitas pengembang.

Berbeda tapi sama

Sementara MongoDB dan Redpanda membahas bagian yang berbeda dari tumpukan teknologi, menarik untuk dicatat kesamaan dalam cara mereka memberikan pengalaman pengembang yang menyenangkan secara individual, dan bagaimana mereka saling melengkapi saat digabungkan. Yaitu:

  • MongoDB dikirimkan sebagai biner tunggal. Begitu juga dengan Redpanda. Tidak seperti platform streaming lain yang sebanding, Redpanda tidak memiliki ketergantungan pada layanan eksternal seperti Apache Zookeeper. Ini membuat Redpanda mudah dipasang melalui manajer paket seperti halnya secara lokal di laptop pengembang. Ini juga dikirimkan sebagai image Docker sehingga Anda dapat memutarnya melalui Docker Compose, mengintegrasikan dengan pipeline CI/CD, atau menerapkan di Kubernetes dengan pengontrol sederhana.
  • Baik Redpanda dan MongoDB adalah sistem terdistribusi. Untuk mencapai skala dan ketahanan, Anda cukup menginstal biner yang sama persis di beberapa server dan mengarahkannya satu sama lain. Hal ini memungkinkan pengembang dan arsitek untuk menunda keputusan tentang skalabilitas dan kinerja di awal proses pengembangan. Model mental dan kode untuk aplikasi tersebut sama baik dijalankan pada laptop, mesin virtual inti tunggal, atau pada beberapa server produksi berdaya tinggi.
  • Baik Redpanda maupun MongoDB dikirimkan dengan default yang masuk akal. Ini meminimalkan jumlah tombol yang perlu diubah oleh pengembang atau administrator, apakah mereka membawa lingkungan prototyping (seperti dengan Docker Compose) atau menyediakan cluster produksi. Redpanda bahkan melangkah lebih jauh dengan kemampuan untuk melakukan autotune terhadap perangkat keras yang mendasarinya, memungkinkannya untuk memaksimalkan sumber daya CPU, memori, dan disk yang tersedia dengan sedikit usaha.
  • Beban kognitif untuk pengembang tidak hanya pada skalabilitas byte per detik, tetapi juga harus memutuskan bentuk apa yang akan diberikan pada data Anda, dan jenis apa yang harus dipilih. MongoDB memberi pengembang fleksibilitas untuk mengembangkan skema dari waktu ke waktu dengan model data seperti JSON yang ramah. Demikian pula, acara dan pesan yang dikirim ke Redpanda tidak memerlukan skema di muka. Namun, ada opsi untuk menggunakan skema saat dibutuhkan, dan mengembangkan skema agar sesuai dengan kebutuhan bisnis yang berubah.

Menghubungkan MongoDB ke Redpanda

MongoDB terintegrasi dengan Redpanda dalam dua cara:sebagai sink, di mana peristiwa Redpanda dikonsumsi dan dikirim ke MongoDB untuk disisipkan atau diperbarui, atau sebagai sumber CDC, di mana MongoDB mengeksternalkan changelognya ke topik Redpanda untuk orang lain (termasuk instans MongoDB lainnya) ke mengkonsumsi. Integrasi dilakukan melalui Kafka Connect. Karena Redpanda kompatibel dengan Apache Kafka, konektor Kafka yang ada bekerja dengan mulus. Kemampuan untuk memanfaatkan ekosistem Kafka yang luas ini adalah cara lain Redpanda membuat hidup pengembang lebih mudah!

Teman-teman kami di MongoDB telah mengumpulkan demo ticker saham yang mengintegrasikan MongoDB dan Redpanda melalui Kafka Connect. Demo membutuhkan Docker Compose, dan docker-compose.yml file terlihat seperti ini:

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"

Untuk tutorial dan panduan lengkap, kunjungi posting blog pelengkap di MongoDB. Kami menyambut semua orang dari komunitas MongoDB untuk mencoba Redpanda dan bergabung dengan komunitas Redpanda Slack, tempat Anda dapat terlibat dengan para insinyur yang membangun Redpanda dan membentuk masa depan streaming waktu nyata!

Bacaan Lebih Lanjut

  • Dokumentasi Redpanda
  • Tolok ukur Redpanda versus Kafka
  • Memulai Redpanda

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa mengatur MongoDB di server Node.js menggunakan node-mongodb-native di lingkungan EC2?

  2. Buat Database di MongoDB

  3. Promosikan subbidang ke tingkat teratas dalam proyeksi tanpa mencantumkan semua kunci

  4. Apa perbedaan antara menyimpan dan menyisipkan di Mongo DB?

  5. Konversikan tanggal dari milidetik ke objek ISODate