Sumber data GBase8a memungkinkan Anda membaca dan menulis data ke GBase8a. Topik ini menjelaskan kemampuan sinkronisasi data GBase8a di DataWorks.
Batasan
GBase8a Reader dan GBase8a Writer mendukung Serverless resource groups (disarankan) dan exclusive resource groups for Data Integration.
Ketika menggunakan pernyataan
insert into..., jika terjadi konflik pada primary key atau unique index, baris yang bermasalah tidak akan ditulis.Data hanya dapat ditulis ke tabel tujuan di database utama.
CatatanTugas ini memerlukan setidaknya izin
insert into.... Izin tambahan mungkin diperlukan untuk pernyataan yang Anda tentukan pada parameter preSql dan postSql.GBase8a Writer tidak mendukung parameter writeMode.
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 mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Panduan konfigurasi tugas sinkronisasi offline untuk satu tabel
Untuk petunjuknya, lihat Configure in codeless UI dan Configure in code editor.
Untuk deskripsi parameter dan contoh skrip 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 mengatur parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasikan untuk sumber data saat mengatur tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type": "job",
"steps": [
{
"stepType": "gbase8a", // Nama Plugin.
"parameter": {
"datasource": "", // Nama sumber data.
"username": "",
"password": "",
"where": "",
"column": [ // Field.
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [ // Nama tabel.
"table"
],
"datasource":""
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" // Jumlah catatan error.
},
"speed": {
"throttle": true, // Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku, dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
"concurrent": 1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Batasan laju. 1 mbps = 1 MB/s.
}
}
}Parameter | Deskripsi | Wajib | Nilai default |
datasource | Jika versi DataWorks Anda mendukung penambahan sumber data GBase8a, Anda dapat mereferensikan sumber data GBase8a yang telah ditambahkan berdasarkan namanya. | Tidak | Tidak ada |
table | Tabel dari mana Anda ingin menyinkronkan data. Gunakan array JSON untuk menentukan tabel. Anda dapat membaca data dari beberapa tabel sekaligus. Jika Anda mengonfigurasi beberapa tabel, pastikan skema tabel tersebut sama. GBase8a Reader tidak memeriksa apakah tabel memiliki struktur logis yang konsisten. Catatan Parameter table harus disertakan dalam unit konfigurasi connection. | Ya | Tidak ada |
column | Kolom yang akan disinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan field. Secara default, semua kolom digunakan, misalnya [*].
| Ya | Tidak ada |
splitPk | Saat GBase8a Reader mengekstrak data, jika Anda menentukan splitPk, field yang diwakili oleh splitPk digunakan untuk partisi data. Tugas sinkronisasi data kemudian memulai subtask konkuren untuk meningkatkan efisiensi.
| Tidak | Kosong |
where | Kondisi filter. GBase8a Reader membuat pernyataan SQL berdasarkan column, table, dan kondisi where yang ditentukan, lalu mengekstrak data berdasarkan pernyataan SQL tersebut. Misalnya, untuk pengujian, Anda dapat mengatur kondisi where menjadi limit 10. Dalam skenario bisnis umum, Anda mungkin menyinkronkan data hari ini dengan mengatur kondisi where menjadi
| Tidak | Tidak ada |
querySql | Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menentukan pernyataan SQL filter kustom. Jika Anda mengonfigurasi parameter ini, sistem sinkronisasi data mengabaikan parameter tables, columns, dan splitPk, serta menggunakan isi parameter ini untuk memfilter data. Saat Anda mengonfigurasi querySql, GBase8a Reader mengabaikan parameter table, column, where, dan splitPk. | Tidak | Tidak ada |
fetchSize | Parameter ini menentukan jumlah catatan yang diambil dalam setiap batch dari server database. Nilai ini menentukan jumlah interaksi jaringan antara Data Integration dan server, serta dapat secara signifikan meningkatkan kinerja ekstraksi data. Catatan Nilai fetchSize yang terlalu besar (lebih dari 2048) dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data. | Tidak | 1.024 |
Contoh skrip Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"gbase8a",// Nama Plugin.
"parameter":{
"datasource": "Nama sumber data",
"username": "",
"password": "",
"column": [// Field.
"id",
"name"
],
"connection": [
{
"table": [// Nama tabel.
"Gbase8a_table"
],
"datasource":""
}
],
"preSql": [ // Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data berjalan.
"delete from @table where db_id = -1"
],
"postSql": [// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data berjalan.
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku, dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Batasan laju. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip 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 ditambahkan. | Ya | Tidak ada |
table | Nama tabel tempat Anda ingin menulis data. Gunakan array JSON untuk menentukan tabel. Catatan Parameter table harus disertakan dalam unit konfigurasi connection. | Ya | Tidak ada |
column | Field di tabel tujuan tempat Anda ingin menulis data. Pisahkan field dengan koma. Misalnya, Catatan Anda harus menentukan parameter column. Parameter ini tidak boleh kosong. | Ya | Tidak ada |
preSql | Sebelum menulis data ke tabel tujuan, sistem menjalankan pernyataan SQL standar yang ditentukan di sini. Jika pernyataan SQL perlu beroperasi pada tabel, gunakan | Tidak | Tidak ada |
postSql | Setelah menulis data ke tabel tujuan, sistem menjalankan pernyataan SQL standar yang ditentukan di sini. | Tidak | Tidak ada |
batchSize | Jumlah catatan yang dikirimkan dalam satu batch. Nilai ini dapat secara signifikan mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan GBase8a serta meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, hal tersebut dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data. | Tidak | 1.024 |