All Products
Search
Document Center

DataWorks:DB2

Last Updated:Sep 25, 2026

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 where atau querySql)

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 menggunakan PreparedStatement + Batch dengan rewriteBatchedStatements=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 parameter preSql dan postSql.
  • 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

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 klausa where menggunakan timestamp dari proses sinkronisasi sebelumnya. Ini menangkap baris baru, diperbarui, dan dihapus secara logis.

  • Untuk data append-only, konfigurasikan klausa where menggunakan 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

datasource

Nama sumber data sebagaimana dikonfigurasi di DataWorks.

Ya

None

jdbcUrl

URL JDBC untuk database DB2. Format: jdbc:db2://ip:port/database. Anda dapat menambahkan atribut kontrol koneksi.

Ya

None

username

Username untuk sumber data.

Ya

None

password

Password untuk username tersebut.

Ya

None

table

Tabel sumber. Satu job hanya dapat membaca dari satu tabel.

Ya

None

column

Kolom yang akan dibaca, ditentukan sebagai array JSON. Semua kolom: ["*"]. Mendukung pemangkasan kolom, pengubahan urutan kolom, dan konstanta. Konstanta harus mengikuti sintaks SQL DB2, contohnya: ["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3", "true"]. Tidak boleh kosong.

Ya

None

splitPk

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

""

where

Kondisi filter. DB2 Reader menyusun pernyataan SELECT dari column, table, dan where, lalu mengekstrak data yang sesuai. Misalnya, atur where menjadi gmt_create>$bizdate untuk sinkronisasi inkremental harian. Jika dibiarkan kosong, semua baris dalam tabel disinkronkan.

Tidak

None

querySql

Pernyataan SELECT kustom untuk kasus ketika where tidak cukup—misalnya, untuk menyinkronkan hasil penggabungan multi-tabel: select a,b from table_a join table_b on table_a.id = table_b.id. Saat querySql diatur, parameter table, column, dan where diabaikan.

Tidak

None

fetchSize

Jumlah catatan yang diambil per batch dari database. Nilai yang lebih besar mengurangi round trip jaringan dan meningkatkan performa ekstraksi.

Tidak

1024

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

jdbcUrl

URL JDBC untuk database DB2. Format: jdbc:db2://ip:port/database. Anda dapat menambahkan atribut kontrol koneksi.

Ya

None

username

Username untuk sumber data.

Ya

None

password

Password untuk username tersebut.

Ya

None

table

Tabel tujuan.

Ya

None

column

Kolom tujuan yang akan ditulis, ditentukan sebagai array JSON. Contoh: ["id", "name", "age"]. Untuk menulis ke semua kolom secara berurutan, gunakan ["*"].

Ya

None

preSql

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

postSql

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

batchSize

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

1024