MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách phát triển ứng dụng cho MongoDB và Redpanda bằng Docker Compose

MongoDB không cần giới thiệu. Kể từ khi ra mắt lần đầu tiên vào năm 2007, cơ sở dữ liệu tài liệu đã dần trở nên phổ biến và hiện là cơ sở dữ liệu xếp hạng thứ 5 trên thế giới theo DB Engines. Bây giờ nó chỉ theo sau Oracle, MySQL, SQL Server và PostgreSQL. Điều này càng ấn tượng hơn khi bạn cho rằng bốn cơ sở dữ liệu hàng đầu là cơ sở dữ liệu quan hệ truyền thống ra đời từ thế kỷ trước. MongoDB là số một trong số thế hệ cơ sở dữ liệu “NoSQL” phân tán, có thể mở rộng.

Sự tăng trưởng nhanh chóng của MongoDB có thể là do sự tập trung mạnh mẽ vào trải nghiệm của nhà phát triển. Bản thân sản phẩm rất đơn giản, dễ sử dụng và cung cấp một con đường hài lòng từ nguyên mẫu đến sản xuất. Khi dùng thử MongoDB, các nhà phát triển có xu hướng thành công trong việc chuyển các nguyên mẫu đang hoạt động sang triển khai sản xuất toàn diện. Đó là câu chuyện đáng nhớ.

Trong khi phát triển cơ sở dữ liệu đơn giản hóa MongoDB cho hàng triệu nhà phát triển trên toàn thế giới, Redpanda cũng đang thực hiện một sứ mệnh tương tự là đơn giản hóa các ứng dụng phát trực tuyến theo thời gian thực. Ngay từ đầu, Redpanda đã được xây dựng với mục tiêu hướng tới sự đơn giản, dễ sử dụng và quan trọng nhất là năng suất của nhà phát triển.

Khác nhau nhưng giống nhau

Mặc dù MongoDB và Redpanda giải quyết các phần khác nhau của ngăn xếp công nghệ, nhưng điều thú vị là lưu ý những điểm tương đồng trong cách chúng mang lại trải nghiệm thú vị cho từng nhà phát triển và cách chúng bổ sung cho nhau khi kết hợp. Nói một cách thông minh:

  • MongoDB gửi dưới dạng một tệp nhị phân duy nhất. Redpanda cũng vậy. Không giống như các nền tảng phát trực tuyến có thể so sánh khác, Redpanda không phụ thuộc vào các dịch vụ bên ngoài như Apache Zookeeper. Điều này giúp Redpanda dễ dàng cài đặt thông qua trình quản lý gói cũng như cài đặt cục bộ trên máy tính xách tay của nhà phát triển. Nó cũng được gửi dưới dạng hình ảnh Docker để bạn có thể quay nó lên thông qua Docker Compose, tích hợp với đường ống CI / CD hoặc triển khai trong Kubernetes bằng một bộ điều khiển đơn giản.
  • Cả Redpanda và MongoDB đều là hệ thống phân tán. Để đạt được quy mô và khả năng phục hồi, bạn chỉ cần cài đặt cùng một tệp nhị phân chính xác trên nhiều máy chủ và trỏ chúng vào nhau. Điều này cho phép các nhà phát triển và kiến ​​trúc sư sớm trì hoãn các quyết định về khả năng mở rộng và hiệu suất trong quá trình phát triển. Mô hình tinh thần và mã cho ứng dụng giống nhau cho dù chạy trên máy tính xách tay, máy ảo lõi đơn hay trên một số máy chủ sản xuất công suất cao.
  • Cả Redpanda và MongoDB đều giao hàng với các giá trị mặc định hợp lý. Điều này giảm thiểu số lượng nút mà nhà phát triển hoặc quản trị viên cần phải chỉnh sửa, cho dù họ đang đưa ra môi trường tạo mẫu (như với Docker Compose) hay cung cấp một cụm sản xuất. Redpanda còn tiến xa hơn với khả năng tự động dò tìm phần cứng bên dưới, cho phép nó tối đa hóa tài nguyên CPU, bộ nhớ và ổ đĩa hiện có mà không tốn nhiều công sức.
  • Tải trọng nhận thức đối với các nhà phát triển không chỉ dựa trên khả năng mở rộng byte trên giây mà còn là việc phải quyết định hình dạng nào để cung cấp dữ liệu của bạn và loại nào để chọn. MongoDB cung cấp cho các nhà phát triển sự linh hoạt để phát triển lược đồ theo thời gian với mô hình dữ liệu giống JSON thân thiện. Tương tự như vậy, các sự kiện và tin nhắn được gửi đến Redpanda không yêu cầu sơ đồ. Tuy nhiên, có tùy chọn sử dụng giản đồ khi cần thiết và phát triển lược đồ để phù hợp với nhu cầu kinh doanh đang thay đổi.

Kết nối MongoDB với Redpanda

MongoDB tích hợp với Redpanda theo hai cách:dưới dạng bồn rửa, theo đó các sự kiện Redpanda được sử dụng và gửi đến MongoDB để chèn hoặc cập nhật hoặc dưới dạng nguồn CDC, trong đó MongoDB ngoại hóa thay đổi của nó thành một chủ đề Redpanda cho những người khác (bao gồm cả các phiên bản MongoDB khác). tiêu thụ. Việc tích hợp được thực hiện thông qua Kafka Connect. Vì Redpanda tương thích dây với Apache Kafka nên các đầu nối Kafka hiện có hoạt động trơn tru. Khả năng tận dụng hệ sinh thái Kafka rộng lớn này là một cách khác mà Redpanda giúp cuộc sống của nhà phát triển trở nên dễ dàng hơn!

Những người bạn của chúng tôi tại MongoDB đã cùng nhau tạo ra một bản demo mã cổ phiếu tích hợp MongoDB và Redpanda thông qua Kafka Connect. Bản trình diễn yêu cầu Docker Compose và docker-compose.yml tệp trông giống như sau:

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"

Để có hướng dẫn và hướng dẫn đầy đủ, hãy truy cập vào bài đăng trên blog bổ sung tại MongoDB. Chúng tôi hoan nghênh tất cả mọi người từ cộng đồng MongoDB dùng thử Redpanda và tham gia Slack của cộng đồng Redpanda, nơi bạn có thể tương tác với các kỹ sư đang xây dựng Redpanda và định hình tương lai của phát trực tuyến theo thời gian thực!

Đọc thêm

  • Tài liệu Redpanda
  • Điểm chuẩn của Redpanda so với Kafka
  • Bắt đầu với Redpanda

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật bộ sưu tập sao băng với id truyền thống

  2. Làm thế nào để cài đặt MongoDB trên hệ thống Windows?

  3. Trận chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và Cassandra

  4. MongoDB trên Azure:Làm thế nào để Chọn Loại Phiên bản Phù hợp?

  5. MongoDB 'không thể tìm thấy chỉ mục cho truy vấn $ geoNear'