DUICUO

CDC リアルタイム データ同期に基づくいくつかのオープン ソース コンポーネントにより、データ同期をよりリアルタイムに行うことができます。

データベースCDCはChange Data Capture(変更データキャプチャ)の略で、データベースにおける増分更新、挿入、削除操作をキャプチャする技術です。データベースログの監視などによって変更を特定し、それらをユーザーが使いやすい形式に変換して、メッセージキュー、データウェアハウス、その他のストレージデバイスに送信します。データベースCDCは非常に有用な技術であり、リアルタイム性、信頼性、柔軟性、効率性、使いやすさといったメリットを提供し、企業のデータ管理とアプリケーションの価値向上に貢献します。以下のセクションでは、CDCに関連するオープンソースプロジェクトをいくつか紹介します。

運河

Canalは、Alibabaが開発したMySQLデータベース向けのオープンソースの増分データサブスクリプションおよび消費コンポーネントです。データベース内の増分データの変更をキャプチャし、下流のコンシューマーに送信します。その主な原理は、MySQLデータベースのバイナリログファイルを監視し、その中の更新、挿入、削除操作を解析し、これらの操作をプログラムで直接使用できるデータ形式に変換することです。

Canal のアプリケーション シナリオは次のとおりです。

  1. データ同期: Canal は、ある MySQL データベースから別の MySQL データベースにデータをリアルタイムで同期できるため、データの複製と同期を実現できます。
  2. データ配布: Canal は、MySQL データベースのデータを検索エンジンやキャッシュ システムなどの複数のコンシューマーにリアルタイムで配布できます。
  3. リアルタイム コンピューティング: Canal は、リアルタイム コンピューティングと分析のために、MySQL データベースからストリーム処理システムにデータをリアルタイムで送信し、リアルタイムのビジネス上の意思決定と対応をサポートします。
  4. データのバックアップと復元: Canal は、MySQL データベース内のすべてのデータ変更をキャプチャし、必要に応じて追跡または復元できるようにします。

Canal は次のように動作します。

  1. Canal はまず MySQL データベースに接続し、binlog パーサーを起動して MySQL binlog ログ ファイルを監視します。
  2. MySQL データベース内のテーブルに対して CRUD 操作を実行すると、これらの操作は binlog ファイルに記録されます。
  3. Canal は、binlog ファイル内のデータを解析し、JSON 形式に変換して、下流のコンシューマーに送信します。
  4. 下流の消費者は、データを他のデータベースに同期したり、検索エンジンに書き込んだりするなど、独自のニーズに応じてデータを消費します。

バージョン1.1.1以降、CanalはCanalサーバーが受信したバイナリログデータをMQに直接配信する機能をデフォルトでサポートしています。バージョン1.1.4では、canal-adminプロジェクトの導入により最も重要なWebUI機能が導入され、WebUIを介したCanalの動的な管理と、設定、タスク、ログなどのオンラインホワイトスクリーン操作およびメンテナンス機能がサポートされました。

コードアドレス: https://github.com/alibaba/canal.git

マクスウェル

Maxwellは、Zillow Groupが開発したMySQLデータベース向けのオープンソースの増分データサブスクリプションおよび消費コンポーネントです。MySQLデータベース内の増分データの変更をキャプチャし、下流のコンシューマーに送信します。Canalと同様に、MaxwellはMySQLデータベースのバイナリログファイルを監視し、更新、挿入、削除操作を解析し、これらの操作をプログラムで直接使用できるデータ形式に変換することで動作します。

Maxwell のアプリケーション シナリオには次のものが含まれます。

  1. データ同期: Maxwell は、ある MySQL データベースから別の MySQL データベースにデータをリアルタイムで同期できるため、データの複製とデータの同期を実現できます。
  2. データ配布: Maxwell は、MySQL データベースのデータを検索エンジンやキャッシュ システムなどの複数のコンシューマーにリアルタイムで配布できます。
  3. リアルタイム コンピューティング: Maxwell は、リアルタイム コンピューティングと分析のために MySQL データベースからストリーム処理システムにデータをリアルタイムで送信し、リアルタイムのビジネス上の意思決定と対応をサポートします。
  4. データのバックアップとリカバリ: Maxwell は、MySQL データベース内のすべてのデータ変更をキャプチャし、必要に応じて追跡またはリカバリできるようにします。

