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 |
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
Untuk detail prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi Batch Menggunakan UI Tanpa Kode dan Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode.
Untuk informasi tentang semua parameter yang dikonfigurasi dan kode yang dijalankan saat menggunakan editor kode untuk mengonfigurasi tugas sinkronisasi batch, lihat Lampiran: Kode dan Parameter.
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.
CatatanSaat 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 Jika Anda ingin menulis data ke semua kolom di tabel tujuan, atur parameter ini ke asterisk (*), seperti 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: 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 | 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 |