Data Integration — Debezium リリース

Kenta Kosugi
6 min readApr 16, 2020

--

Red Hat Integartion 2020–04 がリリースされ、Debezium が利用可能となりました。Debezium は on OpenShiftと on RHEL で利用できますが、on RHEL は 2020–04 において Tech Preview です。

Debezium でどんなことができるかはこちらをご覧ください。

利用可能な DB は以下の通りです。

  • MySQL 5.7/8.0
  • PostgreSQL 10/11/12
  • SQL Server 2017
  • MongoDB 3.6/4.0/4.2

Debezium はデータベースに発生したチェンジイベントを AMQ Streams(Apache Kafka)のトピックに格納し、他のデータソースへ伝播することを可能にします。

Apache Kafka の Connector であるため on OpenShift、on RHEL にかかわらず AMQ Streams を構築しておく必要があります。

Apache Kafka はトピックを複数のパーティションに分割して利用(シャーディング)することができますが、パーティションを分割すると順序が保証されないため、Debezium を利用する場合。トピックのパーティションは 1 にすることを推奨します(※)。

※Apache Kafka にデータをいれる Producer が任意のキーを指定して特定のパーティションに入れるようにすればパーティション内での順序は保証されます。

この点は以下のドキュメントの「2.2. Kafka topic creation recommendations」にある Other topics — single partition にも記載がありますのでご確認ください。

Debezium のユースケースは Tech Preview のときの記事にいくつか記載していますが、再度いくつか例を挙げてみたいと思います。

CDC を利用してデータ指向アプリケーションデザインの適用

上記の「データ指向アプリケーションのデザイン」は最終的にイベントベースのアプリケーションに置き換えるという話をしています。

イベントにはドメインイベントとチェンジイベントがあり、ドメインイベントをアプリケーションに適用しようとすると結構な労力がかかります。そこでまず、チェンジイベントを適用して、つまり Change Data Capture を適用してデータの利用側のモダナイズを計り、最終的にはコマンド(データベースへの INSERT / UPDATE)側をドメインイベントに対応させるというシナリオです。

この辺りの話は以下の記事を読むと助けになるかと思います。

Debezium は Apache Kafka の Connector として開発されているため、Apache Kafka の恩恵を受けることができます。本シナリオの通り、ある一つのデータベースを更新すれば、そのチェンジイベントを利用して複数のデータソースにデータを適用することができます。また、メッセージは(コンパクションがおこなわれない設定にすれば)ストレージが許す限り保存することが可能です。Consumer がメッセージを取得してもトピックからメッセージが消えるということはありません。イベントベースなアプリケーションを構築するにあたってイベントストアとして必要となります。
また、Apache Kafka の分散システムによって高スループット・可用性を保証することができます。

データ仮想化と組み合わせたケース

既存のデータベースに手をいれずにドメイン駆動設計の概念を適用することができます。

  1. 既存のデータベースにおけるデータをドメインモデルに適した形で仮想データベースを作成 — Data Virtualization
  2. 読み込みに適したモデルへ仮想 DB を作成 — Data Virtualization
  3. Command は仮想 DB に対して書き込み
  4. データベースのチェンジイベントをインメモリキャッシュへ反映 — Debezium
  5. 仮想 DB から Query が読み込み
ドメイン駆動設計(DDD)と Debezium & Data Virtualization

最後に

CDC が Tech Preview のときにはデータのレプリケーションなどもユースケースとして挙げていましたが、現時点で利用可能な DB で現実的に使えるのは SQL Server 2017 でしょうか。

将来的には使用できるデータベースも増えそうなので期待していただければと思います。

--

--

Kenta Kosugi

Javaアプリケーションサーバーの開発からCORBA製品のサポート、QA、証券外務員(第一種免許)、ストレージ屋、アーキテクト、SaaS屋と一貫性のない道を歩んでいます。Red Hatに復帰しました。