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 table1 対多マッピング
ソーステーブルから複数の結果テーブルへデータをコピーするには、複数のルーティングルールを定義します。以下のコードは、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複数の 1 対 1 マッピング
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 データベース内の対応するテーブルへ同期します。テーブル名は変更しません。
route:
- source-table: source_db.\.*
sink-table: sink_db.<>
replace-symbol: <>
description: route all tables in source_db to sink_db<> はソーステーブル名を表すプレースホルダーであり、ソーステーブルから結果テーブルへの 1 対 1 マッピングを可能にします。
高度なルーティングルール
ルートモジュールは、キャプチャグループによる置換をサポートしています。
source-table の正規表現内で括弧を使用してキャプチャグループを作成し、sink-table 内では $1、$2 のようにキャプチャされた内容を参照できます。
代表的なユースケースとそのルーティングルールは以下のとおりです:
キャプチャされたデータベース名にプレフィックスを追加し、テーブル名はそのまま保持する:
route: - source-table: (\.*).(\.*) sink-table: ods_$1.$2最初のキャプチャグループ (
$1) は完全なデータベース名にマッチし、2 番目のキャプチャグループ ($2) は完全なテーブル名にマッチします。最終的な結果テーブル ID は、これらを組み合わせたものになります。キャプチャされたデータベース名およびテーブル名の両方にプレフィックスを追加する:
route: - source-table: (\.*).(\.*) sink-table: ods_$1.upstream_$2キャプチャされたデータベース名およびテーブル名を 1 つのデータベース内の単一の結果テーブル名に結合する:
route: - source-table: db_no_(\.*).table_no_(\.*) sink-table: sink_db.table_$1_$2このルールは、2 つのキャプチャグループ(
db_no_100.table_no_300→100および300)を抽出し、データを結果テーブルsink_db.table_100_300に書き込みます。