Sumber data MariaDB menyediakan saluran dua arah untuk membaca dan menulis data ke MariaDB. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan oleh DataWorks untuk MariaDB.
Versi MariaDB yang didukung
Sumber data MariaDB mendukung versi-versi berikut:
MariaDB versi 5.5.x, 10.0.x, 10.1.x, 10.2.x, dan 10.3.x didukung. Anda juga dapat membaca data dari view menggunakan sinkronisasi offline.
Tipe field yang didukung
Untuk daftar lengkap tipe field setiap versi MariaDB, lihat dokumentasi resmi MariaDB. Tabel berikut mencantumkan tipe field utama yang didukung untuk MariaDB 10.3.x.
Field type | Offline read (MariaDB Reader) | Offline write (MariaDB Writer) |
TINYINT | Support | Support |
SMALLINT | Support | Support |
INTEGER | Support | Support |
BIGINT | Support | Supported |
FLOAT | Supported | Support |
DOUBLE | Supported | Support |
DECIMAL/NUMERIC | Support | Supported |
REAL | Not supported | Not supported |
VARCHAR | Support | Support |
JSON | Supported | Support |
TEXT | Support | Support |
MEDIUMTEXT | Supported | Supported |
LONGTEXT | Support | Support |
VARBINARY | Supported | Support |
BINARY | Support | Supported |
TINYBLOB | Support | Support |
MEDIUMBLOB | Support | Support |
LONGBLOB | Support | Support |
ENUM | Support | Support |
SET | Support | Supported |
BOOLEAN | Supported | Support |
BIT | Support | Supported |
DATE | Support | Support |
DATETIME | Support | Support |
TIMESTAMP | Supported | Support |
TIME | Support | Support |
YEAR | Support | Support |
LINESTRING | Not supported | Not supported |
POLYGON | Not supported | Not supported |
MULTIPOINT | Not supported | Not supported |
MULTILINESTRING | Not supported | Not supported |
MULTIPOLYGON | Not supported | Not supported |
GEOMETRYCOLLECTION | Not supported | Not supported |
Prasyarat: Siapkan lingkungan MariaDB
Sebelum melakukan sinkronisasi data menggunakan DataWorks, Anda harus menyiapkan lingkungan MariaDB terlebih dahulu agar dapat mengonfigurasi dan menjalankan tugas sinkronisasi data MariaDB tanpa kendala.
Konfirmasi versi MariaDB
Integrasi data mendukung versi-versi tertentu MariaDB. Untuk informasi lebih lanjut, lihat bagian Versi MariaDB yang didukung. Anda dapat menjalankan pernyataan berikut di database MariaDB untuk memeriksa versinya.
Konfigurasikan izin akun
Buat akun MariaDB khusus bagi DataWorks untuk mengakses sumber data.
(Opsional) Buat akun.
Untuk informasi lebih lanjut, lihat Create a MariaDB user.
Konfigurasikan izin.
Untuk pembacaan offline dari MariaDB, akun tersebut harus memiliki izin SELECT pada tabel yang akan disinkronkan.
Untuk penulisan offline ke MariaDB, akun tersebut harus memiliki izin INSERT, DELETE, dan UPDATE pada tabel yang akan disinkronkan.
Anda dapat menjalankan perintah berikut untuk memberikan izin kepada akun atau langsung memberikan izin SUPER. Saat menjalankan pernyataan berikut, ganti 'sync_account' dengan akun yang telah Anda buat.
-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password'; // Membuat akun sinkronisasi, menetapkan password, dan mengizinkan login dari host mana pun. Tanda at (%) menunjukkan host apa pun. GRANT SELECT, INSERT, DELETE, UPDATE ON *.* TO 'sync_account'@'%'; // Memberikan izin SELECT, INSERT, DELETE, dan UPDATE pada database kepada akun sinkronisasi.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks sesuai petunjuk dalam Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Kembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Panduan konfigurasi tugas sinkronisasi offline untuk satu tabel
Untuk informasi lebih lanjut, lihat Configure a task in the code editor.
Untuk semua parameter dan contoh skrip editor kode, lihat bagian Appendix: MariaDB script example and parameter descriptions.
Lampiran: Contoh skrip MariaDB 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 format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat menyiapkan tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"mariadb",// 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 dalam connection.
"datasource":"",// Sumber data.
"table":[// Nama tabel. Meskipun hanya ada satu tabel, Anda harus menuliskannya dalam format array [].
"xxx"
]
}
],
"where":"",// Kondisi filter.
"splitPk":"",// Kunci pemisahan.
"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 tidak dibatasi. Jika throttle diatur ke true, laju dibatasi.
"concurrent":1,// Konkurensi pekerjaan.
"mbps":"12"// Batas laju. Di sini, 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Reader
Script Parameter Name | Description | Required | Default value |
datasource | Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan. | Yes | None |
table | Nama tabel tempat data akan disinkronkan. Satu tugas integrasi data hanya dapat menyinkronkan data ke satu tabel tujuan. Contoh berikut menunjukkan penggunaan lanjutan parameter table untuk mengonfigurasi rentang:
Catatan Tugas tersebut membaca data dari semua tabel yang cocok. Secara spesifik, ia membaca kolom yang ditentukan oleh parameter column. Jika suatu tabel atau kolom yang ditentukan tidak ada, tugas akan gagal. | Yes | None |
column | Kumpulan kolom yang akan disinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan informasi field. Secara default, semua kolom digunakan. Misalnya, [ * ].
| Yes | None |
splitPk | Saat MariaDB Reader mengekstraksi data, jika Anda menentukan splitPk, field yang diwakili oleh splitPk digunakan untuk partisi data. Tugas sinkronisasi data kemudian memulai subtask konkuren untuk meningkatkan efisiensi.
| No | None |
where | Kondisi filter. Dalam banyak skenario bisnis, Anda mungkin menyinkronkan data dari hari ini dengan mengatur kondisi where menjadi gmt_create>$bizdate.
| No | None |
querySql (Parameter ini tidak didukung di Antarmuka tanpa kode.) | Dalam beberapa skenario bisnis, parameter where tidak cukup untuk mendefinisikan kondisi filter. Anda dapat menggunakan parameter ini untuk mendefinisikan pernyataan SQL filter. tablescolumnssplitPk Misalnya, untuk menyinkronkan data setelah penggabungan multi-tabel, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, MariaDB Reader mengabaikan parameter table, column, where, dan splitPk. Parameter querySql memiliki prioritas lebih tinggi daripada parameter table, column, where, dan splitPk. Parameter datasource digunakan untuk mengurai informasi seperti username dan password. Catatan Parameter querySql bersifat case-sensitive. Misalnya, jika Anda menuliskannya sebagai querysql, maka tidak berlaku. | No | None |
Contoh skrip Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"mariadb",// Nama plugin.
"parameter":{
"postSql":[],// Pernyataan yang dijalankan setelah impor.
"datasource":"",// Sumber data.
"column":[// Nama kolom.
"id",
"value"
],
"writeMode":"insert",// Mode penulisan. Anda dapat mengaturnya ke insert, replace, atau update.
"batchSize":1024,// Jumlah catatan yang dikirimkan dalam satu batch.
"table":"",// Nama tabel.
"preSql":[
"delete from XXX;" // Pernyataan yang dijalankan 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 tidak dibatasi. Jika throttle diatur ke true, laju dibatasi.
"concurrent":1, // Konkurensi pekerjaan.
"mbps":"12"// Batas laju. Ini mengontrol laju sinkronisasi maksimum untuk mencegah tekanan baca/tulis berlebihan pada database hulu atau hilir. Di sini, 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Script Parameter Name | Description | Required | Default value |
datasource | Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan. | Yes | None |
table | Nama tabel tempat data akan disinkronkan. | Yes | None |
writeMode | Mode impor. Mode insert into, on duplicate key update, dan replace into didukung:
| No | insert into |
column | Field di tabel tujuan tempat data akan ditulis. Pisahkan field dengan koma (,). Misalnya, "column": ["id", "name", "age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Misalnya, "column": ["*"]. | Yes | None |
preSql | Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL. Misalnya, Anda dapat menghapus data lama dari tabel sebelum tugas dijalankan (truncate table tablename). Catatan Transaksi tidak didukung untuk beberapa pernyataan SQL. | No | None |
postSql | Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data dijalankan. Antarmuka tanpa kode hanya mendukung satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL. Misalnya, Anda dapat menambahkan timestamp Catatan Transaksi tidak didukung untuk beberapa pernyataan SQL. | No | None |
batchSize | Jumlah catatan yang dikirimkan dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi interaksi jaringan antara sistem sinkronisasi data dan MariaDB, sehingga meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, error kehabisan memori (OOM) dapat terjadi dalam proses sinkronisasi data. | No | 256 |
updateColumn | Field yang akan diperbarui ketika terjadi konflik primary key atau unique index. Parameter ini digunakan ketika writeMode diatur ke update. Pisahkan field dengan koma (,). Misalnya, "updateColumn":["name", "age"]. | No | None |