All Products
Search
Document Center

DataWorks:DB2

Last Updated:Mar 01, 2026

Sumber data DB2 menyediakan saluran dua arah untuk membaca dan menulis data ke database DB2, memungkinkan pemrosesan data dalam jumlah besar secara cepat. Topik ini menjelaskan kemampuan sinkronisasi data DataWorks untuk DB2.

Versi yang didukung

DB2 Reader dan DB2 Writer menggunakan driver IBM Data Server Driver for JDBC and SQLJ 4.11.77. Untuk informasi lebih lanjut mengenai pemetaan versi antara driver DB2 dan layanan database, lihat dokumentasi resmi.

Batasan

  • 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.

  • DB2 Writer mengambil data dari Reader melalui framework sinkronisasi data dan menulis data ke DB2 menggunakan pernyataan insert into. Jika terjadi konflik pada primary key atau unique index, baris yang bertentangan tidak akan ditulis. Untuk performa yang lebih baik, DB2 Writer menggunakan PreparedStatement + Batch dengan rewriteBatchedStatements=true. Data dibuffer di buffer konteks thread, dan permintaan penulisan hanya dikirim ketika buffer mencapai ambang batas tertentu.

    Catatan

    Tugas memerlukan setidaknya izin insert into. Izin lainnya mungkin diperlukan tergantung pada pernyataan yang Anda tentukan dalam parameter preSql dan postSql saat mengonfigurasi tugas.

  • Sinkronisasi offline mendukung pembacaan data dari views.

  • Algoritma enkripsi AES DB2 tidak didukung.

Tipe field yang didukung

DB2 Reader dan DB2 Writer mendukung sebagian besar tipe data DB2 untuk operasi baca dan tulis offline. Namun, beberapa tipe data tidak didukung. Kami menyarankan Anda memeriksa tipe data Anda dengan cermat.

Tabel berikut mencantumkan tipe data DB2 yang didukung oleh DB2 Reader dan DB2 Writer.

Kategori tipe

Tipe data DB2

Tipe integer

SMALLINT

Tipe bilangan titik mengambang

DECIMAL, REAL, dan DOUBLE

Tipe string

CHAR, CHARACTER, VARCHAR, GRAPHIC, VARGRAPHIC, LONG VARCHAR, CLOB, LONG VARGRAPHIC, dan DBCLOB

Tipe tanggal dan waktu

DATE, TIME, dan TIMESTAMP

Tipe Boolean

Tidak ada

Tipe biner

BLOB

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data

Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Panduan konfigurasi tugas sinkronisasi offline untuk satu tabel

Panduan konfigurasi tugas sinkronisasi baca offline untuk seluruh database

Untuk informasi selengkapnya mengenai prosedur tersebut, lihat Mengonfigurasi Tugas sinkronisasi real-time untuk seluruh database.