Maxwell は次のように動作します。

  1. Maxwell は最初に MySQL データベースに接続し、binlog パーサーを起動して MySQL binlog ログ ファイルを監視します。
  2. MySQL データベース内のテーブルに対して CRUD 操作を実行すると、これらの操作は binlog ファイルに記録されます。
  3. Maxwell は、binlog ファイル内のデータを解析し、JSON 形式に変換して、下流のコンシューマーに送信します。
  4. 下流の消費者は、データを他のデータベースに同期したり、検索エンジンに書き込んだりするなど、独自のニーズに応じてデータを消費します。

Maxwellは、データ同期、データ配信、リアルタイム計算、データのバックアップとリカバリ機能を備えた、非常に実用的なMySQL増分データサブスクリプションおよび消費コンポーネントです。Canalと比較して、Maxwellはより高いパフォーマンスを提供し、より多くのデータタイプと設定方法をサポートし、よりユーザーフレンドリーで柔軟なAPIとコマンドラインツールを提供します。

コードアドレス: https://github.com/zendesk/maxwell.git

デベジウム

Debeziumは、 Red Hatが開発したオープンソースの分散型データ変更検出(CDC)ツールです。様々なデータベースからデータ変更イベントをキャプチャし、利用可能なメッセージ形式に変換します。Debeziumは、MySQL、PostgreSQL、Oracle、SQL Serverなどのデータベースをサポートしています。

Debezium のアプリケーション シナリオは次のとおりです。

  1. データ同期: Debezium は、あるデータベースから別のデータベースにデータをリアルタイムで同期できるため、データの複製とデータの同期を実現できます。
  2. データ統合: Debezium は、複数のデータ ソースからのデータ変更を統合データ ウェアハウスに統合し、データ分析と意思決定を容易にします。
  3. リアルタイム コンピューティング: Debezium は、リアルタイム コンピューティングと分析のために、データベースからストリーム処理システムにデータの変更をリアルタイムで送信し、リアルタイムのビジネス上の意思決定と対応をサポートします。
  4. データのバックアップと復元: Debezium はデータベース内のすべてのデータ変更をキャプチャし、必要に応じて追跡または復元できるようにします。

Debezium は次のように動作します。

  1. Debezium はコネクタを起動して、指定されたデータベースをリッスンし、その中の変更イベントを監視します。
  2. データベース内のテーブルがデータの追加、削除、または更新によって変更されると、コネクタはこれらの変更イベントを JSON 形式に変換し、Kafka などのメッセージ キューやその他のストレージ デバイスに送信します。
  3. 下流のコンシューマーは、メッセージ キューまたはストレージ デバイスからデータ変更イベントを取得し、他のデータベースへのデータの同期や検索エンジンへの書き込みなど、ニーズに応じてそれらを使用できます。

Debeziumは、データ同期、データ統合、リアルタイムコンピューティング、データのバックアップとリカバリを可能にする強力なCDCツールです。CanalやMaxwellと比較して、Debeziumは複数のデータベースとメッセージキューをサポートし、より柔軟でカスタマイズ可能なAPIと設定方法を提供します。

コードアドレス: https://github.com/debezium/debezium.git

データバス

Databusは、LinkedInが提供するオープンソースのデータバスツールです。様々なデータソースから増分データをキャプチャし、様々なストレージデバイスに送信できます。Databusは、MySQL、Oracle、Kafkaなどのデータソースをサポートしています。

