DRDS (PolarDB-X 1.0) veri kaynağı, verileri DRDS (PolarDB-X 1.0) üzerinden okumanıza ve yazmanıza olanak tanır. Bu konu, bu veri kaynağı için DataWorks'ün veri senkronizasyonu yeteneklerini açıklar.
Başlangıç
DRDS (PolarDB-X 1.0) ile veri senkronizasyonunu başlatmak için aşağıdaki adımları sırasıyla tamamlayın:
replace intoiznine sahip bir veritabanı hesabı oluşturun. Bkz. Önkoşullar.DRDS (PolarDB-X 1.0)'yi DataWorks'e veri kaynağı olarak ekleyin. Bkz. Veri kaynağı ekleme.
Bir senkronizasyon görevini yapılandırın ve çalıştırın. Bkz. Veri senkronizasyon görevi geliştirme.
Önkoşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
replace intoiznine sahip bir DRDS (PolarDB-X 1.0) veritabanı hesabı. Kurulum talimatları için bkz. Hesap oluşturma.
Sınırlamalar
Çevrimdışı okuma ve yazma
DRDS (PolarDB-X 1.0) eklentisi yalnızca MySQL motoruyla uyumludur. DRDS (PolarDB-X 1.0) dağıtılmış bir MySQL veritabanıdır ve iletişim protokollerinin çoğu MySQL standartlarını takip eder.
DRDS (PolarDB-X 1.0) içindeki MySQL 8.0, Serverless kaynak grupları (önerilen) ve Data Integration için özel kaynak grupları desteği sunar.
DRDS (PolarDB-X 1.0) Writer, Java Database Connectivity (JDBC) aracılığıyla uzak bir DRDS (PolarDB-X 1.0) veritabanının proxy sunucusuna bağlanır ve verileri yazmak için
replace intodeyimlerini kullanır. Yinelenen yazmaları önlemek için hedef tablonun bir birincil anahtarı veya benzersiz dizini olmalıdır.-
DRDS (PolarDB-X 1.0) Writer, verileri veri senkronizasyonu çerçevesi aracılığıyla Reader'dan alır ve ardından
replace intodeyimlerini kullanarak yazar: Writer verileri biriktirir ve DRDS (PolarDB-X 1.0) proxy sunucusuna gönderir; proxy sunucusu verilerin bir veya daha fazla tabloya yönlendirilip yönlendirilmeyeceğini belirler.Birincil anahtar veya benzersiz dizin çakışması oluşmazsa davranış,
insert intodeyimine eşdeğerdir.Çakışma oluşursa yeni satır, mevcut satırın tüm alanlarının yerine geçer.
NotGörev en az
replace intoizni gerektirir. Ek izinler,preSqlvepostSqliçinde belirtilen SQL deyimlerine bağlıdır. Görünümlerden okuma desteklenir.
Desteklenen alan türleri
DRDS (PolarDB-X 1.0) Reader ve Writer çoğu veri türünü destekler. Bir senkronizasyon görevini yapılandırmadan önce veri türlerinizin aşağıdaki listede yer aldığını doğrulayın.
| Tür kategorisi | DRDS (PolarDB-X 1.0) veri türleri |
|---|---|
| Tamsayı türleri | INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT |
| Kayan nokta türleri | FLOAT, DOUBLE, DECIMAL |
| Dize türleri | VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT |
| Tarih ve saat türleri | DATE, DATETIME, TIMESTAMP, TIME, YEAR |
| Boole türleri | BIT, BOOL |
| İkili türler | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Veri kaynağı ekleme
DataWorks'te bir senkronizasyon görevi geliştirmeden önce DRDS (PolarDB-X 1.0)'yi veri kaynağı olarak ekleyin. Talimatlar için bkz. Veri kaynağı yönetimi. Parametre açıklamaları, veri kaynağını eklerken DataWorks konsolunda mevcuttur.
Veri senkronizasyon görevi geliştirme
Tek bir tablo için çevrimdışı senkronizasyon görevi yapılandırma
Kodsuz kullanıcı arabirimini veya kod düzenleyicisini kullanarak yapılandırma yapın. Bkz. Kodsuz kullanıcı arabiriminde görev yapılandırma ve Kod düzenleyicide görev yapılandırma.
Tam parametre referansı ve betik örnekleri için bkz. Ek: Betik demosu ve parametreler.
Tüm bir veritabanı için çevrimdışı senkronizasyon görevi yapılandırma
Bkz. Tüm bir veritabanı için çevrimdışı senkronizasyon görevi yapılandırma.
SSS
DRDS (PolarDB-X 1.0) Reader neden parçalar arasında veri tutarlılığını garanti edemez?
DRDS (PolarDB-X 1.0) dağıtılmış bir veritabanıdır. Reader farklı temel parçalı tablolardan veri çıkardığında anlık görüntüleri tek bir tutarlı zaman diliminden değil farklı zaman noktalarında yakalar. Parçalı veritabanları ve tablolar arasında güçlü tutarlılık garanti edilemez.
Kodlama veri senkronizasyonunu nasıl etkiler?
DRDS (PolarDB-X 1.0), alan, tablo, veritabanı ve örnek düzeylerinde kodlama ayarlarını destekler. Kodlama ayarlarının önceliği, en yüksekte en düşüğe doğru şu şekildedir: alan, tablo, veritabanı ve ardından örnek. Sorunlardan kaçınmak için kodlamayı veritabanı düzeyinde UTF-8 olarak ayarlayın.
DRDS (PolarDB-X 1.0) Reader, veri çıkarma için JDBC kullanır ve kodlama dönüştürmeyi otomatik olarak gerçekleştirir. Ancak alt katmana veri yazılırken kullanılan kodlama bildirilen kodlamadan farklıysa Reader bu uyumsuzluğu algılayamaz ve senkronizasyon sonucu bozuk karakterler içerebilir.
Artımlı veri senkronizasyonunu nasıl yapılandırırım?
DRDS (PolarDB-X 1.0) Reader, veri çıkarma için JDBC SELECT deyimlerini kullanır. Yalnızca son senkronizasyondan bu yana eklenen veya değiştirilen kayıtları filtrelemek için bir WHERE yan tümcesi kullanın:
Zaman damgası tabanlı: Uygulamanız her kayıt için bir değişiklik zaman damgasıyla bir
modifyalanı yazıyorsa (eklemeler, güncellemeler veya mantıksal silmeleri kapsar), son senkronizasyon çalışmasının zaman damgasını kullanan birWHEREyan tümcesi ekleyin.Otomatik artan kimlik tabanlı: Yalnızca ekleme yapılan veri akışları için önceki senkronizasyondaki maksimum otomatik artan kimliği kullanan bir
WHEREyan tümcesi ekleyin.
Verilerinizde yeni veya değiştirilen kayıtları mevcut olanlardan ayıran bir alan yoksa Reader artımlı çıkarmayı destekleyemez; yalnızca tam veri senkronizasyonu kullanılabilir.
Fiziksel tablo adlarına dayalı filtre koşulları WHERE yan tümcesinde desteklenmez.
Ek: Betik demosu ve parametreler
Kod düzenleyicisini kullanarak toplu iş senkronizasyon görevi yapılandırmak için Kod düzenleyicide görev yapılandırma bölümünde açıklanan birleşik betik biçimini izleyin. Aşağıdaki bölümlerde parametreler açıklanmış ve betik örnekleri sunulmuştur.
Reader betik demosu
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "drds",
"parameter": {
"datasource": "",
"column": [
"id",
"name"
],
"where": "",
"table": "",
"splitPk": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Reader betik parametreleri
| Parametre | Açıklama | Gerekli | Varsayılan değer |
|---|---|---|---|
datasource |
Veri kaynağının adı. Değer, DataWorks'te eklenen veri kaynağının adıyla eşleşmelidir. | Evet | Yok |
table |
Verilerin senkronize edileceği tablo. | Evet | Yok |
column |
JSON dizisi olarak belirtilen senkronize edilecek sütunlar. Tüm sütunları seçmek için ["*"] kullanın. Sütun budama, yeniden sıralama, sabitler ve MySQL işlev ifadelerini destekler. Örnek: ["id", " table ", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3", "true"]. |
Evet | Yok |
where |
SELECT deyimi oluşturmak için kullanılan filtre koşulu. Boş bırakılırsa tüm tablo senkronize edilir. Tarih veya kimlik koşulları aracılığıyla artımlı senkronizasyonu destekler. Örnek: STRTODATE('${bdp.system.bizdate}','%Y%m%d') <= today AND today < DATEADD(STRTODATE('${bdp.system.bizdate}', '%Y%m%d'), interval 1 day). |
Hayır | Yok |
splitPk |
Paralel okumalar için kullanılan parça anahtarı. | Hayır | Yok |
Writer betik demosu
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "drds",
"parameter": {
"postSql": [],
"datasource": "",
"column": [
"id"
],
"writeMode": "insert ignore",
"batchSize": "1024",
"table": "test",
"preSql": []
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Writer betik parametreleri
| Parametre | Açıklama | Gerekli | Varsayılan değer |
|---|---|---|---|
datasource |
Veri kaynağının adı. Değer, DataWorks'te eklenen veri kaynağının adıyla eşleşmelidir. | Evet | Yok |
table |
Verilerin yazılacağı hedef tablo. | Evet | Yok |
writeMode |
Yazma modu. Geçerli değerler: insert ignore (birincil anahtar veya kısıtlama kurallarını ihlal eden satırları yoksayar) ve replace into (çakışma durumunda mevcut satırların yerine geçer). |
Hayır | insert ignore |
column |
Virgülle ayrılmış liste olarak belirtilen verilerin yazılacağı hedef sütunlar. Örnek: ["id", "name", "age"]. Tüm sütunlara sırayla yazmak için ["*"] kullanın. |
Evet | Yok |
preSql |
Senkronizasyon görevi başlamadan önce çalıştırılacak SQL deyimleri. Kodsuz kullanıcı arabiriminde yalnızca bir deyim desteklenir. Kod düzenleyicisinde birden çok deyim desteklenir. Örnek: delete * from table xxx;. |
Hayır | Yok |
postSql |
Senkronizasyon görevi tamamlandıktan sonra çalıştırılacak SQL deyimleri. Kodsuz kullanıcı arabiriminde yalnızca bir deyim desteklenir. Kod düzenleyicisinde birden çok deyim desteklenir. Örnek: delete * from table xxx where xx=xx;. |
Hayır | Yok |
batchSize |
Parti başına gönderilecek kayıt sayısı. Daha büyük değerler ağ gidiş dönüşlerini azaltır ve aktarım hızını artırır ancak çok büyük değerler bellek yetersizliği (OOM) hatalarına neden olabilir. | Hayır | 1024 |