route modülü, bir Flink CDC işlem hattında kaynak tabloları hedef tablolarla eşler. Tabloları yeniden adlandırmak, birden çok kaynak tabloyu tek bir hedef tabloda birleştirmek veya tek bir kaynak tabloyu birden çok hedefe çoğaltmak gerektiğinde yönlendirme kurallarını yapılandırın.
Parametreler
| Parametre | Açıklama | Gerekli |
|---|---|---|
source-table |
Eşlenecek kaynak tablo. Düzenli ifadeler desteklenir. | Gerekli |
sink-table |
Verilerin yazılacağı hedef tablo. replace-symbol yer tutucularını ve yakalama grubu başvurularını ($1, $2, ...) destekler. |
Gerekli |
replace-symbol |
sink-table değerine gömülen bir yer tutucu dizesi. Çalışma zamanında, sink-table içindeki bu yer tutucunun her örneği gerçek kaynak tablo adı ile değiştirilir. Değer boş bir dize olmamalıdır. Örneğin, replace-symbol parametresini <> olarak ve sink-table parametresini sinkdb.<> olarak ayarlayın. Çalışma zamanında <> ifadesi kaynak tablo adı ile değiştirilir: table1 kaynak tablosu sinkdb.table1 hedefine, table2 kaynak tablosu ise sinkdb.table2 hedefine yazılır. Kaynak tablo adlarına ön ek veya son ek eklemeden doğrudan aktarmak için sink-table parametresini doğrudan <> olarak ayarlayın. |
İsteğe bağlı |
description |
Yönlendirme kuralının açıklaması. | İsteğe bağlı |
Route modülünde değişiklik yaptıktan sonra yeni yönlendirme kurallarını uygulamak üzere durum bilgisi içermeyen başlatma (stateless startup) yapın.
Örnekler
Tek tablo senkronizasyonu
mysql_db.web_order kaynağındaki verileri sink_db.ods_web_order hedefine yönlendirin:
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
Bire çok eşleme
Bir kaynak tabloyu birden çok hedef tabloya çoğaltmak için aynı source-table değerini paylaşan birden çok yönlendirme kuralı tanımlayın. Aşağıdaki kurallar, mydb.orders tablosunu aynı anda hem sink_db.orders hem de backup_sink_db.orders hedeflerine çoğaltır:
route:
- source-table: mydb.orders
sink-table: sink_db.orders
- source-table: mydb.orders
sink-table: backup_sink_db.orders
Birden çok bire bir eşleme
YAML liste göstergesini (-) kullanarak birden çok bağımsız kural tanımlayın. Tüm kurallar eş zamanlı olarak uygulanır:
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
Parçalı tabloları birleştirme
source_db veritabanındaki tüm tabloları tek bir hedef tablo olan sink_db.merged içinde birleştirin:
route:
- source-table: source_db.\.*
sink-table: sink_db.merged
description: merge sharded tables to a unified sink table
Veritabanı senkronizasyonu
source_db veritabanındaki tüm tabloları, tablo adlarını değiştirmeden sink_db veritabanındaki karşılık gelen tablolara senkronize edin. sink-table parametresindeki <> yer tutucusu, eşleşen her kaynak tablo adı ile değiştirilir; böylece source_db.XXX kaynağı sink_db.XXX hedefine yönlendirilir:
route:
- source-table: source_db.\.*
sink-table: sink_db.<>
replace-symbol: <>
description: route all tables in source_db to sink_db
Yakalama grupları ile gelişmiş yönlendirme
source-table düzenli ifadesinde parantez kullanarak yakalama grupları oluşturun ve yakalanan değerleri sink-table parametresinde $1, $2 gibi referanslarla kullanın.
Veritabanı adlarına ön ek ekleyin, tablo adlarını değişmeden bırakın:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.$2
$1 tam veritabanı adını, $2 ise tam tablo adını yakalar.
Hem veritabanı hem de tablo adlarına ön ek ekleyin:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.upstream_$2
Veritabanı ve tablo adlarını tek bir hedef tabloda düzleştirin:
route:
- source-table: db_no_(\.*).table_no_(\.*)
sink-table: sink_db.table_$1_$2
Örneğin, db_no_100.table_no_300 ifadesi 100 ve 300 yakalama gruplarıyla eşleşir ve sink_db.table_100_300 hedefine yönlendirilir.