DB2 veri kaynağı, DataWorks'ü IBM DB2 veritabanlarına bağlayarak çevrimdışı veri eşzamanlaması sağlar. Toplu eşzamanlama görevlerinde DB2'den veri okumak ve DB2'ye veri yazmak için bu kaynağı kullanın.
Desteklenen sürümler
DB2 Reader ve DB2 Writer, IBM Data Server Driver for JDBC and SQLJ 4.11.77 sürümünü kullanır. DB2 sürücüsü ile veritabanı hizmeti arasındaki sürüm eşleştirmesi için resmi belgelere bakın.
Desteklenen yetenekler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Desteklenen alan türleri
DB2 Reader ve DB2 Writer, çevrimdışı okuma ve yazma işlemleri için aşağıdaki DB2 veri türlerini destekler. Bir eşzamanlama görevini yapılandırmadan önce veri türlerinizi kontrol edin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sınırlamalar
Kaynak grupları: DB2 Reader ve DB2 Writer, Serverless kaynak gruplarını ve Data Integration için özel kaynak gruplarını destekler. Ortak kaynak grupları ve özel kaynak grupları desteklenmez.
-
Yazma davranışı: DB2 Writer, verileri
insert intodeyimlerini kullanarak yazar. Birincil anahtar veya benzersiz dizin çakışması oluşursa, çakışan satırlar yazılmaz. Performans amacıyla DB2 Writer,PreparedStatement + BatchyapısınırewriteBatchedStatements=trueparametresiyle kullanır; verileri bir iş parçacığı bağlamı arabelleğinde tutar ve arabellek yapılandırılan eşik değerine ulaştığında bir yazma isteği gönderir.Eşzamanlama görevi en az
insert intoizni gerektirir.preSqlvepostSqlparametrelerinde yapılandırılan SQL deyimlerine bağlı olarak ek izinler gerekebilir. Şifreleme: DB2 AES şifreleme algoritması desteklenmez.
Veri kaynağı ekleme
Bir eşzamanlama görevi geliştirmeden önce DB2 veri kaynağını DataWorks'e ekleyin. Talimatlar için Veri kaynağı yönetimi bölümüne bakın. Parametre açıklamaları, veri kaynağını eklerken DataWorks konsolunda sunulur.
Veri eşzamanlama görevi geliştirme
Tek tablo için çevrimdışı eşzamanlama görevi
Yapılandırma adımları için Kodsuz kullanıcı arabiriminde görev yapılandırma ve Kod düzenleyicide görev yapılandırma bölümlerine bakın.
Tüm parametreler ve betik referansı için Ek: Betik demosu ve parametre açıklaması bölümüne bakın.
Tam veritabanı için çevrimdışı eşzamanlama görevi
Yapılandırma adımları için Toplu veritabanı eşzamanlama yapılandırması bölümüne bakın.
Sık Sorulan Sorular
Aktif/pasif eşzamanlama sırasında yedek veritabanında neden veri eksik olabilir?
Aktif/pasif olağanüstü durum kurtarma kurulumunda, yedek veritabanı binlog'lar aracılığıyla birincil veritabanından gelen değişiklikleri sürekli olarak uygular. Bu işlemde doğası gereği bir zaman gecikmesi bulunur ve ağ gecikmesi bu durumu daha da kötüleştirebilir. Sonuç olarak, yedek veritabanı birincil veritabanını gerçek zamanlı olarak yansıtmayabilir ve iki veritabanı arasında önemli veri tutarsızlıkları oluşabilir.
DB2 Reader, eşzamanlı çıkarma sırasında veri tutarlılığını garanti eder mi?
DB2, güçlü tutarlılık sorgu arayüzlerine sahip bir ilişkisel veritabanı yönetim sistemidir (RDBMS). Tek iş parçacıklı modda DB2 Reader tutarlı bir anlık görüntüyü okur; görev çalışırken başka bir kaynak veri yazarsa DB2 Reader bu güncellemeleri almaz.
splitPk parametresini kullanarak eşzamanlı çıkarma yapılandırdığınızda, DB2 Reader aynı okuma işleminin parçası olmayan ve farklı zamanlarda çalışan birden çok görev başlatır. Bu durumda, eşzamanlı görevlerin okuduğu anlık görüntüler eksik veya tutarsız olabilir. İki geçici çözüm mevcuttur:
Tek iş parçacıklı eşzamanlama kullanın (veri bölümlendirmesi yok). Bu yaklaşım veri tutarlılığını korur ancak eşzamanlama hızını düşürür.
Eşzamanlama sırasında kaynağa yazmayı devre dışı bırakın; örneğin tabloları kilitleyerek veya yedek veritabanına çoğaltmayı duraklatarak bunu sağlayabilirsiniz. Bu yöntem kaynak verilerini statik tutar ancak çevrimiçi hizmetleri etkileyebilir.
DB2 Reader için kodlamayı yapılandırmam gerekir mi?
Hayır. DB2 Reader, verileri ayıklamak için Java Database Connectivity (JDBC) kullanır. JDBC, alt katmanda kodlama dönüşümünü gerçekleştirir; bu nedenle DB2 Reader kodlamayı otomatik olarak algılar ve transkode eder.
Artımlı veri eşzamanlamasını nasıl ayarlarım?
DB2 Reader, verileri JDBC SELECT deyimlerini kullanarak çıkarır; bu nedenle artımlı çıkarma için SELECT...WHERE... yapısını iki şekilde kullanabilirsiniz:
Kaynak uygulama, veriler değiştiğinde bir zaman damgası alanı (örneğin
modifysütunu) dolduruyorsa, son eşzamanlama çalışmasındaki zaman damgasını kullanarak birwhereyan tümcesi yapılandırın. Bu yaklaşım yeni, güncellenmiş ve mantıksal olarak silinmiş satırları yakalar.Yalnızca eklenen veriler için, önceki eşzamanlama çalışmasındaki maksimum otomatik artış kimliğini kullanarak bir
whereyan tümcesi yapılandırın.
Yeni verileri mevcut verilerden ayıran hiçbir alan yoksa yalnızca tam eşzamanlama mümkündür.
**querySql** parametresi SQL enjeksiyonuna karşı güvenli midir?
DB2 Reader, querySql deyimi üzerinde güvenlik denetimi gerçekleştirmez. Bu parametreyi yapılandırmadan önce herhangi bir özel SQL'i gözden geçirin ve doğrulayın.
Ek: Betik demosu ve parametre açıklaması
Kod düzenleyicide bir toplu eşzamanlama görevi yapılandırırken aşağıdaki betikleri ve parametre referanslarını kullanın. Genel yordam için Kod düzenleyicide görev yapılandırma bölümüne bakın.
Reader betik demosu
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "db2",
"parameter": {
"datasource": "",
"jdbcUrl": "",
"username": "",
"password": "",
"table": "",
"column": [
"id"
],
"where": "",
"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 parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fetchSize değeri 2048'i aşarsa eşzamanlama sırasında bellek yetersizliği (OOM) hatası oluşabilir.
Writer betik demosu
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "db2",
"parameter": {
"jdbcUrl": "jdbc:db2://ip:port/database",
"username": "",
"password": "",
"table": "",
"column": [
"id"
],
"preSql": [],
"postSql": [],
"batchSize": 1024
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Writer parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|