DUICUO

このオープンソース ツールを使用して、データベースを簡単に同期できます。

変更データキャプチャ(CDC)は、サーバー側エージェントを使用して、データテーブルに対する様々な操作をログに記録、追加、更新、削除します。データ変更に関する詳細情報を、使いやすいリレーショナル形式で提供します。ターゲット環境で変更された行に変更を適用するために必要な列情報とメタデータをキャプチャできます。この情報は、追跡対象のソーステーブルの列構造に対応する変更テーブルに保存されます。

変更されたデータのキャプチャは容易ではありません。しかし、オープンソースプロジェクトであるApache SeaTunnelは、CDC(データキャッチアップ)機能の設計理念と機能セットを備えたデータ統合プラットフォームであり、このキャプチャを可能にし、前述の製品を含む既存製品を超えるソリューションを提供します。

ユースケース

CDCの典型的な応用例としては、異機種データベース間のデータ同期またはバックアップが挙げられます。MySQL、PostgreSQL、MariaDBなどのデータベース間でデータを同期できます。また、全文検索エンジンへのデータ同期もその一つです。CDCを使用すれば、CDCによって取得されたデータに基づいてバックアップを作成できます。

適切に設計されたデータ分析システムは、既存のシステムに分析プロセスを埋め込むことなく、ターゲット データ テーブルの変更をサブスクライブすることで、処理対象のデータを取得できます。

マイクロサービス間でデータ状態を共有する

マイクロサービスは現在人気ですが、マイクロサービス間での情報共有は複雑な作業となることがよくあります。CDC(データ検出と解決)は、その解決策の一つです。マイクロサービスはCDCを使用することで、他のマイクロサービスからデータベースの変更を取得し、データ状態の更新を取得し、対応するロジックを実行できます。

キャッシュを更新する

コマンド・クエリ責務分離(CQRS)は、コマンドアクティビティとクエリアクティビティを分離します。これら2つは根本的に異なります。

  • このコマンドはデータ ソースにデータを書き込みます。
  • クエリはデータ ソースからデータを読み取ります。

疑問は、読むイベントはいつ発生するのか、書くイベントはいつ発生するのか、そしてこれらのイベントの責任は誰が負うのか、ということです。

キャッシュの更新は難しい場合があります。CDCを使用すると、データベースからデータ更新イベントを取得し、キャッシュを更新するか無効化するかを制御できます。

CQRS設計では通常、ビジネスクエリと変更操作をサポートするために、2つの異なるストレージインスタンスを使用します。データの一貫性を確保するには、分散トランザクションを使用して強力なデータ一貫性を確保できますが、可用性、パフォーマンス、スケーラビリティは犠牲になります。あるいは、CDCを使用して最終的なデータ一貫性を確保することもできます。CDCは優れたパフォーマンスとスケーラビリティを提供しますが、データレイテンシが犠牲になります。現在、業界平均ではレイテンシは数ミリ秒以内に抑えられています。

例えば、CDCを使用してMySQLから全文検索エンジン(Elasticsearchなど)にデータを同期できます。このアーキテクチャでは、Elasticsearchはすべてのクエリを検索しますが、データを変更する必要がある場合、Elasticsearchを直接操作することはできません。上流のMySQLデータを変更する必要があり、更新イベントが生成されます。Elasticsearchがデータベースを監視すると、このイベントがシステムによってキャプチャされ、Elasticsearchに更新が通知されます。

一部の CQRS システムでは、同様の方法を使用してクエリ ビューを更新できます。

問題点

CDCは新しい概念ではなく、多くの既存プロジェクトで実装されています。しかし、多くのユーザーにとって、既存のソリューションにはいくつかの欠点があります。

単一データテーブル構成

一部のCDCソフトウェアを使用する場合、各テーブルを個別に設定する必要があります。例えば、10個のテーブルを同期するには、ソースSQL文を10個、集計シンクSQL文を10個記述する必要があります。

テーブルを手動で記述できる場合もありますが、これは小規模なデータセットにのみ適しています。大規模なデータセットを扱う場合、型マッピングやパラメータ設定にエラーが発生し、運用コストや保守コストが増加する可能性があります。

SeaTunnel は、この問題を解決することを約束する、使いやすいデータ統合プラットフォームです。

パターンの進化はサポートされていません

