All Products
Search
Document Center

DataWorks:KingbaseES

Last Updated:Mar 01, 2026

Sumber data KingbaseES menyediakan saluran dua arah untuk membaca dan menulis data ke KingbaseES. Topik ini menjelaskan kemampuan sinkronisasi data dari sumber data KingbaseES di DataWorks.

Batasan

Tipe bidang yang didukung

Tabel berikut mencantumkan tipe data yang didukung oleh KingbaseES Reader.

Kategori

Tipe data di sumber data

Integer

INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT

Floating-point

FLOAT, DOUBLE, dan DECIMAL

String

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT

Tanggal dan waktu

DATE, DATETIME, TIMESTAMP, TIME, dan YEAR

Boolean

BIT dan BOOL

Biner

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY

Penting
  • Tipe bidang yang tidak tercantum dalam tabel tidak didukung.

  • Plugin KingbaseES Reader memperlakukan tinyint(1) sebagai integer.

Tambahkan sumber data

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

Kembangkan tugas sinkronisasi data

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

Konfigurasikan tugas sinkronisasi offline untuk satu tabel

Lampiran: Contoh skrip dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan format skrip terpadu. Untuk informasi selengkapnya, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat mengatur tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

  • Konfigurasi database tunggal dan tabel tunggal

    {
        "type":"job",
        "version":"2.0",// Nomor versi.
        "steps":[
            {
                "stepType":"kingbasees",// Nama plugin.
                "parameter":{
                    "column":[// Nama kolom.
                        "id"
                    ],
                    "connection":[
                        {   "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // Gunakan string untuk menulis querySql di connection.
                            "datasource":"",// Sumber data.
                            "table":[// Nama tabel. Meskipun hanya ada satu tabel, Anda harus menuliskannya dalam format array dengan [].
                                "xxx"
                            ]
                        }
                    ],
                    "where":"",// Kondisi filter.
                    "splitPk":"",// Kunci pemisah.
                    "encoding":"UTF-8"// Format encoding.
                },
                "name":"Reader",
                "category":"reader"
            },
            {
                "stepType":"stream",
                "parameter":{},
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting":{
            "errorLimit":{
                "record":"0"// Jumlah catatan error.
            },
            "speed":{
                "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
                "concurrent":1, // Konkurensi job.
                "mbps":"12"// Batas laju data. 1 mbps = 1 MB/s.
            }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        }
    }
  • Contoh konfigurasi untuk database dan tabel terpartisi (sharded)

    Catatan

    Sharding berarti Anda dapat memilih beberapa tabel KingbaseES di KingbaseES Reader. Skema tabel-tabel tersebut harus sama.

    {
        "type": "job",
        "version": "1.0",
        "configuration": {
            "reader": {
                "plugin": "kingbasees",
                "parameter": {
                    "connection": [
                        {
                            "table": [
                                "tbl1",
                                "tbl2",
                                "tbl3"
                            ],
                            "datasource": "datasourceName1"
                        },
                        {
                            "table": [
                                "tbl4",
                                "tbl5",
                                "tbl6"
                            ],
                            "datasource": "datasourceName2"
                        }
                    ],
                    "singleOrMulti": "multi",
                    "splitPk": "db_id",
                    "column": [
                        "id", "name", "age"
                    ],
                    "where": "1 < id and id < 100"
                }
            },
            "writer": {            
            }
        }
    }

Parameter

Deskripsi

username

Username.

password

Password.

column

Nama bidang yang akan disinkronkan. Untuk menyinkronkan semua kolom, gunakan tanda bintang (*).

table

Nama tabel yang akan disinkronkan.

jdbcUrl

URL Java Database Connectivity (JDBC) yang digunakan untuk terhubung ke KingbaseES. Contoh: jdbc:kingbase8://127.0.0.1:30215?currentschema=TEST.

splitPk

Bidang dalam tabel KingbaseES yang digunakan sebagai kunci pemisah (split key) untuk sinkronisasi. Kunci pemisah membantu menyinkronkan tabel KingbaseES dengan konkurensi tinggi.

Kunci pemisah harus berupa bidang integer numerik. Jika tidak ada bidang seperti itu, Anda dapat mengosongkan parameter ini.

Contoh skrip Writer

Kode berikut menunjukkan contoh konfigurasi skrip.

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"kingbasees",// Nama plugin.
            "parameter":{
                "postSql":[],// Pernyataan persiapan yang dieksekusi setelah impor.
                "datasource":"",// Sumber data.
                "column":[// Nama kolom.
                    "id",
                    "value"
                ],
                "batchSize":1024,// Jumlah catatan yang dikirim dalam satu batch.
                "table":"",// Nama tabel.
                "preSql":[
                     "delete from XXX;" // Pernyataan persiapan yang dieksekusi sebelum impor.
                   ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{// Jumlah catatan error.
            "record":"0"
        },
        "speed":{
            "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
            "concurrent":1, // Konkurensi job.
            "mbps":"12"// Batas laju data. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

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

table

Nama tabel yang akan disinkronkan.

Ya

Tidak ada

column

Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma (,). Contoh: "column": ["id", "name", "age"].

Untuk menulis data ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "column":["*"].

Catatan

Jika nama bidang sumber berisi garis miring (/), Anda harus melakukan escape dengan backslash dan tanda kutip ganda (\"nama_kolom_anda\"). Misalnya, jika nama bidang adalah /abc/efg, maka nama bidang yang di-escape adalah \"/abc/efg\".

Ya

Tidak ada

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data dijalankan. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL. Misalnya, Anda dapat menjalankan pernyataan berikut untuk menghapus data lama dari tabel sebelum tugas dijalankan:

truncate table tablename
Catatan

Jika Anda menentukan beberapa pernyataan SQL, atomicitas transaksi tidak didukung.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data dijalankan. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL. Misalnya, Anda dapat menambahkan timestamp: alter table tablenameadd colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirim dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi interaksi jaringan antara sistem sinkronisasi data dan sumber data, serta meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, kesalahan kehabisan memori (OOM) dapat terjadi dalam proses sinkronisasi data.

Tidak

1024