データバスは次のシナリオで使用できます。

  1. データ同期: データバスは、あるデータベースから別のデータベースにデータをリアルタイムで同期できるため、データの複製とデータの同期を実現できます。
  2. データ統合: Databus は、複数のデータ ソースからのデータ変更を統合データ ウェアハウスに統合し、データ分析と意思決定を容易にします。
  3. リアルタイム コンピューティング: データバスは、リアルタイム コンピューティングと分析のために、データベースからストリーム処理システムにデータの変更をリアルタイムで送信し、リアルタイムのビジネス上の意思決定と対応をサポートします。
  4. データのバックアップと復元: Databus はデータベース内のすべてのデータ変更をキャプチャし、必要に応じて追跡または復元できるようにします。

データバスの動作原理は次のとおりです。

  1. Databus は、指定されたデータ ソースを監視し、その中のデータ変更イベントをキャプチャするエージェント プロセスを開始します。
  2. データベース内のテーブルがデータの追加、削除、または更新によって変更されると、エージェントはこれらの変更イベントを JSON 形式に変換し、Kafka などのメッセージ キューに送信します。
  3. 下流のコンシューマーは、メッセージ キューからデータ変更イベントを取得し、他のデータベースへのデータの同期や検索エンジンへの書き込みなど、ニーズに応じてそれらを使用できます。

Databusは、データ同期、データ統合、リアルタイムコンピューティング、データのバックアップとリカバリを可能にする、非常に実用的なデータバスツールです。他のCDCツールと比較して、Databusは複数のデータソースとメッセージキューをサポートし、より柔軟でカスタマイズ可能なAPIと設定方法を提供します。さらに、Databusは高い信頼性と拡張性を備えており、高同時実行性や大規模なデータ変更イベントの処理に適しています。

コードアドレス: https://github.com/linkedin/databus.git

フリンクCDC

Flink CDCは、Apache Flinkコミュニティによって開発されたデータ処理および配信ツールです。様々なデータソースから増分データをキャプチャし、DataStreamストリーミングエンジンが処理できるデータ形式に変換できます。Flink CDCは、MySQL、PostgreSQL、Oracleなど、様々なデータベースをサポートしています。

Flink CDC の使用例は次のとおりです。

  1. データの同期とバックアップ: Flink CDC は、あるデータベースから別のデータベースにデータをリアルタイムで同期できるため、データの複製と同期が実現され、信頼性の高いデータ バックアップ機能が提供されます。
  2. リアルタイム コンピューティング: Flink CDC は、リアルタイム コンピューティングと分析のために、データベースから Flink DataStream ストリーミング エンジンにデータの変更をリアルタイムで送信し、リアルタイムのビジネス上の意思決定と対応をサポートします。

Flink CDC の動作原理は次のとおりです。

  1. Flink CDC は、指定されたデータベースをリッスンし、その中の変更イベントを監視するソース関数を開始します。
  2. データベース内のテーブルがデータの追加、削除、または更新によって変更されると、ソース関数はこれらの変更イベントを Flink DataStream のデータ形式に変換し、Flink ストリーム処理エンジンに送信します。
  3. Flink ストリーム処理エンジンは、受信したデータに対してさまざまなリアルタイム計算と分析を実行し、その結果をターゲット データ ストレージに書き込むことができます。

Flink CDCは、データ同期、リアルタイム計算、データバックアップを可能にする非常に強力なCDCツールです。他のCDCツールと比較して、Flink CDCは、非常に幅広いデータソースとストリーム処理エンジンをサポートし、より柔軟でカスタマイズ可能なAPIと設定方法を提供している点が特徴です。

コードアドレス: https://github.com/ververica/flink-cdc-connectors.git

上記のCDCプロジェクトに加えて、 PulsarはCDCプラグインも提供しています。Pulsar IO CDCは、データベースの変更をリアルタイムでキャプチャし、Pulsarクラスタにメッセージとして送信するために使用されるApache Pulsarプラグインです。

ログベースのCDCは、比較的包括的で信頼性が高く、リアルタイムで、業務への影響が少ないという利点がありますが、実装はより困難です。一方、クエリベースのCDCはより柔軟で使いやすいですが、レイテンシが高く、業務に影響を与えたり、データ欠落が発生したりする可能性があります。したがって、CDCテクノロジーの選択は、具体的なシナリオと要件に基づいて行う必要があります。