Sumber data Db2 berfungsi sebagai pusat data. DataWorks menyediakan Db2 Reader dan Db2 Writer untuk membaca data dari serta menulis data ke sumber data Db2, membantu menyelesaikan masalah komputasi sejumlah besar data dengan cepat. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data Db2.
Versi Db2 yang Didukung
Versi driver JDBC Db2 yang digunakan oleh Db2 Reader dan Db2 Writer adalah IBM Data Server Driver for JDBC and SQLJ 4.11.77. Untuk informasi lebih lanjut tentang pemetaan antara versi driver JDBC Db2 dan versi Db2, lihat Dukungan IBM.
Batasan
Db2 Reader dan Db2 Writer hanya mendukung kelompok sumber daya eksklusif untuk Data Integration, tetapi tidak mendukung kelompok sumber daya bersama untuk Data Integration atau kelompok sumber daya kustom untuk Data Integration.
Db2 Writer mengambil data dari pembaca dan menulisnya ke database tujuan menggunakan pernyataan
INSERT INTO. Jika terjadi konflik kunci utama atau indeks unik, data tidak dapat ditulis ke baris yang bertentangan. Untuk meningkatkan kinerja, Db2 Writer melakukan pembaruan batch menggunakan objekPreparedStatementdan mengatur parameterrewriteBatchedStatementsmenjadi true. Dengan cara ini, Data Integration mengirimkan permintaan tulis ketika jumlah data yang di-buffer mencapai ambang batas tertentu.CatatanTugas sinkronisasi yang menggunakan Db2 Writer harus memiliki setidaknya izin untuk mengeksekusi pernyataan
INSERT INTO. Apakah izin tambahan diperlukan bergantung pada pernyataan SQL yang Anda tentukan dalam parameter preSql dan postSql saat mengonfigurasi tugas tersebut.Data dari tampilan dapat dibaca selama sinkronisasi batch.
Algoritma enkripsi AES Db2 tidak didukung.
Pemetaan Tipe Data
Membaca dan Menulis Data Batch
Db2 Reader dan Db2 Writer mendukung sebagian besar tipe data Db2. Pastikan tipe data basis data Anda didukung.
Tabel berikut mencantumkan pemetaan tipe data berdasarkan mana Db2 Writer dan Db2 Reader mengonversi tipe data.
Kategori | Tipe data Db2 |
Integer | SMALLINT |
Floating point | DECIMAL, REAL, dan DOUBLE |
String | CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, dan DBCLOB |
Tanggal dan waktu | DATE, TIME, dan TIMESTAMP |
Boolean | N/A |
Binary | BLOB |
Mengembangkan Tugas Sinkronisasi Data
Untuk informasi tentang titik entri dan prosedur mengonfigurasi tugas sinkronisasi data, lihat bagian berikut. Untuk informasi tentang pengaturan parameter, lihat infotip setiap parameter pada tab konfigurasi tugas.
Menambahkan Sumber Data
Mengonfigurasi Tugas Sinkronisasi Batch untuk Menyinkronkan Data Tabel Tunggal
Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan UI Tanpa Kode dan Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan Editor Kode.
Untuk informasi tentang semua parameter yang dikonfigurasi dan kode yang dijalankan saat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, lihat Lampiran: Kode dan Parameter.
Mengonfigurasi Pengaturan Sinkronisasi untuk Melaksanakan Sinkronisasi Batch Semua Data dalam Database
Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Mengonfigurasi Tugas Sinkronisasi di Data Integration.
Informasi Tambahan
Sinkronisasi data antara database primer dan sekunder
Database Db2 sekunder dapat digunakan untuk pemulihan bencana. Database sekunder secara terus-menerus menyinkronkan data dari database primer berdasarkan log biner. Latensi data antara database primer dan sekunder tidak dapat dihindari, yang dapat mengakibatkan ketidaksesuaian data.
Pengendalian konsistensi data
Db2 adalah sistem manajemen basis data relasional (RDBMS) yang mendukung konsistensi kuat untuk kueri data. Snapshot database dibuat sebelum tugas sinkronisasi dimulai. Db2 Reader membaca data dari snapshot database. Oleh karena itu, jika data baru ditulis ke database selama sinkronisasi data, Db2 Reader tidak dapat memperoleh data baru.
Konsistensi data tidak dapat dipastikan jika Anda mengaktifkan Db2 Reader untuk menggunakan thread paralel dalam satu tugas sinkronisasi.
Db2 Reader membagi tabel sumber berdasarkan nilai parameter splitPk dan menggunakan thread paralel untuk membaca data. Thread paralel ini termasuk dalam transaksi yang berbeda dan membaca data pada titik waktu yang berbeda. Oleh karena itu, thread paralel mengamati snapshot yang berbeda.
Ketidaksesuaian data tidak dapat dicegah jika thread paralel digunakan untuk tugas sinkronisasi. Solusi berikut dapat digunakan:
Aktifkan Db2 Reader untuk menggunakan satu thread untuk membaca data dalam tugas sinkronisasi. Ini menunjukkan bahwa Anda tidak perlu menentukan kunci shard untuk Db2 Reader. Dengan cara ini, konsistensi data dipastikan, tetapi data disinkronkan dengan efisiensi rendah.
Pastikan tidak ada data yang ditulis ke tabel sumber selama sinkronisasi data. Ini memastikan bahwa data di tabel sumber tetap tidak berubah selama sinkronisasi data. Misalnya, Anda dapat mengunci tabel sumber atau menonaktifkan sinkronisasi data antara database primer dan sekunder. Dengan cara ini, data disinkronkan dengan efisien, tetapi layanan yang sedang berlangsung mungkin terganggu.
Pengkodean karakter
Db2 Reader menggunakan JDBC untuk membaca data, memungkinkannya secara otomatis mengonversi format pengkodean karakter. Oleh karena itu, Anda tidak perlu menentukan format pengkodean.
Sinkronisasi data inkremental
Db2 Reader menggunakan JDBC untuk terhubung ke database dan menggunakan pernyataan
SELECTdengan klausa WHERE untuk membaca data inkremental.Untuk data batch, operasi tambah, perbarui, dan hapus (termasuk operasi hapus logis) dibedakan berdasarkan timestamp. Tentukan klausa WHERE berdasarkan timestamp tertentu. Waktu yang ditunjukkan oleh timestamp harus lebih lambat dari waktu yang ditunjukkan oleh timestamp terbaru dalam sinkronisasi sebelumnya.
Untuk data streaming, tentukan klausa WHERE berdasarkan ID catatan tertentu. ID harus lebih besar dari ID maksimum yang terlibat dalam sinkronisasi sebelumnya.
Jika data yang ditambahkan atau dimodifikasi tidak dapat dibedakan, Db2 Reader hanya dapat membaca data penuh.
Validasi sintaksis
Db2 Reader memungkinkan Anda menentukan pernyataan SELECT kustom menggunakan parameter querySql, tetapi tidak memverifikasi sintaksis pernyataan tersebut.
Lampiran: Kode dan Parameter
Lampiran: Mengonfigurasi Tugas Sinkronisasi Batch Menggunakan Editor Kode
Kode untuk Db2 Reader
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"db2",// Nama plugin.
"parameter":{
"password":"",// Kata sandi yang Anda gunakan untuk terhubung ke database Db2.
"jdbcUrl":"",// URL JDBC dari database Db2.
"column":[
"id"
],
"where":"",// Klausa WHERE.
"splitPk":"",// Kunci shard.
"table":"",// Nama tabel.
"username":""// Nama pengguna yang Anda gunakan untuk terhubung ke database Db2.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
},
"speed":{
"throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan throttling dinonaktifkan, dan nilai true menunjukkan throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle diatur ke true.
"concurrent":1 // Jumlah maksimum thread paralel.
"mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter dalam kode untuk Db2 Reader
Parameter | Deskripsi | Diperlukan | Nilai default |
datasource | Nama sumber data. Harus sama dengan nama sumber data yang telah ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode. | Ya | Tidak ada nilai default |
jdbcUrl | URL JDBC dari database Db2. URL harus dalam format | Ya | Tidak ada nilai default |
username | Nama pengguna yang Anda gunakan untuk terhubung ke database. | Ya | Tidak ada nilai default |
password | Kata sandi yang Anda gunakan untuk terhubung ke database. | Ya | Tidak ada nilai default |
table | Nama tabel tempat Anda ingin membaca data. Setiap tugas sinkronisasi dapat digunakan untuk menyinkronkan data ke hanya satu tabel. | Ya | Tidak ada nilai default |
column | Nama kolom tempat Anda ingin membaca data. Tentukan nama dalam array JSON. Nilai default adalah [ * ], yang menunjukkan semua kolom dalam tabel sumber.
| Ya | Tidak ada nilai default |
splitPk | Bidang yang digunakan untuk sharding data ketika Db2 Reader membaca data. Jika Anda mengonfigurasi parameter ini, tabel sumber di-shard berdasarkan nilai parameter ini. Data Integration kemudian menjalankan thread paralel untuk membaca data. Dengan cara ini, data dapat disinkronkan lebih efisien.
| Tidak | "" |
where | Klausa WHERE. Db2 Reader menghasilkan pernyataan SQL berdasarkan pengaturan parameter table, column, dan where dan menggunakan pernyataan yang dihasilkan untuk membaca data. Sebagai contoh, Anda dapat menyetel parameter ini ke | Tidak | Tidak ada nilai default |
querySql | Pernyataan SQL yang digunakan untuk penyaringan data yang lebih halus. Jika Anda mengonfigurasi parameter ini, Data Integration menyaring data berdasarkan nilai parameter ini. Sebagai contoh, jika Anda ingin menggabungkan beberapa tabel untuk sinkronisasi data, atur parameter ini ke | Tidak | Tidak ada nilai default |
fetchSize | Jumlah catatan data yang dibaca sekaligus. Parameter ini menentukan jumlah interaksi antara Data Integration dan database dan memengaruhi efisiensi pembacaan. Catatan Jika Anda menyetel parameter ini ke nilai lebih besar dari 2048, kesalahan out of memory (OOM) mungkin terjadi selama sinkronisasi data. | Tidak | 1024 |
Kode untuk Db2 Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"db2",// Nama plugin.
"parameter":{
"postSql":[],// Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan.
"password":"",// Kata sandi yang Anda gunakan untuk terhubung ke database Db2.
"jdbcUrl":"jdbc:db2://ip:port/database",// URL JDBC dari database Db2.
"column":[
"id"
],
"batchSize":1024,// Jumlah catatan data yang ditulis sekaligus.
"table":"",// Nama tabel.
"username":"",// Nama pengguna yang Anda gunakan untuk terhubung ke database Db2.
"preSql":[]// Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
},
"speed":{
"throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan throttling dinonaktifkan, dan nilai true menunjukkan throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle diatur ke true.
"concurrent":1, // Jumlah maksimum thread paralel.
"mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter dalam kode untuk Db2 Writer
Parameter | Deskripsi | Diperlukan | Nilai default |
jdbcUrl | URL JDBC dari database Db2. Sesuai dengan spesifikasi resmi Db2, URL harus dalam format jdbc:db2://ip:port/database. Anda juga dapat menentukan informasi fasilitas lampiran. | Ya | Tidak ada nilai default |
username | Nama pengguna yang Anda gunakan untuk terhubung ke database Db2. | Ya | Tidak ada nilai default |
password | Kata sandi yang Anda gunakan untuk terhubung ke database Db2. | Ya | Tidak ada nilai default |
table | Nama tabel tempat Anda ingin menulis data. | Ya | Tidak ada nilai default |
column | Nama kolom tempat Anda ingin menulis data. Pisahkan nama dengan koma (,), seperti "column": ["id", "name", "age"]. Jika Anda ingin menulis data ke semua kolom dalam tabel tujuan, atur parameter ini ke tanda bintang (*), seperti "column": ["*"] . | Ya | Tidak ada nilai default |
preSql | Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan. Sebagai contoh, Anda dapat menyetel parameter ini ke pernyataan SQL yang digunakan untuk menghapus data lama. Anda hanya dapat menjalankan satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode. | Tidak | Tidak ada nilai default |
postSql | Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan. Sebagai contoh, Anda dapat menyetel parameter ini ke pernyataan SQL yang digunakan untuk menambahkan timestamp. Anda hanya dapat menjalankan satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode. | Tidak | Tidak ada nilai default |
batchSize | Jumlah catatan data yang ditulis sekaligus. Atur parameter ini ke nilai yang sesuai berdasarkan kebutuhan bisnis Anda. Ini sangat mengurangi interaksi antara Data Integration dan Db2 serta meningkatkan throughput. Jika Anda menyetel parameter ini ke nilai yang terlalu besar, kesalahan OOM mungkin terjadi selama sinkronisasi data. | Tidak | 1024 |