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フォーマットでトピックにデータを書き出す内容になっています。
スキーマレジストリと組み合わせて連携させる場合は、下記の二点の設定を参考に設定します。
- KCOP でデフォルト CDC アプライ動作をエミュレートできるようにする
- IBM Event Streams バージョン 10 の使用
2の設定の中で、「スキーマレジストリを使用してメッセージをシリアル化する場合は、次の手順に従います。」の暗号化プロファイルの設定は忘れずに行う必要があります。
KCOP でデフォルト CDC アプライ動作をエミュレートできるようにする
手順
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