全部产品
Search
文档中心

DataWorks:Sumber data KingbaseES

更新时间:Jul 02, 2025

DataWorks menyediakan KingbaseES Reader dan KingbaseES Writer untuk membaca data dari serta menulis data ke sumber data KingbaseES. Topik ini menjelaskan kemampuan dalam menyinkronkan data dari atau ke sumber data KingbaseES.

Batasan

  • Sumber data KingbaseES hanya mendukung kelompok sumber daya eksklusif untuk Data Integration.

  • Tugas sinkronisasi yang menggunakan KingbaseES Writer memerlukan setidaknya izin untuk menjalankan pernyataan INSERT INTO or REPLACE INTO. Kebutuhan izin tambahan bergantung pada pernyataan SQL yang ditentukan dalam parameter preSql dan postSql saat mengonfigurasi tugas tersebut.

Pemetaan Tipe Data

Tabel berikut mencantumkan pemetaan tipe data berdasarkan konversi oleh KingbaseES Reader.

Kategori

Tipe data KingbaseES

Integer

INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT

Bilangan titik mengambang

FLOAT, DOUBLE, dan DECIMAL

String

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

Tanggal dan waktu

DATE, DATETIME, TIMESTAMP, TIME, dan YEAR

Boolean

BIT dan BOOLEAN

Biner

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY

Penting
  • Tipe data yang tidak tercantum dalam tabel sebelumnya tidak didukung.

  • KingbaseES Reader memproses TINYINT(1) sebagai tipe data integer.

Mengembangkan Tugas Sinkronisasi Data

Untuk informasi tentang titik masuk dan prosedur mengonfigurasi tugas sinkronisasi data, lihat bagian berikut. Untuk detail pengaturan parameter, lihat infotip setiap parameter di tab konfigurasi tugas.

Tambahkan Sumber Data

Konfigurasikan Tugas Sinkronisasi Batch untuk Menyinkronkan Data dari Satu Tabel

Lampiran: Kode dan Parameter

Lampiran: Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode

Kode untuk KingbaseES Reader

  • Konfigurasikan tugas sinkronisasi untuk membaca data dari tabel yang tidak di-sharding.

    {
        "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;"], // Pernyataan SQL yang digunakan untuk membaca data dari tabel sumber.
                            "datasource":"",// Nama sumber data.
                            "table":[// Nama tabel. Nama tabel harus diapit dengan tanda kurung [].
                                "xxx"
                            ]
                        }
                    ],
                    "where":"",// Klausul WHERE.
                    "splitPk":"",// Kunci shard.
                    "encoding":"UTF-8"// Format encoding.
                },
                "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 akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true.
                "concurrent":1, // Jumlah maksimum thread paralel.
                "mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
            }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        }
    }
  • Konfigurasikan tugas sinkronisasi untuk membaca data dari tabel yang di-sharding.

    Catatan

    Saat mengonfigurasi tugas sinkronisasi untuk membaca data dari tabel KingbaseES yang di-sharding, Anda dapat memilih beberapa shard tabel dengan skema yang 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 dalam kode untuk KingbaseES Reader

Parameter

Deskripsi

username

Nama pengguna yang digunakan untuk terhubung ke KingbaseES.

password

Kata sandi yang digunakan untuk terhubung ke KingbaseES.

column

Nama kolom dari mana Anda ingin membaca data. Jika Anda ingin membaca data dari semua kolom di tabel sumber, atur parameter ini ke asterisk (*).

table

Nama tabel dari mana Anda ingin membaca data.

jdbcUrl

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

splitPk

Bidang yang digunakan untuk sharding data saat KingbaseES 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.

Anda dapat menentukan bidang tipe data integer untuk parameter splitPk. Jika tabel sumber tidak berisi bidang tipe data integer, Anda dapat membiarkan parameter ini kosong.

Kode untuk KingbaseES Writer

Kode berikut mengonfigurasi tugas sinkronisasi untuk menulis data ke database KingbaseES:

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"kingbasees",// Nama plugin.
            "parameter":{
                "postSql":[],// Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan.
                "datasource":"",// Nama sumber data.
                "column":[// Nama kolom.
                    "id",
                    "value"
                ],
                "batchSize":1024,// Jumlah catatan data yang ditulis sekaligus.
                "table":"",// Nama tabel ke mana Anda ingin menulis data.
                "preSql":[
                     "delete from XXX;" // Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan.
                   ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{// Jumlah maksimum catatan data kotor yang diizinkan.
            "record":"0"
        },
        "speed":{
            "throttle":true,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel 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 KingbaseES Writer

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

table

Nama tabel ke mana Anda ingin menulis data.

Ya

Tidak ada nilai default

column

Nama kolom ke mana Anda ingin menulis data. Pisahkan nama dengan koma (,), seperti "column": ["id", "name", "age"].

Jika Anda ingin menulis data ke semua kolom di tabel tujuan, atur parameter ini ke asterisk (*), seperti "column": ["*"].

Catatan

Jika nama kolom yang Anda tentukan mengandung garis miring (/), Anda harus meloloskan nama kolom dalam format \"nama_kolom_anda\" menggunakan backslash (\). Misalnya, jika nama kolom adalah /abc/efg, itu harus diloloskan sebagai \"/abc/efg\".

Ya

Tidak ada nilai default

preSql

Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan. Anda hanya dapat menjalankan satu pernyataan SQL di UI tanpa kode dan beberapa pernyataan SQL di editor kode. Misalnya, Anda dapat mengatur parameter ini ke pernyataan SQL berikut yang digunakan untuk menghapus data usang:

truncate table tablename

Catatan

Jika Anda menentukan beberapa pernyataan SQL, tidak dapat dipastikan apakah semua pernyataan dapat berhasil dieksekusi.

Tidak

Tidak ada nilai default

postSql

Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan. Anda hanya dapat menjalankan satu pernyataan SQL di UI tanpa kode dan beberapa pernyataan SQL di editor kode. Misalnya, Anda dapat mengatur parameter ini ke pernyataan SQL alter table tablenameadd colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP yang digunakan untuk menambahkan timestamp.

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 KingbaseES serta meningkatkan throughput. Jika Anda mengatur parameter ini ke nilai yang terlalu besar, kesalahan out of memory (OOM) mungkin terjadi selama sinkronisasi data.

Tidak

1024