DataWorks menyediakan MariaDB Reader dan MariaDB Writer untuk membaca dan menulis data ke sumber data MariaDB. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data MariaDB.
Versi MariaDB yang didukung
Pembacaan dan penulisan data batch
MariaDB 5.5.x, MariaDB 10.0.x, MariaDB 10.1.x, MariaDB 10.2.x, dan MariaDB 10.3.x didukung. Data dari Tampilan dapat dibaca selama sinkronisasi batch.
Tipe data yang didukung
Untuk informasi tentang semua tipe data di setiap versi MariaDB, lihat dokumentasi resmi MariaDB. Tabel berikut memberikan status dukungan untuk tipe data utama di MariaDB 10.3.x.
Tipe data | MariaDB Reader untuk pembacaan data batch | MariaDB Writer untuk penulisan data batch |
TINYINT | Didukung | Didukung |
SMALLINT | Didukung | Didukung |
INTEGER | Didukung | Didukung |
BIGINT | Didukung | Didukung |
FLOAT | Didukung | Didukung |
DOUBLE | Didukung | Didukung |
DECIMAL/NUMBERIC | Didukung | Didukung |
REAL | Tidak didukung | Tidak didukung |
VARCHAR | Didukung | Didukung |
JSON | Didukung | Didukung |
TEXT | Didukung | Didukung |
MEDIUMTEXT | Didukung | Didukung |
LONGTEXT | Didukung | Didukung |
VARBINARY | Didukung | Didukung |
BINARY | Didukung | Didukung |
TINYBLOB | Didukung | Didukung |
MEDIUMBLOB | Didukung | Didukung |
LONGBLOB | Didukung | Didukung |
ENUM | Didukung | Didukung |
SET | Didukung | Didukung |
BOOLEAN | Didukung | Didukung |
BIT | Didukung | Didukung |
DATE | Didukung | Didukung |
DATETIME | Didukung | Didukung |
TIMESTAMP | Didukung | Didukung |
TIME | Didukung | Didukung |
YEAR | Didukung | Didukung |
LINESTRING | Tidak didukung | Tidak didukung |
POLYGON | Tidak didukung | Tidak didukung |
MULTIPOINT | Tidak didukung | Tidak didukung |
MULTILINESTRING | Tidak didukung | Tidak didukung |
MULTIPOLYGON | Tidak didukung | Tidak didukung |
GEOMETRYCOLLECTION | Tidak didukung | Tidak didukung |
Siapkan lingkungan MariaDB sebelum sinkronisasi data
Sebelum menggunakan DataWorks untuk menyinkronkan data dari atau ke sumber data MariaDB, Anda harus menyiapkan lingkungan MariaDB. Hal ini memastikan bahwa tugas sinkronisasi dapat dikonfigurasi dan berjalan sesuai harapan. Berikut adalah langkah-langkah untuk menyiapkan lingkungan MariaDB.
Persiapan 1: Periksa versi database MariaDB Anda
Data Integration memiliki persyaratan khusus untuk versi MariaDB. Anda dapat merujuk ke Versi MariaDB yang Didukung untuk memeriksa apakah versi database MariaDB Anda memenuhi persyaratan. Jalankan pernyataan terkait untuk memeriksa versi database MariaDB Anda.
Persiapan 2: Siapkan akun dengan izin yang diperlukan
Kami merekomendasikan agar Anda merencanakan dan membuat akun untuk DataWorks mengakses database MariaDB Anda. Berikut adalah langkah-langkah untuk menyiapkan akun tersebut:
Buat akun. Langkah ini opsional.
Untuk informasi lebih lanjut, lihat Buat akun yang digunakan untuk mengakses database MariaDB.
Berikan izin yang diperlukan kepada akun tersebut.
Pembacaan data batch: Akun harus memiliki izin SELECT.
Penulisan data batch: Akun harus memiliki izin INSERT, DELETE, dan UPDATE.
Jalankan pernyataan berikut untuk memberikan izin kepada akun tersebut. Sebagai alternatif, berikan izin SUPER kepada akun tersebut. Ganti Akun untuk sinkronisasi data dengan akun yang telah dibuat saat Anda menjalankan pernyataan tersebut.
-- CREATE USER 'Akun untuk sinkronisasi data'@'%' IDENTIFIED BY 'Password'; //Buat akun yang dapat digunakan untuk sinkronisasi data dan tentukan kata sandi. Dengan cara ini, Anda dapat menggunakan akun dan kata sandi untuk mengakses database dari host mana pun. % menunjukkan host. GRANT SELECT, INSERT, DELETE,UPDATE CLIENT ON *.* TO 'Akun untuk sinkronisasi data'@'%'; //Berikan izin SELECT, INSERT, DELETE, dan UPDATE kepada akun tersebut.
Kembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi data, lihat bagian berikut. Untuk informasi tentang pengaturan parameter, lihat infotip setiap parameter pada tab konfigurasi tugas.
Tambahkan sumber data
Konfigurasikan tugas sinkronisasi batch untuk menyinkronkan data tabel tunggal
Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode dan Konfigurasikan Tugas Sinkronisasi Batch Menggunakan UI Tanpa 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 MariaDB 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;"], // Pernyataan SQL yang digunakan untuk membaca data dari tabel sumber.
"datasource":"",// Nama sumber data.
"table":[// Nama tabel sumber. Nama tabel harus diapit oleh tanda kurung [].
"xxx"
]
}
],
"where":"",// Klausul WHERE.
"splitPk":"",// Kunci shard.
"encoding":"UTF-8"// Format penyandian.
},
"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"
}
]
}
}Parameter dalam kode untuk MariaDB Reader
Parameter | Deskripsi | Diperlukan | Nilai default |
datasource | Nama sumber data. Harus sama dengan nama sumber data yang ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode. | Ya | Tidak ada nilai default |
table | Nama tabel dari mana Anda ingin membaca data. Setiap tugas sinkronisasi hanya dapat digunakan untuk menyinkronkan data ke satu tabel. Contoh berikut menunjukkan penggunaan lanjutan parameter table. Dalam contoh, parameter table digunakan untuk menentukan rentang tabel.
Catatan MariaDB Reader membaca data dari kolom yang ditentukan oleh parameter column di partisi yang ditentukan oleh parameter table. Jika partisi atau kolom yang ditentukan tidak ada, tugas sinkronisasi gagal. | Ya | Tidak ada nilai default |
column | Nama kolom dari mana Anda ingin membaca data. Tentukan nama dalam array JSON. Nilai default adalah [ * ], yang menunjukkan semua kolom di tabel sumber.
| Ya | Tidak ada nilai default |
splitPk | Field yang digunakan untuk sharding data ketika MariaDB 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. Dengan cara ini, data dapat disinkronkan lebih efisien.
| Tidak | Tidak ada nilai default |
where | Klausul WHERE. Misalnya, Anda dapat menyetel parameter ini ke gmt_create > $bizdate untuk membaca data yang dihasilkan pada hari saat ini.
| Tidak | Tidak ada nilai default |
querySql (parameter lanjutan, yang hanya tersedia di editor kode) | Pernyataan SQL yang digunakan untuk penyaringan data yang lebih halus. Jika Anda mengonfigurasi parameter ini, MariaDB Reader mengabaikan pengaturan parameter table, column, dan splitPk dan hanya menyaring data berdasarkan nilai parameter ini. Sebagai contoh, jika Anda ingin menggabungkan beberapa tabel untuk sinkronisasi data, setel parameter ini ke select a,b from table_a join table_b on table_a.id = table_b.id. Prioritas parameter querySql lebih tinggi daripada prioritas parameter table, column, where, dan splitPk. Jika Anda mengonfigurasi parameter querySql, MariaDB Reader mengabaikan pengaturan parameter table, column, where, dan splitPk. Sistem mengurai informasi, seperti nama pengguna dan kata sandi, dari sumber data yang ditentukan oleh parameter datasource dari parameter querySql. Catatan Nama parameter querySql bersifat case-sensitive. Sebagai contoh, querysql tidak akan berlaku. | Tidak | Tidak ada nilai default |
Kode untuk MariaDB Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"mariadb",// Nama Plugin.
"parameter":{
"postSql":[],// Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan.
"datasource":"",// Nama sumber data.
"column":[// Nama kolom.
"id",
"value"
],
"writeMode":"insert into",// Mode penulisan. Nilai valid: insert into, replace into, dan on duplicate key update.
"batchSize":1024,// Jumlah catatan data yang ditulis sekaligus.
"table":"",// Nama tabel.
"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. Menyetel parameter ini ke nilai yang sesuai dapat mengurangi beban baca pada sumber dan beban tulis pada tujuan.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter dalam kode untuk MariaDB Writer
Parameter | Deskripsi | Diperlukan | Nilai default |
datasource | Nama sumber data. Harus sama dengan nama sumber data yang 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 |
writeMode | Mode penulisan. Nilai valid: insert into, on duplicate key update, dan replace into.
| Tidak | insert into |
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, setel parameter ini ke asterisk (*), seperti "column":["*"]. | 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. Sebagai contoh, Anda dapat menjalankan pernyataan TRUNCATE TABLE tablename untuk menghapus data lama sebelum tugas sinkronisasi dijalankan. Catatan Jika Anda menentukan beberapa pernyataan SQL, pernyataan tersebut tidak dijalankan dalam transaksi yang sama. | 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. Sebagai contoh, Anda dapat menjalankan pernyataan ALTER TABLE tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP untuk menambahkan cap waktu setelah tugas sinkronisasi dijalankan. Catatan Jika Anda menentukan beberapa pernyataan SQL, pernyataan tersebut tidak dijalankan dalam transaksi yang sama. | Tidak | Tidak ada nilai default |
batchSize | Jumlah catatan data yang ditulis sekaligus. Setel parameter ini ke nilai yang sesuai berdasarkan kebutuhan bisnis Anda. Ini sangat mengurangi interaksi antara Data Integration dan MariaDB serta meningkatkan throughput. Jika Anda menyetel parameter ini ke nilai yang terlalu besar, kesalahan out of memory (OOM) mungkin terjadi selama sinkronisasi data. | Tidak | 256 |
updateColumn | Nama kolom yang diperbarui saat terjadi konflik kunci utama atau indeks unik. Parameter ini hanya berlaku ketika parameter writeMode disetel ke on duplicate key update. Pisahkan beberapa nama kolom dengan koma (,). Contoh: "updateColumn":["name", "age"]. | Tidak | Tidak ada nilai default |