一部のCDCソリューションはDDLイベントの配信をサポートしていますが、変更を同期するためのシンクノードへの配信はサポートしていません。変換の型情報はDDLイベントに基づいて変更できないため、イベントを取得できるCDCであっても、それをエンジンに送信できない場合があります(つまり、シンクノードはDDLイベントに従って変更を加えることができません)。

リンクが多すぎる

一部のCDCプラットフォームでは、複数のテーブルがある場合、1つのテーブルを同期すると、そのテーブルを表すために接続を使用する必要があります。これは、複数のテーブルがある場合、多くの接続が必要になることを意味します。これにより、ソースJDBCデータベースに負荷がかかり、binlogが過剰になり、ログ解析の重複が発生します。

SeaTunnel CDCアーキテクチャの目標

Apache SeaTunnelは、オープンソースで効率的な分散型大規模データ統合フレームワークです。既存のデータ統合ツールでは解決できない問題を解決するため、開発者コミュニティは「車輪の再発明」を行い、独自の機能を備えたCDCプラットフォームを開発しました。そのアーキテクチャは、既存ツールの利点を取り入れながら、それぞれの欠点を排除しています。

Apache Seatunnel は以下をサポートします:

  • ロックフリーで並列に履歴データをスナップショットします。
  • ハートビートの検出とデータ テーブルの動的な追加をログに記録します。
  • サブデータベース、サブテーブル、およびマルチ構造テーブルを読み取ります。
  • パターンの進化。
  • すべての基本的な CDC 機能。

ユーザーの運用および保守コストを削減し、データ テーブルの動的な追加をサポートします。

たとえば、データベース全体を同期していて、後で新しいテーブルを追加する必要がある場合、手動でメンテナンスしたり、構成を変更したり、現在のジョブを再起動したりする必要はありません。

さらに、Apache SeaTunnelは、サブデータベース、サブテーブル、およびマルチ構造テーブルの並列読み取りをサポートしています。また、スキーマの進化、DDL変換、そしてエンジン内でサポートされているスキーマの変更もサポートしており、これらはTransformノードとSinkノードとして実装できます。

SeaTunnel CDCステータス

現在、CDCは増分フェーズとスナップショットフェーズをサポートする基本機能を備えています。また、MySQLとのリアルタイムおよびオフラインでの使用もサポートしています。リアルタイムMySQLテストは完了しており、オフラインテストは間もなく開始されます。コンバーターと集計ノードの変更を伴うため、スキーマサポートはまだ利用できません。新しく追加されたテーブルの動的検出はサポートされていませんが、マルチ構造テーブルをサポートするインターフェースがいくつか予約されています。

プロジェクトの展望

ApacheインキュベートプロジェクトであるApache SeaTunnelコミュニティは急速に成長しています。次回のコミュニティ計画会議の主な目標は以下のとおりです。

1. コネクタとカタログのエコシステムを開発および改善します。

私たちは、次のようなコネクタとカタログの機能の改善に取り組んでいます。

  • TiDB、Doris、Stripe など、より多くのデータベースへの接続をサポートします。
  • 既存のコネクタの使いやすさとパフォーマンスを向上します。
  • リアルタイムの増分同期シナリオ用の CDC コネクタをサポートします。

コネクタに興味のある方は、Umbrella をチェックしてみてください。

2. より多くのデータ統合シナリオをサポート(SeaTunnelエンジン)

既存のエンジンには、データベース全体の同期、テーブル構造の変更の同期、粒度の高いタスクの失敗の処理など、まだ解決されていない問題点がいくつかあります。

私たちはこれらの問題の解決に取り組んでおり、関心のある方はトピック #2272 を参照してください。

3. 使いやすさが向上(Web版)

操作を簡素化するためのWebインターフェースの提供に取り組んでいます。このWebインターフェースでは、ディレクトリ、コネクタ、タスク、および関連情報をDAG/SQL形式で表示できるようになります。また、タスク管理を容易にするために、スケジュールプラットフォームへのアクセスも提供します。

Web バージョンの詳細については、Web プラットフォーム サブプロジェクトをご覧ください。

要約

データベースのアクティビティは、データの更新、削除、追加を管理するために、多くの場合、綿密な追跡が必要です。CDCはこの機能を提供します。オープンソースソリューションであるApache SeaTunnelは、これらのニーズを満たし、今後も継続的にイテレーションとアップデートが行われ、より多くの機能を提供していきます。このプロジェクトとコミュニティは非常に活発に活動しており、ぜひご参加ください。

(タイトル: MJ: 高解像度、非常に詳細なデータベース接続の図、8k)