概要
スキーマ自動追従とは、データソース側のスキーマ変更を、転送先にも自動追従させる機能です。
転送元のカラムやテーブル追加・変更・削除を転送先で手動設定する運用負荷を減らせるとともに、データの整合性担保も容易になります。
設定できる項目
スキーマ変更通知設定
データソースのスキーマ変更を検知し、Slackやメールで通知するよう設定できます。
CDC転送設定概要にて設定が可能です。
後述する追従設定にかかわらず、スキーマ変更通知は有効にすることを推奨します。
特に自動同期しないを選択した場合は、通知がないとスキーマ変更に気づけず対応が遅れるリスクがあります。
追加されたテーブル・カラムの追従設定
転送先に自動追従させるスキーマ変更の対象を設定できます。
バックフィル設定
カラム追加などのテーブル全体の再同期が必要なスキーマ変更を追従させる場合に、全件再転送(バックフィル)を行うかを設定できます。
機能詳細
追加されたテーブル・カラムの追従設定
自動追従する対象は以下の3つから選択が可能で、追従したい差分にあわせて設定ができます。
- テーブル・カラムを自動同期
- カラムのみを自動同期
- 自動同期しない
本設定に関わらず、テーブル・カラムの削除とカラムの型変更はTROCCOの自動変更の対象となります。
なお、テーブル・カラムの削除の場合は、転送先のテーブル・カラムは削除されず、対象データの転送停止のみ行われます。
転送先のテーブル・カラムの削除は手動で行う必要があります。
テーブル・カラムを自動同期
テーブルとカラムの追加を自動同期します。スキーマ変更を完全自動化したい場合に推奨します。
転送元のカラム・テーブルの変更をすべて自動で転送先に反映できますが、意図しないテーブルの追加などにはご注意ください。
自動追従の対象となる新規テーブルは、プライマリーキーを持つテーブルのみです。
プライマリーキーがないテーブルは自動追従の対象から除外されます。
カラムのみを自動同期
カラムの追加のみを自動同期します。運用の負荷を抑えたい場合に推奨します。
テーブルの追加が発生した場合は、変更の転送先への反映を促すダイアログが表示されます。
自動追従しつつ、テーブル追加は手動にすることで、CDCデータ転送対象としたくないテーブルの混入を防げます。
特定のテーブルのみを自動追従の対象とし、テーブルの追加は承認制としたい場合に利用します。
自動同期しない
テーブル・カラムの追加検知のみ行い、転送先への反映は承認の上で実施するモードです。
セキュリティ観点で意図しないカラムが転送されていないかチェックしたいケースなど、転送先のスキーマ変更を慎重に行いたい場合に利用します。
既存のテーブルからプライマリーキーを削除し、テーブルがプライマリーキーを持たなくなった場合、テーブルは自動追従の対象から除外されます。
カラム名やテーブル名の変更は、カラムやテーブルの削除+追加として検知されます。
また、カラム名を変更する場合は、整合性を担保するためにバックフィルを有効にすることを推奨します。
自動同期しないスキーマ更新の反映
自動同期の対象外のスキーマ更新を検知した場合や、スキーマ設定画面でスキーマを更新した場合などに、テーブルの再読み込みを促すダイアログが表示されます。

更新後、変更されたテーブルを再読み込みするを選択することで、テーブル全体の再読み込みを実行できます。
バックフィル
CDCスキーマ自動追従では、データの整合性を保つために、特定の変更があった場合にテーブルのバックフィル(全件再転送)を実行できます。
バックフィルの対象となるスキーマ変更は以下のとおりです。
- カラムの追加
- カラムの型の変更
- テーブルの追加
バックフィルを有効にした場合の追従設定の種類とスキーマ変更の種別ごとの挙動は、以下に改めてまとめています。
| 変更種別 | テーブル・カラムを自動同期 | カラムのみを自動同期 | 自動同期しない |
|---|---|---|---|
| テーブル追加 | 自動追加 + バックフィル | 追加しない | 追加しない |
| テーブル削除 | 転送停止 | 転送停止 | 転送停止 |
| カラム追加 | 自動追加 + バックフィル | 自動追加 + バックフィル | 追加しない |
| カラム削除 | 転送停止 | 転送停止 | 転送停止 |
| カラム型変更 | 自動更新 + バックフィル | 自動更新 + バックフィル | 自動更新 + バックフィル |
転送設定でバックフィルを無効に設定した場合、転送先とのテーブル再同期は実行されず、不整合が発生する可能性があります。
- カラム追加時:
- 転送先がS3 Icebergの場合:新しいカラムは転送先に追加されるが、既存データは反映されずNULLとなる
- 転送先がBigQueryの場合:転送先のスキーマが更新されないため転送エラーとなる
- カラム型変更時:データ型の不整合により転送エラーが発生する可能性がある
- テーブル追加時:転送先にテーブルが追加されない
通常の初回転送(全件転送)と同様、バックフィルが実行された場合は既存の対象テーブルは削除・再生成されます。
そのため、S3 Icebergでは、テーブルのスナップショット履歴も削除されます。
バックフィルによる全件再転送では、テーブルごとに全件転送が行われます。
操作例
「追加されたテーブル・カラムの追従設定」を「カラムのみを自動追従」とした場合
転送設定STEP1の詳細設定にて、「追加されたテーブル・カラムの追従設定」を「カラムのみを自動追従」、バックフィル設定を「有効」にします。

転送元にカラムを追加し転送を実行すると、転送先のスキーマも自動追従し、カラムが追加されます。CDC転送設定の変更履歴にて、スキーマ変更の詳細が確認できます。

「追加されたテーブル・カラムの追従設定」を「自動同期しない」とした場合
「追加されたテーブル・カラムの追従設定」を「自動同期しない」とした場合は、スキーマ変更検知時に追従の承認を促す通知が表示されます。

「詳細を確認」をクリックすると、スキーマ変更の確認ができます。

転送先に反映したいスキーマ変更を選択して、「更新する」をクリックします。
スキーマ変更保存時にバックフィルを実行するかを選択し、「更新する」をクリックして、転送先にスキーマ変更を反映します。