IBM TechXchange Integration Group Japan

IBM TechXchange Integration Group Japan

 View Only

IBM Data ReplicationのChange Data Captureを使って、Db2のデータとスキーマ情報をIBM Event Streamsに連携する。

By HIDEO SAITOH posted Thu September 18, 2025 02:35 AM

  

IBM Data ReplicationのChange Data Captureを使って、Db2のデータとスキーマ情報をIBM Event Streamsに連携する。

Change Data Capture(CDC)とIBM Event Streamsを組み合わせることで、データベースの変更をリアルタイムでEvent Streams(Kafka)にストリーミングできます。さらに、スキーマレジストリと連携することで、データの整合性を保ち、効率的なデータ連携を実現します。

概要

IBM Event Streamsは、Apache Kafkaをベースとしたイベントストリーミングプラットフォームです。これにIBM Data ReplicationのCDCツールを組み合わせることで、データベースへの変更(挿入、更新、削除)をリアルタイムにキャプチャし、イベントとしてKafkaトピックに発行できます。

このプロセスでは、変更されたレコードのデータだけでなく、そのスキーマ情報も重要です。スキーマレジストリは、これらのスキーマを集中管理する役割を担います。CDCツールが変更をキャプチャする際に、スキーマレジストリにスキーマを登録または参照し、Avroなどの形式でイベントデータをシリアライズします。これにより、データコンシューマーは、受け取ったイベントを正しく解釈できるようになります。

メリット

IBM Event Streams, CDC, そしてスキーマレジストリを連携させる主なメリットは以下の通りです。

リアルタイムのデータ連携

CDCは、データベースの変更ログを直接読み取るため、データベースへの負荷を最小限に抑えながら、ほぼリアルタイムでデータ変更をキャプチャできます。これにより、アナリティクス、マイクロサービス間のデータ同期、イベント駆動型アーキテクチャなど、さまざまなユースケースで鮮度の高いデータを活用できます。

データの整合性と互換性の確保

スキーマレジストリを使用することで、データのProducer(CDCツール)とConsumer(アプリケーション)の間でスキーマの互換性を確保できます。スキーマが変更された場合でも、スキーマレジストリの互換性チェック機能により、互換性のない変更を検知し、データパイプラインの破損を防ぐことができます。これにより、システムの信頼性と堅牢性が向上します。

効率的なデータシリアライズ

Avroなどのデータフォーマットは、JSONなどと比較してコンパクトで効率的です。スキーマ情報を別途スキーマレジストリに保存することで、各メッセージにスキーマ情報を含める必要がなくなり、ネットワークトラフィックとストレージのオーバーヘッドを大幅に削減できます。

柔軟なデータ活用

リアルタイムにストリーミングされるデータは、複数のダウンストリームアプリケーションで再利用できます。例えば、BIツールで分析したり、検索エンジンにインデックスを付けたり、他のマイクロサービスと同期したりすることが可能です。データがKafkaに一元化されることで、データの「単一の信頼できる情報源」が構築され、さまざまな用途に柔軟に対応できるプラットフォームが実現します。

IBM Data ReplicationとIBM Event Streamsの設定は、こちらのブログが基本になりますが、これはJSONフォーマットでトピックにデータを書き出す内容になっています。

スキーマレジストリと組み合わせて連携させる場合は、下記の二点の設定を参考に設定します。

  1. KCOP でデフォルト CDC アプライ動作をエミュレートできるようにする
  2. IBM Event Streams バージョン 10 の使用

2の設定の中で、「スキーマレジストリを使用してメッセージをシリアル化する場合は、次の手順に従います。」の暗号化プロファイルの設定は忘れずに行う必要があります。

KCOP でデフォルト CDC アプライ動作をエミュレートできるようにする

手順

  • Management Consoleから、サブスクリプションの設定を開きます。
  • Class Nameには、com.datamirror.ts.target.publication.userexit.sample.kafka.KcopDefaultBehaviorIntegratedを設定します。
    Parameterには、プロパティファイルの場所を指定します。

    プロパティファイルの中身は、以下のように設定します。
    スキーマレジストリのURLおよび、usernameとpasswordは、Event Streamsの接続情報から取得できます。
    schema.registry.url=https://es-development-ibm-es-ac-reg-external-openshift-operators.apps.itz-g5ry1p.infra01-lb.dal14.techzone.ibm.com:443
    serializer.property.basic.auth.credentials.source=USER_INFO
    serializer.property.schema.registry.basic.auth.user.info=username:password

Replication Engine for Linuxの設定ツールから、Kafkaの暗号化プロファイルを設定します。

  • Replication Engine for Linuxの設定ツールから、Kafkaの暗号化プロファイルを設定します。
    /opt/ibm/InfoSphereDataReplication/ReplicationEngineforKafka/binにある、dmconfiguretsを実行します。

    5番のManage encryption profilesを選択して、Encryption Profileのメニューにはいります。
  • 2番のEdit encryption profileを選択し、既存のプロファイルを編集します。
    すでに作成した、noTLSという暗号なしのプロファイルがあるので、これを編集します。
  • 1番を選択して、編集を行っていきます。
    noTLSとなっているのを、TLSに変更します。
  • Engine-to-engine encryption enablementでは、1のEnabledを選択します。
    そのあと、残りは、Key storeとパスワードおよび、Trust storeとパスワード、それぞれのTypeを入力しますが、TypeはPKCS12を設定します。
  • 4番でencryption profileの設定をおわります。
  • 暗号化プロファイルの設定は以上です。
  • CDC Replication Engine for Kafkaを再起動します。
    ./dmshutdown -I ES
    ./dmts64 -I ES &

Event Streamsにトピックを作成します。

  • es.db2toes.sourcedb.db2admin.employeeというトピックを作成します。(手順は割愛します)

Management ConsoleからRefreshしてデータを送信

  • Management Consoleからサブスクリプションを選択して、Refreshを実行します。
  • Monitoringタブでログをみると、42レコードが送信されています。
  • スキーマレジストリを確認します。
    es.db2toes.sourcedb.db2admin.employee-keyとes.db2toes.sourcedb.db2admin.employee-valueというスキーマ情報が作成されています。
  • key情報
  • value情報
  • トピックの情報の確認

まとめ

IBM Event Streamsは、Apache Kafkaをベースとしたイベントストリーミングプラットフォームです。これにIBM Data ReplicationのCDCツールを組み合わせることで、データベースへの変更(挿入、更新、削除)をリアルタイムにキャプチャし、イベントとしてKafkaトピックに発行できます。

このプロセスでは、変更されたレコードのデータだけでなく、そのスキーマ情報も重要です。スキーマレジストリは、これらのスキーマを集中管理する役割を担います。CDCツールが変更をキャプチャする際に、スキーマレジストリにスキーマを登録または参照し、Avroなどの形式でイベントデータをシリアライズします。これにより、データコンシューマーは、受け取ったイベントを正しく解釈できるようになります。

#IBMEventStreams #Kafka #DataReplication

0 comments
11 views

Permalink