DataWorks, HybridDB for MySQL ile diğer veri kaynakları arasında veri senkronizasyonu yapmak için HybridDB for MySQL Reader ve HybridDB for MySQL Writer bileşenlerini sunar.
Sınırlamalar
HybridDB for MySQL Reader tabloları ve görünümleri okuyabilir. Bir tabloyu okurken tüm sütunları veya bir alt kümesini seçebilir, sütunların sırasını değiştirebilir, sabit alanlar ekleyebilir ve
now()gibi HybridDB for MySQL işlevlerini kullanabilirsiniz.Toplu senkronizasyonda görünümler desteklenir.
Veri türü eşlemeleri
HybridDB for MySQL Reader ve Writer veri türlerini aşağıdaki şekilde eşler.
| Kategori | HybridDB for MySQL veri türleri | Notlar |
|---|---|---|
| Tamsayı | INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT, YEAR | TINYINT(1) tamsayı veri türü olarak değerlendirilir |
| Kayan nokta | FLOAT, DOUBLE, DECIMAL | |
| Dize | VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | |
| Tarih ve saat | DATE, DATETIME, TIMESTAMP, TIME | |
| Boole | BOOL | |
| İkili | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Yukarıda listelenmeyen veri türleri desteklenmez.
Veri kaynağı ekleme
Bir senkronizasyon görevi oluşturmadan önce HybridDB for MySQL veri kaynağını DataWorks'e ekleyin. Talimatlar için bkz. Veri kaynağı yönetimi. Veri kaynağını eklerken parametre açıklamalarını DataWorks konsolunda bulabilirsiniz.
Veri senkronizasyonu görevi geliştirme
Tek bir tablodan veri senkronize etme
Aşağıdaki yöntemlerden birini kullanın:
Kod düzenleyici için tam parametre listesi ve örnek kod için bkz. Ek: Kod ve parametreler.
Bir veritabanından tüm verileri senkronize etme
Bkz. Gerçek zamanlı tam veritabanı senkronizasyonu görevini yapılandırma.
Ek: Kod ve parametreler
HybridDB for MySQL Reader
Örnek kod
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "px_aliyun_hymysql",
"column": [
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"where": "id=10001",
"splitPk": "id",
"table": "person"
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 7,
"throttle": true,
"mbps": 1
}
}
}
Parametreler
| Parametre | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
datasource |
Veri kaynağının adı. DataWorks'te yapılandırılan adla eşleşmelidir. | Evet | Yok |
table |
Kaynak tablonun adı. Her senkronizasyon görevi tek bir tablodan okuma yapar. | Evet | Yok |
column |
Okunacak sütunlar, JSON dizisi olarak belirtilir. Tüm sütunları okumak için ["*"] kullanın. Sıralama değişikliği, sabit değerler ve ifadeler desteklenir; örneğin, ["id", "table", "1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2.3", "true"]. |
Evet | Yok |
splitPk |
Paralel okumalar için verileri parçalara ayırmada kullanılan sütun. En eşit dağıtım için birincil anahtar sütunu olarak ayarlayın. Yalnızca tamsayı sütunları desteklenir; dize, kayan nokta ve tarih sütunları yoksayılır ve okuyucu tek iş parçacığına geri döner. | Hayır | Yok |
where |
Satırları filtrelemek için WHERE yan tümcesi; örneğin yalnızca bugünün verilerini okumak için gmt_create > $bizdate. Tüm satırları okumak için boş bırakın. LIMIT yan tümcelerini kullanmayın. |
Hayır | Yok |
querySql |
Gelişmiş filtreleme veya çoklu tablo birleştirmeleri için özel SQL. Ayarlandığında table, column, where ve splitPk parametrelerini geçersiz kılar. |
Hayır | Yok |
singleOrMulti |
Parçalanmış tablolar için gereklidir. multi olarak ayarlayın. |
Evet (yalnızca parçalanmış tablolar) | multi |
Parçalanmış bir tabloyu doğrudan kod düzenleyicide yapılandırırken (kodsuz arayüzden geçiş yapmadan), "singleOrMulti": "multi" otomatik olarak oluşturulmaz. Bu parametreyi manuel olarak ekleyin. Bu parametre olmadan okuyucu verileri yalnızca ilk parçadan okur.
querySqlayarlandığında okuyucutable,column,wherevesplitPkparametrelerini yoksayar. Bağlantı kimlik bilgileri hâlâdatasourceparametresinden okunur.
HybridDB for MySQL Writer
Örnek kod
{
"type": "job",
"steps": [
{
"parameter": {}
},
{
"parameter": {
"postSql": [],
"datasource": "px_aliyun_hy***",
"column": [
"id",
"name",
"sex",
"salary",
"age",
"pt"
],
"writeMode": "insert",
"batchSize": 256,
"encoding": "UTF-8",
"table": "person_copy",
"preSql": []
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 7,
"throttle": true,
"mbps": 1
}
}
}
Yazma modları
| Mod | Çakışma olmadığında davranış | Birincil anahtar veya benzersiz dizin çakışması olduğunda davranış |
|---|---|---|
insert (varsayılan) |
Verileri doğrudan yazar | Çakışan satırlara yazılamaz; çakışan veriler kirli veri olarak kabul edilir |
replace |
Verileri doğrudan yazar | Çakışan satırlardaki belirtilen alanları günceller |
Parametreler
| Parametre | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
datasource |
Veri kaynağının adı. DataWorks'te yapılandırılan adla eşleşmelidir. | Evet | Yok |
table |
Hedef tablonun adı. | Evet | Yok |
writeMode |
Yazma modu. Yukarıdaki Yazma modları bölümüne bakın. | Hayır | insert |
column |
Yazılacak sütunlar, JSON dizisi olarak belirtilir; örneğin, ["id", "name", "age"]. Tüm sütunlara yazmak için ["*"] kullanın. |
Evet | Yok |
preSql |
Senkronizasyon görevinden önce çalıştırılacak SQL deyimi; örneğin eski verileri silmek için. Kodsuz arayüz tek bir deyim destekler; kod düzenleyici birden fazla deyimi destekler. | Hayır | Yok |
postSql |
Senkronizasyon görevinden sonra çalıştırılacak SQL deyimi; örneğin zaman damgası eklemek için. Kodsuz arayüz tek bir deyim destekler; kod düzenleyici birden fazla deyimi destekler. | Hayır | Yok |
batchSize |
Her partide yazılacak kayıt sayısı. İş yükünüze göre ayarlayın. Çok büyük bir değer bellek yetersizliği (OOM) hatalarına neden olabilir. | Hayır | 1.024 |