sql >> データベース >  >> NoSQL >> MongoDB

DockerComposeを使用してMongoDBとRedpandaのアプリケーションを開発する方法

    MongoDBを紹介する必要はありません。 2007年のデビュー以来、ドキュメントデータベースの人気は着実に高まっており、DBEnginesによると世界で5番目にランク付けされたデータベースになっています。現在、Oracle、MySQL、SQL Server、およびPostgreSQLのみを追跡しています。これは、上位4つが前世紀に登場した従来のリレーショナルデータベースであることを考えると、さらに印象的です。 MongoDBは、新世代のスケーラブルな分散型「NoSQL」データベースの中でナンバーワンです。

    MongoDBの水銀の成長は、開発者の経験に重点を置いていることに起因する可能性があります。製品自体はシンプルで使いやすく、プロトタイプから製造までの幸せな道を提供します。 MongoDBを試す場合、開発者は実用的なプロトタイプを本格的な本番環境に移行することに成功する傾向があります。それが覚えておくべき話です。

    MongoDBは世界中の何百万もの開発者のためにデータベース開発を簡素化しましたが、Redpandaはリアルタイムストリーミングアプリケーションを簡素化するという同様の使命を負っています。レッサーパンダは当初から、シンプルさ、使いやすさ、そして最も重要なこととして、開発者の生産性に対する同じ献身で構築されました。

    異なるが同じ

    MongoDBとRedpandaは技術スタックのさまざまな部分に対応していますが、楽しい開発者エクスペリエンスを個別に提供する方法と、組み合わせたときに相互に補完する方法の類似点に注目するのは興味深いことです。ウィットに:

    • MongoDBは単一のバイナリとして出荷されます。レッサーパンダもそうです。他の同等のストリーミングプラットフォームとは異なり、RedpandaはApacheZookeeperなどの外部サービスに依存していません。これにより、Redpandaは、開発者のラップトップにローカルにインストールするのと同じように、パッケージマネージャーを介して簡単にインストールできます。また、Dockerイメージとして出荷されるため、Docker Composeを介してスピンアップしたり、CI / CDパイプラインと統合したり、シンプルなコントローラーを使用してKubernetesにデプロイしたりできます。
    • RedpandaとMongoDBはどちらも分散システムです。スケールと復元力を実現するには、まったく同じバイナリを複数のサーバーにインストールし、それらを相互にポイントするだけです。これにより、開発者とアーキテクトは、開発プロセスの早い段階でスケーラビリティとパフォーマンスに関する決定を延期することができます。アプリケーションのメンタルモデルとコードは、ラップトップ、シングルコア仮想マシン、または複数の高性能本番サーバーで実行されているかどうかにかかわらず同じです。
    • RedpandaとMongoDBはどちらも、適切なデフォルトで出荷されます。これにより、開発者または管理者が(Docker Composeのように)プロトタイピング環境を立ち上げる場合でも、本番クラスターをプロビジョニングする場合でも、調整する必要のあるノブの数を最小限に抑えることができます。レッサーパンダは、基盤となるハードウェアに対して自動調整する機能をさらに備えており、最小限の労力で利用可能なCPU、メモリ、およびディスクリソースを最大化できます。
    • 開発者の認知的負荷は、1秒あたりのバイト数のスケーラビリティだけでなく、データを提供する形状と選択するタイプを決定する必要があることにもあります。 MongoDBは、開発者に、フレンドリーなJSONのようなデータモデルを使用して、時間の経過とともにスキーマを進化させる柔軟性を提供します。同様に、Redpandaに送信されるイベントとメッセージは、事前にスキーマを必要としません。ただし、必要に応じてスキーマを使用し、変化するビジネスニーズに合わせてスキーマを進化させるオプションがあります。

    MongoDBをレッサーパンダに接続する

    MongoDBは、2つの方法でRedpandaと統合されます。シンクとしてRedpandaイベントが消費され、挿入または更新のためにMongoDBに送信されるか、CDCソースとして、MongoDBが変更ログを他のユーザー(他のMongoDBインスタンスを含む)のRedpandaトピックに外部化します。消費。統合はKafkaConnectを介して行われます。 RedpandaはApacheKafkaとワイヤー互換であるため、既存のKafkaコネクタはシームレスに機能します。広大なKafkaエコシステムを活用するこの機能は、レッサーパンダが開発者の生活を楽にするもう1つの方法です!

    MongoDBの友人たちは、KafkaConnectを介してMongoDBとRedpandaを統合する株式相場表示のデモをまとめました。デモにはDockerComposeと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コミュニティのすべての人が、レッサーパンダを試して、レッサーパンダを構築し、リアルタイムストリーミングの未来を形作るエンジニアと交流できるレッサーパンダコミュニティSlackに参加することを歓迎します!

    参考資料

    • レッサーパンダのドキュメント
    • レッサーパンダとカフカのベンチマーク
    • レッサーパンダの使用を開始する

    1. 自分のAmazonAWSアカウントのMongoDB-as-a-Service

    2. MongoDBはクエリに対して許可されていません-コード13

    3. redisデータをMySQLに移動するためのより高速な方法

    4. Dockerは、SpringBootRedis接続の問題を作成します