に最終更新
OceanBase Schema Change Sync
OceanBase Schema Change Sync は、継続的なデータロード中に、上流の列変更を Doris のターゲットテーブルに自動的に適用します。この機能は Auto Table Creation を使用した OceanBase CDC にのみ適用されます。
実験的機能
OceanBase Schema Change Sync は Doris 4.1.4 以降で実験的機能として利用でき、MySQL 互換モードのみをサポートします。
OceanBase は MySQL CDC のスキーマ変更処理パスを使用するため、サポートされる変更と動作は MySQL と同じです。
サポートされるスキーマ変更
| OceanBase の操作 | Doris の動作 |
|---|---|
ADD COLUMN | 同じ名前の列を追加します。型は OceanBase データ型マッピング で定義されたものになり、列コメントがコピーされます。DEFAULT と NOT NULL の制約はコピーされず、履歴行のバックフィルも行われません。後続の行では、OceanBase が binlog に書き込んだ実際の値が使用されます。 |
DROP COLUMN | 同じ名前の列を削除します。 |
考慮事項
- 追加する列がすでに存在する場合、または削除対象の列が存在しない場合、再試行でジョブが失敗しないように、Doris は操作をスキップします。
FIRSTとAFTERで指定された列位置は Doris に同期されません。新しい列は既存の Doris 列の後に追加されます。CHANGE COLUMN、MODIFY COLUMN、RENAME COLUMN、DEFAULT の変更、およびNULL/NOT NULL制約の変更は自動的には同期されません。- 主キー、インデックス、パーティション、テーブル名、その他のテーブルレベルのスキーマ変更は自動的には同期されません。
- サポートされていないスキーマ変更を行う前に、継続的なデータロードジョブを一時停止し、Doris のターゲットテーブルを手動で変更して、両方のスキーマに互換性があることを確認してから、ジョブを再開してください。
- Auto Table Creation Sync はデフォルトで Schema Change Sync を有効にします。現在、Doris にはこれを無効にする SQL プロパティはありません。
例
OceanBase ソーステーブルに列を追加します。
ALTER TABLE source_db.users ADD COLUMN city VARCHAR(50);
INSERT INTO source_db.users VALUES (2, 'Alice', 'Hangzhou');
ジョブが増分データを処理した後、city 列が Doris のターゲットテーブルに表示されます。
DESC target_db.users;
+-------+--------------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-------+---------+-------+
| id | int | No | true | NULL | |
| name | varchar(100) | Yes | false | NULL | NONE |
| city | varchar(50) | Yes | false | NULL | NONE |
+-------+--------------+------+-------+---------+-------+