FAQ

  • Permasalahan pemulihan data dalam sinkronisasi aktif/standby

    Dalam konfigurasi disaster recovery aktif/standby untuk DB2, database secondary terus-menerus memulihkan data dari database primary menggunakan binlog. Keterlambatan waktu merupakan hal yang inheren dalam proses sinkronisasi ini. Keterlambatan ini, terutama jika diperparah oleh latensi jaringan, menyebabkan data pada database secondary mungkin bukan cerminan lengkap dan real-time dari database primary. Hal ini dapat mengakibatkan perbedaan data yang signifikan antara kedua database.

  • Batasan konsistensi

    DB2 adalah sistem manajemen database relasional (RDBMS) yang menyediakan antarmuka kueri dengan konsistensi kuat. Misalnya, jika sumber data lain menulis data ke database saat tugas sinkronisasi sedang berjalan, DB2 Reader tidak mengambil data yang diperbarui karena fitur snapshot database.

    Penjelasan di atas berlaku untuk konsistensi sinkronisasi data DB2 Reader dalam model single-threaded. DB2 Reader dapat mengekstrak data secara konkuren berdasarkan konfigurasi Anda. Oleh karena itu, konsistensi data yang ketat tidak dapat dijamin.

    Ketika DB2 Reader melakukan partisi data berdasarkan parameter splitPk, DB2 Reader memulai beberapa tugas konkuren untuk menyinkronkan data. Tugas-tugas konkuren ini tidak termasuk dalam transaksi baca yang sama dan dipisahkan oleh interval waktu. Untuk data mentah, snapshot yang dibaca oleh beberapa tugas konkuren mungkin tidak lengkap atau tidak konsisten.

    Solusi teknis untuk snapshot konsisten dalam lingkungan multi-threaded tidak tersedia. Anda hanya dapat mengatasi masalah ini dari perspektif rekayasa, yang melibatkan pertukaran kompromi. Pertimbangkan solusi berikut berdasarkan kebutuhan Anda:

    • Gunakan sinkronisasi single-threaded. Dalam mode ini, data tidak dipartisi. Kerugiannya adalah kecepatan sinkronisasi lambat, tetapi konsistensi data terjaga dengan baik.

    • Nonaktifkan penulis data lain untuk memastikan data sumber bersifat statis. Misalnya, Anda dapat mengunci tabel atau menonaktifkan sinkronisasi ke database secondary. Kerugiannya adalah hal ini dapat memengaruhi layanan online.

  • Permasalahan encoding database

    DB2 Reader menggunakan Java Database Connectivity (JDBC) untuk mengekstrak data. JDBC secara native kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan dasar. Oleh karena itu, Anda tidak perlu menentukan encoding untuk DB2 Reader. DB2 Reader dapat secara otomatis mendeteksi dan mengonversi encoding.

  • Metode untuk sinkronisasi data inkremental

    DB2 Reader menggunakan pernyataan SELECT JDBC untuk mengekstrak data. Oleh karena itu, Anda dapat menggunakan SELECT…WHERE… untuk melakukan ekstraksi data inkremental dengan cara berikut:

    • Ketika aplikasi online menulis data ke database, field `modify` diisi dengan timestamp yang menunjukkan kapan perubahan terjadi. Ini mencakup data baru, diperbarui, dan dihapus secara logis. Untuk jenis aplikasi ini, Anda dapat mengonfigurasi DB2 Reader untuk menambahkan klausa `WHERE` yang menggunakan timestamp sinkronisasi terakhir.

    • Untuk data append-only baru, Anda dapat mengonfigurasi DB2 Reader untuk menambahkan klausa `WHERE` yang menggunakan ID auto-increment maksimum dari sinkronisasi sebelumnya.

    Jika logika bisnis Anda tidak menggunakan field tertentu untuk membedakan antara data baru dan data yang dimodifikasi, DB2 Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam kasus ini, hanya sinkronisasi data penuh yang memungkinkan.

  • Keamanan SQL

    DB2 Reader menyediakan parameter querySql yang memungkinkan Anda menyesuaikan pernyataan SELECT untuk ekstraksi data. DB2 Reader tidak melakukan pemeriksaan keamanan apa pun pada pernyataan querySql.

Lampiran: Contoh skrip dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"db2",// Nama plug-in.
            "parameter":{
                "password":"",// Kata sandi.
                "jdbcUrl":"",// String koneksi JDBC untuk database DB2.
                "column":[
                    "id"
                ],
                "where":"",// Kondisi filter.
                "splitPk":"",// Field yang digunakan untuk partisi data.
                "table":"",// Nama tabel. 
                "username":""// Nama pengguna.
            },
            "name":"Reader",
            "category":"reader"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
             "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
             "concurrent":1, // Jumlah pekerjaan konkuren.
             "mbps":"12"// Batasan laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan.

Ya

Tidak ada

jdbcUrl

String koneksi JDBC untuk database DB2. URL JDBC harus mengikuti spesifikasi resmi DB2. Formatnya adalah jdbc:db2://ip:port/database. Anda juga dapat menambahkan informasi kontrol lampiran koneksi.

Ya

Tidak ada

username

Nama pengguna untuk sumber data.

Ya

Tidak ada

password

Kata sandi untuk nama pengguna yang ditentukan dari sumber data.

Ya

Tidak ada

table

Tabel dari mana Anda ingin menyinkronkan data. Satu job hanya dapat menyinkronkan data dari satu tabel.

Ya

Tidak ada

column

Kolom yang ingin Anda sinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan field. Secara default, semua kolom digunakan. Misalnya, [ * ]:

  • Pemangkasan kolom didukung. Anda dapat mengekspor subset kolom.

  • Pengubahan urutan kolom didukung. Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Konstanta didukung. Anda harus mengikuti sintaks SQL DB2. Misalnya, ["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3" , "true"]:

    • id adalah nama kolom biasa.

    • 1 adalah konstanta integer.

    • 'const name' adalah konstanta string. Harus diapit tanda kutip tunggal.

    • null adalah penunjuk null.

    • upper('abc_lower') adalah ekspresi fungsi.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai Boolean.

  • Parameter column harus secara eksplisit menentukan kumpulan kolom yang akan disinkronkan. Parameter ini tidak boleh kosong.

