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
Sumber data ini hanya mendukung Serverless resource groups (direkomendasikan) dan exclusive resource groups for Data Integration.
Tugas sinkronisasi memerlukan izin
insert/replace into. Saat mengonfigurasi tugas sinkronisasi, Anda dapat menentukan pernyataan dalam parameter preSql dan postSql untuk menentukan apakah diperlukan izin tambahan.
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 |
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
Untuk petunjuknya, lihat Configure a task in the codeless UI dan Configure a task in the code editor.
Untuk semua parameter dan contoh skrip untuk editor kode, lihat Appendix: Script demo and parameter descriptions.
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)
CatatanSharding 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: Untuk menulis data ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: 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: 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: | 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 |