開発者は、Kafkaを「分散型、フォールトトレラント、高スループット、pub-sub、メッセージングシステム」と表現しています。 「Kafkaは、パーティション化、分散、複製されたコミットログサービスとしてよく知られています。メッセージングシステムの機能も提供しますが、独自の設計になっています。一方、MongoDBは「巨大なアイデア。 「MongoDBは、構造が異なる可能性のあるJSONのようなドキュメントにデータを保存でき、動的で柔軟なスキーマを提供します。MongoDBは、組み込みのレプリケーションと自動シャーディングにより、高可用性とスケーラビリティを実現するように設計されています。
MongoDBは「データベース」に分類されますが、Kafkaは技術スタックの「メッセージキュー」カテゴリに属します。開発者は、Kafkaの「高スループット」、「分散型」、「スケーラブル」を重要な要素と見なしています。一方、「ドキュメント指向のストレージ」、「SQLなし」、「使いやすさ」は、MongoDBが好まれる主な理由と考えられています。
今日のデータエコシステムでは、データの真の洞察を提供するために必要なすべての視点を提供できる単一のシステムはありません。データからデータの洞察をより適切に視覚化するには、複数のデータソースからの膨大な量の情報を混合する必要があります。そのため、私たちはすぐに答えを得たいと思っています。データインサイトの分析にかかる時間が数十ミリ秒を超えると、値が失われるか、無関係になります。不正検出、高頻度取引、推奨エンジンなどのアプリケーションは待つ余裕がありません。この操作は、データ損失の許容度がゼロのレコードのデータベースとして更新される前にデータの流入を分析することとしても知られており、課題はさらに困難になります。
Kafkaは、複数のデータソースから大量のデータを確実に取り込み、すばやく移動し、途中でフィルタリング、集約、分析することにより、データを必要とするシステムにリダイレクトするのに役立ちます。 Kafkaは、より高いスループット、信頼性、およびレプリケーション特性を備えており、1つ以上のKafkaプロデューサーから1つ以上のKafkaコンシューマーにイベントデータのストリームを通信するためのスケーラブルな方法です。イベントの例は次のとおりです。
Kafkaイベントのストリームがキャプチャされ、事前定義されたトピックに編成されます。 Kafkaプロデューサーは特定のイベントを送信するトピックを選択し、コンシューマーはイベントをプルするトピックを選択します。たとえば、株式市場の財務アプリケーションは、取引の機会を探すために、あるトピックから株式取引を引き出し、別のトピックから会社の財務情報を引き出すことができます。
MongoDBとKafkaのコラボレーションは、今日の多くの最新のデータアーキテクチャの中心を構成しています。 Kafkaは、イベントをコミットログに順次書き込む無限のデータストリーム用に設計されており、KafkaConnectを使用してMongoDBとKafka間のリアルタイムのデータ移動を可能にします。
Kafka用の公式MongoDBコネクターが開発され、MongoDBIncによってサポートされています。エンジニア。また、Confluentの検証済み統合プログラムによって定められたガイドラインに準拠して、Confluent(エンタープライズ対応のイベントストリーミングプラットフォームのパイオニア)によって検証されています。このコネクターにより、MongoDBをKafkaのシンクとソースの両方として構成できます。アプリケーションとサービス間のイベントをリアルタイムでストリーミングする、堅牢でリアクティブなデータパイプラインを簡単に構築できます。
MongoDBシンクコネクタ
MongoDBシンクを使用すると、KafkaからMongoDBインスタンスにイベントを書き込むことができます。 Sinkコネクタは、Kafka Connect SinkRecordsからの値をMongoDBドキュメントに変換し、選択した構成に応じて挿入またはアップサートを実行します。データベースが事前に作成され、対象となるMongoDBコレクションが存在しない場合は作成されることが期待されていました。
MongoDBKafkaソースコネクタ
MongoDB Kafka Source Connectorは、MongoDBレプリカセットからKafkaクラスターにデータを移動します。コネクタは、変更ストリームイベントドキュメントを構成および使用し、それらをトピックに公開します。 MongoDB 3.6で導入された機能である変更ストリームは、MongoDBに保存されているデータへの変更をリアルタイムで含むイベントドキュメントを生成し、耐久性、セキュリティ、およびべき等性を保証します。コレクション、データベース、またはデプロイメントレベルで変更を監視するように変更ストリームを構成できます。次の設定を使用して変更ストリームを作成し、出力をカスタマイズしてKafkaクラスターに保存します。変更されたデータイベントを、変更の元となったデータベースとコレクション名で構成されるKafkaトピックに公開します。
MongoDBとKafkaのユースケース
eコマースウェブサイト
訪問したページやレンダリングされた広告などのサイトアクティビティは、データタイプごとに1つのトピックであるKafkaトピックにキャプチャされます。これらのトピックは、監視、リアルタイム分析、オフライン分析のためのアーカイブなどの複数の機能で使用できます。 MongoDBなどの運用データベースに保存されているデータからの洞察。他のソースからのデータと一緒に分析できます。
モノのインターネット(IoT)
IoTアプリケーションは、多数のデバイスによって生成される膨大な数のイベントに対処する必要があります。 Kafkaは、そのすべてのセンサーデータのファンインおよびリアルタイム収集を提供する上で重要な役割を果たします。一般的な使用例はテレマティクスです。テレマティクスでは、車両のセンサーからの診断を受信して、基地で処理する必要があります。 Kafkaトピックでキャプチャされると、データはストリーム処理やLambdaアーキテクチャなどの複数の方法で処理できます。また、MongoDBなどの運用データベースに保存される可能性が高く、他の保存データと組み合わせてリアルタイム分析を実行し、パーソナライズされたオファーのトリガーなどの運用アプリケーションをサポートできます。
MongoDBは非リレーショナルデータベースとしてよく知られており、フリーでオープンソースのライセンスの下で公開されています。MongoDBは主にドキュメント指向のデータベースであり、次のような半構造化データでの使用を目的としています。テキストドキュメント。これは、膨大な量の異種データを処理するために構築された最も人気のある最新のデータベースです。
Kafkaは広く普及している分散ストリーミングプラットフォームであり、New Relic、Uber、Squareなどの何千もの企業が、スケーラブルで高スループットで信頼性の高いリアルタイムストリーミングシステムを構築するために使用しています。
MongoDBとKafkaは、データエコシステムと多くの最新のデータアーキテクチャで重要な役割を果たしています。