Ya

Tidak ada

splitPk

Saat DB2 Reader mengekstrak data, jika Anda menentukan splitPk, Anda dapat menggunakan field yang diwakili oleh splitPk untuk partisi data. Sistem sinkronisasi data kemudian memulai tugas konkuren untuk menyinkronkan data lebih efisien:

  • Kami menyarankan Anda mengatur splitPk ke primary key tabel. Primary key biasanya terdistribusi merata, yang membantu mencegah hotspot data dalam data yang dipartisi.

  • Saat ini, splitPk hanya mendukung partisi data untuk field integer. Bilangan titik mengambang, string, tanggal, dan tipe data lainnya tidak didukung. Jika Anda menentukan tipe data yang tidak didukung, DB2 Reader akan melaporkan error.

Tidak

""

where

Kondisi filter. DB2 Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan, lalu mengekstrak data berdasarkan pernyataan SQL tersebut.

Dalam skenario bisnis, Anda mungkin ingin menyinkronkan data yang dihasilkan pada hari ini. Anda dapat mengatur kondisi where menjadi gmt_create>$bizdate. Kondisi where dapat digunakan untuk sinkronisasi inkremental yang efisien. Jika Anda mengosongkan parameter ini, semua data dalam tabel akan disinkronkan.

Tidak

Tidak ada

querySql

Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan pernyataan SQL filter. Saat Anda mengonfigurasi parameter ini, sistem sinkronisasi data mengabaikan parameter table dan column dan menggunakan isi parameter ini untuk memfilter data.

Misalnya, untuk menyinkronkan data setelah penggabungan beberapa tabel, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, DB2 Reader mengabaikan parameter table, column, dan where.

Tidak

Tidak ada

fetchSize

Parameter ini menentukan jumlah catatan yang diambil dalam setiap batch dari server database. Nilai ini menentukan jumlah interaksi jaringan antara sistem sinkronisasi data dan server, yang secara signifikan dapat meningkatkan performa ekstraksi data.

Catatan

Jika nilai fetchSize terlalu besar (>2048), error out-of-memory (OOM) dapat terjadi dalam proses sinkronisasi data.

Tidak

1024

Contoh skrip Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"db2",// Nama plug-in.
            "parameter":{
                "postSql":[],// Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data.
                "password":"",// Kata sandi.
                "jdbcUrl":"jdbc:db2://ip:port/database",// String koneksi JDBC untuk database DB2.
                "column":[
                    "id"
                ],
                "batchSize":1024,// Jumlah catatan yang dikirimkan dalam satu batch.
                "table":"",// Nama tabel.
                "username":"",// Nama pengguna.
                "preSql":[]// Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju. 1 mbps setara dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

jdbcUrl

String koneksi JDBC untuk database DB2. URL JDBC harus mengikuti spesifikasi resmi DB2. Formatnya adalah jdbc:db2://ip:port/database. Anda juga dapat menambahkan informasi kontrol lampiran koneksi.

Ya

Tidak ada

username

Nama pengguna untuk sumber data.

Ya

Tidak ada

password

Kata sandi untuk nama pengguna yang ditentukan dari sumber data.

Ya

Tidak ada

table

Tabel tujuan tempat Anda ingin menyinkronkan data.

Ya

Tidak ada

column

Field di tabel tujuan tempat Anda ingin menulis data. Pisahkan field dengan koma (,). Contoh: "column": ["id", "name", "age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "column": ["*"] .

Ya

Tidak ada

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data. Saat ini, hanya satu pernyataan SQL yang dapat dieksekusi. Misalnya, Anda dapat menggunakannya untuk purge data lama.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data. Di Antarmuka tanpa kode, hanya satu pernyataan SQL yang diizinkan. Di editor kode, beberapa pernyataan SQL didukung. Misalnya, Anda dapat menggunakannya untuk menambahkan timestamp.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirimkan dalam satu batch. Nilai ini secara signifikan dapat mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan Db2, serta meningkatkan throughput keseluruhan. Jika nilai ini diatur terlalu tinggi, error OOM dapat terjadi dalam proses sinkronisasi data.

Tidak

1024