Sumber data DB2 menghubungkan DataWorks ke database IBM DB2 untuk sinkronisasi data offline. Gunakan sumber data ini untuk membaca dari dan menulis ke DB2 dalam tugas sinkronisasi batch.
Versi yang didukung
DB2 Reader dan DB2 Writer menggunakan IBM Data Server Driver for JDBC and SQLJ versi 4.11.77. Untuk informasi pemetaan versi antara driver DB2 dan layanan database, lihat dokumentasi resmi.
Kemampuan yang didukung
Kemampuan | Didukung |
Offline read (sinkronisasi penuh) | Ya |
Offline write (sinkronisasi penuh) | Ya |
Read from views | Ya |
Incremental synchronization | Ya (melalui filter |
AES encryption | Tidak |
Serverless resource groups | Ya |
Exclusive resource groups for Data Integration | Ya |
Public resource groups | Tidak |
Custom resource groups | Tidak |
Tipe bidang yang didukung
DB2 Reader dan DB2 Writer mendukung tipe data DB2 berikut untuk operasi baca dan tulis offline. Periksa tipe data Anda sebelum mengonfigurasi tugas sinkronisasi.
Type category | Tipe data DB2 |
Tipe integer | SMALLINT |
Tipe floating-point | DECIMAL, REAL, DOUBLE |
Tipe string | CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB |
Tipe tanggal dan waktu | DATE, TIME, TIMESTAMP |
Tipe boolean | None |
Tipe biner | BLOB |
Batasan
Resource groups: DB2 Reader dan DB2 Writer mendukung Serverless resource groups dan exclusive resource groups for Data Integration. Public resource groups dan custom resource groups tidak didukung.
Write behavior: DB2 Writer menulis data menggunakan pernyataan
insert into. Jika terjadi konflik kunci primary atau indeks unik, baris yang bertentangan tidak ditulis. Untuk performa, DB2 Writer menggunakanPreparedStatement + BatchdenganrewriteBatchedStatements=true, menyimpan data di buffer konteks thread dan mengirim permintaan tulis saat buffer mencapai ambang batas yang dikonfigurasi.Tugas sinkronisasi memerlukan setidaknya izin
insert into. Izin tambahan mungkin diperlukan tergantung pada pernyataan SQL yang dikonfigurasi di parameterpreSqldanpostSql.Encryption: Algoritma enkripsi AES DB2 tidak didukung.
Tambahkan sumber data
Tambahkan sumber data DB2 ke DataWorks sebelum mengembangkan tugas sinkronisasi. Ikuti petunjuk dalam Data source management. Deskripsi parameter tersedia di Konsol DataWorks saat Anda menambahkan sumber data.
Kembangkan tugas sinkronisasi data
Offline sync task for a single table
Untuk langkah-langkah konfigurasi, lihat Configure a task in the codeless UI dan Configure a task in the code editor.
Untuk semua parameter dan referensi skrip, lihat Lampiran: Demo skrip dan deskripsi parameter.
Offline sync task for a full database
Untuk langkah-langkah konfigurasi, lihat Batch database synchronization configuration.
FAQ
Mengapa database standby bisa kehilangan data selama sinkronisasi aktif/standby?
Dalam pengaturan disaster recovery aktif/standby, database standby terus-menerus menerapkan perubahan dari database primary melalui binlog. Proses ini memiliki jeda waktu inheren, yang dapat diperparah oleh latensi jaringan. Akibatnya, database standby mungkin tidak mencerminkan database primary secara real time, sehingga perbedaan data signifikan antara keduanya dimungkinkan.
Apakah DB2 Reader menjamin konsistensi data selama ekstraksi konkuren?
DB2 adalah sistem manajemen database relasional (RDBMS) dengan antarmuka kueri konsistensi kuat. Dalam mode single-threaded, DB2 Reader membaca snapshot yang konsisten—jika sumber lain menulis data saat tugas berjalan, DB2 Reader tidak mengambil pembaruan tersebut.
Saat Anda mengonfigurasi ekstraksi konkuren menggunakan parameter splitPk, DB2 Reader menjalankan beberapa tugas yang tidak termasuk dalam transaksi baca yang sama dan berjalan pada waktu berbeda. Dalam kasus ini, snapshot yang dibaca oleh tugas konkuren mungkin tidak lengkap atau tidak konsisten. Dua solusi tersedia:
Gunakan sinkronisasi single-threaded (tanpa partisi data). Ini menjaga konsistensi data tetapi mengurangi kecepatan sinkronisasi.
Nonaktifkan penulisan ke sumber selama sinkronisasi, misalnya dengan mengunci tabel atau menjeda replikasi ke database standby. Ini menjaga data sumber tetap statis tetapi dapat memengaruhi layanan online.
Apakah saya perlu mengonfigurasi encoding untuk DB2 Reader?
Tidak. DB2 Reader menggunakan Java Database Connectivity (JDBC) untuk mengekstrak data. JDBC menangani konversi encoding di lapisan dasar, sehingga DB2 Reader secara otomatis mendeteksi dan mentranskode encoding.
Bagaimana cara mengatur sinkronisasi data inkremental?
DB2 Reader mengekstrak data menggunakan pernyataan JDBC SELECT, sehingga Anda dapat menggunakan SELECT...WHERE... untuk ekstraksi inkremental dengan dua cara:
Jika aplikasi sumber mengisi bidang timestamp (seperti kolom
modify) saat data berubah, konfigurasikan klausawheremenggunakan timestamp dari proses sinkronisasi sebelumnya. Ini menangkap baris baru, diperbarui, dan dihapus secara logis.Untuk data append-only, konfigurasikan klausa
wheremenggunakan ID auto-increment maksimum dari proses sinkronisasi sebelumnya.
Jika tidak ada bidang yang membedakan data baru dari data yang sudah ada, hanya sinkronisasi penuh yang dimungkinkan.
Apakah parameter querySql aman dari Injeksi SQL?
DB2 Reader tidak melakukan pemeriksaan keamanan pada pernyataan querySql. Tinjau dan validasi SQL kustom apa pun sebelum mengonfigurasi parameter ini.
Lampiran: Demo skrip dan deskripsi parameter
Gunakan skrip dan referensi parameter berikut saat mengonfigurasi tugas sinkronisasi batch di editor kode. Untuk prosedur umum, lihat Configure a task in the code editor.
Demo skrip Reader
{
"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"
}
]
}
}Parameter Reader
Parameter | Deskripsi | Wajib | Default |
| Nama sumber data sebagaimana dikonfigurasi di DataWorks. | Ya | None |
| URL JDBC untuk database DB2. Format: | Ya | None |
| Username untuk sumber data. | Ya | None |
| Password untuk username tersebut. | Ya | None |
| Tabel sumber. Satu job hanya dapat membaca dari satu tabel. | Ya | None |
| Kolom yang akan dibaca, ditentukan sebagai array JSON. Semua kolom: | Ya | None |
| Bidang yang digunakan untuk mempartisi data guna ekstraksi konkuren. Gunakan kunci primary tabel untuk distribusi merata dan menghindari hotspot data. Hanya bidang integer yang didukung—bilangan titik mengambang, string, dan tanggal tidak didukung. Jika tipe yang tidak didukung ditentukan, DB2 Reader mengembalikan error. | Tidak |
|
| Kondisi filter. DB2 Reader menyusun pernyataan | Tidak | None |
| Pernyataan | Tidak | None |
| Jumlah catatan yang diambil per batch dari database. Nilai yang lebih besar mengurangi round trip jaringan dan meningkatkan performa ekstraksi. | Tidak |
|
Jika fetchSize melebihi 2.048, error kehabisan memori (OOM) dapat terjadi selama sinkronisasi.Demo skrip Writer
{
"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"
}
]
}
}Parameter Writer
Parameter | Deskripsi | Wajib | Default |
| URL JDBC untuk database DB2. Format: | Ya | None |
| Username untuk sumber data. | Ya | None |
| Password untuk username tersebut. | Ya | None |
| Tabel tujuan. | Ya | None |
| Kolom tujuan yang akan ditulis, ditentukan sebagai array JSON. Contoh: | Ya | None |
| Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi dimulai. Gunakan ini untuk membersihkan data lama atau melakukan operasi persiapan. Hanya satu pernyataan yang didukung. | Tidak | None |
| Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi selesai. Di Antarmuka tanpa kode, hanya satu pernyataan yang didukung. Di editor kode, beberapa pernyataan didukung. | Tidak | None |
| Jumlah catatan yang dikirim per batch. Nilai yang lebih besar mengurangi round trip jaringan dan meningkatkan throughput tulis. Jika diatur terlalu tinggi, error OOM dapat terjadi. | Tidak |
|