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

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 との連携をご検討の方はぜひお試しください。

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

関連コンテンツ