全部产品
Search
文档中心

DataWorks:Sumber data Db2

更新时间:Jul 06, 2025

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 objek PreparedStatement dan mengatur parameter rewriteBatchedStatements menjadi true. Dengan cara ini, Data Integration mengirimkan permintaan tulis ketika jumlah data yang di-buffer mencapai ambang batas tertentu.

    Catatan

    Tugas 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

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 SELECT dengan 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 jdbc:db2://ip:port/database sesuai dengan spesifikasi resmi Db2. Anda juga dapat menentukan informasi fasilitas lampiran.

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.

  • Anda dapat memilih kolom tertentu untuk dibaca.

  • Urutan kolom dapat diubah. Ini menunjukkan bahwa Anda dapat menentukan kolom dalam urutan yang berbeda dari urutan yang ditentukan oleh skema tabel sumber.

  • Konstanta didukung. Nama kolom harus diatur sesuai dengan sintaks SQL yang didukung oleh Db2, seperti ["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3" , "true"].

    • id: nama kolom.

    • 1: konstanta integer.

    • 'const name': konstanta string, yang diapit oleh tanda kutip tunggal (').

    • null: pointer null.

    • upper('abc_lower'): ekspresi fungsi.

    • 2.3: konstanta floating-point.

    • true: nilai Boolean.

  • Parameter column harus secara eksplisit menentukan semua kolom tempat Anda ingin membaca data. Parameter ini tidak boleh dibiarkan kosong.

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.

  • Kami merekomendasikan untuk menyetel parameter splitPk ke nama kolom kunci utama tabel. Data dapat didistribusikan secara merata ke shard yang berbeda berdasarkan kolom kunci utama, bukan didistribusikan intensif hanya ke shard tertentu.

  • Parameter splitPk hanya mendukung sharding untuk data tipe data integer. Jika Anda menyetel parameter ini ke kolom tipe data yang tidak didukung, seperti string, floating point, atau tanggal, kesalahan akan dilaporkan.

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 gmt_create > $bizdate dalam skenario bisnis aktual untuk membaca data yang dihasilkan pada hari saat ini. Anda dapat menggunakan klausa WHERE untuk membaca data inkremental. Jika parameter ini dibiarkan kosong, Db2 Reader membaca semua data dalam tabel sumber.

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 select a,b from table_a join table_b on table_a.id = table_b.id. Jika Anda mengonfigurasi parameter querySql, Db2 Reader mengabaikan parameter table, column, dan where yang Anda konfigurasikan.

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