route モジュールは、Flink CDC パイプラインにおいてソーステーブルを結果テーブルにマッピングします。テーブル名の変更、複数のソーステーブルを 1 つの結果テーブルにマージする場合、または 1 つのソーステーブルを複数の送信先にレプリケートする必要がある場合に、ルーティングルールを設定してください。
パラメーター
| パラメーター | 説明 | 必須 |
|---|---|---|
source-table |
マッチさせるソーステーブルです。正規表現をサポートします。 | 必須 |
sink-table |
書き込み先の結果テーブルです。replace-symbol プレースホルダーおよびキャプチャグループのリファレンス($1、$2、…)をサポートします。 |
必須 |
replace-symbol |
sink-table 値に埋め込まれたプレースホルダー文字列です。ランタイムでは、sink-table 内のこのプレースホルダーのすべての発生箇所が、実際のソーステーブル名に置き換えられます。値は空文字列であってはなりません。たとえば、replace-symbol を <> に、sink-table を sinkdb.<> に設定します。ランタイムでは、<> がソーステーブル名に置き換えられ、ソーステーブル table1 は sinkdb.table1 に、ソーステーブル table2 は sinkdb.table2 に書き込まれます。プレフィックスやサフィックスを追加せずにソーステーブル名をそのまま渡すには、sink-table を直接 <> に設定してください。 |
任意 |
description |
ルーティングルールの説明です。 | 任意 |
route モジュールを変更した後は、ステートレス起動を実行して新しいルーティングルールを適用してください。
使用例
単一テーブルの同期
mysql_db.web_order のデータを sink_db.ods_web_order にルーティングします。
route:
- source-table: mysql_db.web_order
sink-table: sink_db.ods_web_order
description: sync data from a source table to a sink table一対多マッピング
ソーステーブルを複数の結果テーブルにレプリケートするには、同じ source-table を共有する複数のルーティングルールを定義します。以下のルールにより、mydb.orders が同時に sink_db.orders および backup_sink_db.orders にレプリケートされます。
route:
- source-table: mydb.orders
sink-table: sink_db.orders
- source-table: mydb.orders
sink-table: backup_sink_db.orders複数の一対一マッピング
YAML リストインジケーター(-)を使用して、複数の独立したルールを定義します。すべてのルールは同時適用されます。
route:
- source-table: mydb.orders
sink-table: ods_db.ods_orders
description: sync orders table to ods_orders
- source-table: mydb.shipments
sink-table: ods_db.ods_shipments
description: sync shipments table to ods_shipments
- source-table: mydb.products
sink-table: ods_db.ods_products
description: sync products table to ods_productsシャードテーブルのマージ
source_db のすべてのテーブルを、単一の結果テーブル sink_db.merged にマージします。
route:
- source-table: source_db.\.*
sink-table: sink_db.merged
description: merge sharded tables to a unified sink tableデータベース同期
source_db のすべてのテーブルを、テーブル名を変更せずに sink_db の対応するテーブルに同期します。<> プレースホルダーが sink-table 内で各マッチしたソーステーブル名に置き換えられるため、source_db.XXX は sink_db.XXX にルーティングされます。
route:
- source-table: source_db.\.*
sink-table: sink_db.<>
replace-symbol: <>
description: route all tables in source_db to sink_dbキャプチャグループを使用した高度なルーティング
source-table の正規表現内で括弧を使用してキャプチャグループを作成し、sink-table 内で $1、$2 などでキャプチャされた値を参照します。
データベース名にプレフィックスを追加し、テーブル名は変更しない:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.$2
$1 は完全なデータベース名を、$2 は完全なテーブル名をキャプチャします。
データベース名とテーブル名の両方にプレフィックスを追加する:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.upstream_$2
データベース名とテーブル名をフラット化して単一の結果テーブルに統合する:
route:
- source-table: db_no_(\.*).table_no_(\.*)
sink-table: sink_db.table_$1_$2
たとえば、db_no_100.table_no_300 はキャプチャグループ 100 および 300 にマッチし、sink_db.table_100_300 にルーティングされます。