CData Sync V23 : Apache Kafka 同期先でテーブル定義の変更をサポート

by 浦邊信太郎 | 2023年05月30日

CData Sync はデータソースのテーブル定義が変更された際に、データソースに合わせて同期先のテーブル定義を変更する機能があります。この機能を有効にするにはジョブ設定で以下のように[スキーマの変更]をチェックします(デフォルトではチェックされた状態になっています)。

しかし、同期先によってスキーマの変更がサポートされないものがあります。Apache Kafka はこれまでスキーマの変更がサポートされていませんでしたが、今回、CData Sync V23 へのバージョンアップにより、カラムの追加を伴うテーブル定義の変更*が可能になりました。

*変更対象はカラムの追加のみで、カラムの削除やカラムサイズの変更は同期先スキーマに反映されません。

以下に実行例を示します。

データソースにSalesOrders というテーブルを用意し、これをApache Kafka に同期します。SalesOrders は以下のようにProductCode, ProductName, Quantity の3つのカラムを持ちます。実行例では同期先テーブルが無い状態でProductCode とProductName の2つのカラムを同期し、続いて3つのカラムを同期します。

1回目の同期

以下のようにProductCode とProductName の2つのカラムを同期します。

同期結果

以下のようにApache Kafka にテーブルが構築され、ProductCode とProductName の2つのカラムが同期されました。(このデータはDB Visualizer + CData Apache Kafka JDBC Driver で参照しています。)

2回目の同期

以下のようにProductCode とProductName に加えてQuantity を同期します。

同期結果

同期を実行した結果を示します。
同期先に新たに追加したカラム「Quantity」が追加されています。

Syncは同期の前にスキーマを比較し、変更があるとCreate Table 文を発行して既存のスキーマを上書きします。Schema Registory に登録されているスキーマは更新に応じてバージョンが付与されます。今回、最初に同期したときに作成したスキーマのバージョンは1 ,スキーマ変更時のバージョンは2 となります。

Schema Regisotry のAPI にアクセスすると各バージョンのスキーマを取得できます。今回同期したSalesOrders トピックについてバージョン1 のスキーマを見ると、ProductCode とProduct Name の二つのカラムが定義されていることが分かります。

URL

http://xx.xx.xx.xx/subjects/salesorders-value/versions/1

スキーマ

{"subject":"salesorders-value","version":1,"id":84,"schema":"{\"type\":\"record\",\"name\":\"salesorders_schema\",\"fields\":[{\"name\":\"ProductCode\",\"type\":[\"null\",\"string\"]},{\"name\":\"ProductName\",\"type\":[\"null\",\"string\"]}]}"}

つづいてバージョン2 のスキーマを見るとカラムQuantity が追加されていることが分かります。

URL

http://xx.xx.xx.xx/subjects/salesorders-value/versions/2

スキーマ

{"subject":"salesorders-value","version":2,"id":85,"schema":"{\"type\":\"record\",\"name\":\"salesorders_schema\",\"fields\":[{\"name\":\"ProductCode\",\"type\":[\"null\",\"string\"]},{\"name\":\"ProductName\",\"type\":[\"null\",\"string\"]},{\"name\":\"Quantity\",\"type\":[\"null\",\"int\"]}]}"}

このようにSync のApache Kafka 同期先はスキーマを変更するたびに新しいスキーマで上書きしていきます。

おわりに

本記事ではCData Sync V23 で新たに追加された機能の一つとして、Apache Kafka 同期先のスキーマ変更機能を紹介しました。CData Sync V23 は30日間無料でお使いいただけます。 Apache Kafka との連携をご検討の方はぜひお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。