Sumber data DRDS (PolarDB-X 1.0) memungkinkan Anda membaca dan menulis data ke DRDS (PolarDB-X 1.0). Topik ini menjelaskan kemampuan sinkronisasi data DataWorks untuk sumber data tersebut.
Batasan
Baca dan tulis offline
Plugin DRDS (PolarDB-X 1.0) hanya kompatibel dengan engine MySQL. DRDS (PolarDB-X 1.0) merupakan database MySQL terdistribusi, dan sebagian besar protokol komunikasinya mengikuti standar MySQL.
MySQL 8.0 dalam DRDS (PolarDB-X 1.0) mendukung Serverless resource groups (direkomendasikan) dan exclusive resource groups for Data Integration.
Secara internal, DRDS (PolarDB-X 1.0) Writer terhubung ke proxy database DRDS (PolarDB-X 1.0) remote melalui Java Database Connectivity (JDBC) dan menjalankan pernyataan
replace intountuk menulis data ke DRDS (PolarDB-X 1.0).Karena pernyataan SQL yang dieksekusi adalah
replace into, tabel Anda harus memiliki primary key atau unique index untuk mencegah penulisan data duplikat.DRDS (PolarDB-X 1.0) Writer mengambil data dari Reader melalui framework sinkronisasi data, lalu menulisnya ke DRDS (PolarDB-X 1.0) menggunakan pernyataan
replace into. Jika tidak terjadi konflik pada primary key atau unique index, perilakunya sama sepertiinsert into. Jika terjadi konflik, baris baru akan menggantikan seluruh bidang pada baris yang sudah ada. DRDS (PolarDB-X 1.0) Writer mengumpulkan data dan melakukan commit ke proxy DRDS (PolarDB-X 1.0), yang kemudian menentukan apakah data akan ditulis ke satu atau beberapa tabel serta bagaimana merutekan data saat menulis ke beberapa tabel.CatatanTugas memerlukan setidaknya izin
replace into. Apakah izin tambahan diperlukan bergantung pada pernyataan yang Anda tentukan di preSql dan postSql saat mengonfigurasi tugas.Pembacaan dari view didukung.
Tipe bidang yang didukung
DRDS (PolarDB-X 1.0) Reader dan Writer mendukung sebagian besar tipe data DRDS (PolarDB-X 1.0). Namun, beberapa tipe tidak didukung. Pastikan tipe data Anda termasuk dalam daftar yang didukung.
Tabel berikut mencantumkan tipe data yang didukung oleh DRDS (PolarDB-X 1.0) Reader dan Writer.
Kategori tipe | Tipe data DRDS (PolarDB-X 1.0) |
Tipe integer | INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT |
Tipe bilangan titik mengambang | FLOAT, DOUBLE, dan DECIMAL |
Tipe string | VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT |
Tipe tanggal dan waktu | DATE, DATETIME, TIMESTAMP, TIME, dan YEAR |
Tipe Boolean | BIT dan BOOL |
Tipe biner | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY |
Prasyarat
Buat akun login database dengan izin yang diperlukan untuk melakukan operasi pada DRDS (PolarDB-X 1.0). Untuk informasi selengkapnya, lihat Create an account.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di 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.
Konfigurasikan tugas sinkronisasi offline untuk satu tabel
Untuk informasi lebih lanjut, lihat Configure a task in the codeless UI dan Configure a task in the code editor.
Untuk daftar semua parameter dan contoh skrip untuk editor kode, lihat Appendix: Script demo and parameters.
Konfigurasikan tugas sinkronisasi offline untuk seluruh database
Untuk informasi lebih lanjut, lihat Configure an offline sync task for an entire database.
FAQ
Permasalahan konsistensi view
DRDS (PolarDB-X 1.0) adalah database terdistribusi dan tidak dapat menyediakan view yang konsisten untuk beberapa database dan tabel yang di-shard. Berbeda dengan sinkronisasi data untuk satu database dan tabel MySQL, DRDS (PolarDB-X 1.0) Reader tidak dapat mengekstrak informasi snapshot dari database dan tabel yang di-shard pada time slice yang sama. Artinya, ketika DRDS (PolarDB-X 1.0) Reader mengekstrak data dari tabel-tabel sharded yang berbeda di lapisan bawah, snapshot tabel yang diambil berbeda-beda. Konsistensi kuat tidak dapat dijamin.
Permasalahan encoding database
DRDS (PolarDB-X 1.0) menyediakan pengaturan encoding yang fleksibel. Anda dapat menentukan encoding berbeda di tingkat database, tabel, dan bidang. Prioritas pengaturan encoding, dari tertinggi ke terendah, adalah bidang, tabel, database, lalu instans. Kami merekomendasikan agar Anda menetapkan encoding ke UTF-8 di tingkat database.
DRDS (PolarDB-X 1.0) Reader menggunakan JDBC untuk mengekstrak data. JDBC kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan bawah. Oleh karena itu, Anda tidak perlu menentukan encoding untuk DRDS (PolarDB-X 1.0) Reader. Encoding tersebut dapat diambil dan ditranskode secara otomatis.
Jika encoding yang digunakan untuk menulis data ke lapisan bawah DRDS (PolarDB-X 1.0) tidak konsisten dengan encoding yang ditentukan, DRDS (PolarDB-X 1.0) Reader tidak dapat mendeteksi ketidakkonsistenan ini. Dalam kasus seperti itu, hasil sinkronisasi mungkin berisi karakter acak (garbled characters).
Metode untuk sinkronisasi data inkremental
DRDS (PolarDB-X 1.0) Reader menggunakan pernyataan SELECT JDBC untuk mengekstrak data. Anda dapat menggunakan
SELECT…WHERE…untuk melakukan ekstraksi data inkremental dengan cara berikut:Saat aplikasi online menulis data ke database, aplikasi tersebut mengisi bidang `modify` dengan timestamp perubahan, yang bisa berupa penambahan, pembaruan, atau penghapusan logis. Untuk aplikasi semacam ini, Anda cukup menambahkan klausa `WHERE` dengan timestamp sinkronisasi terakhir ke konfigurasi DRDS (PolarDB-X 1.0) Reader.
Untuk data streaming baru, Anda dapat menambahkan klausa `WHERE` dengan ID auto-increment maksimum dari tahap sebelumnya ke konfigurasi DRDS (PolarDB-X 1.0) Reader.
Jika aplikasi Anda tidak memiliki bidang untuk membedakan antara data baru dan data yang dimodifikasi, DRDS (PolarDB-X 1.0) Reader tidak dapat melakukan sinkronisasi data inkremental. Reader hanya dapat menyinkronkan data penuh.
Kondisi filter yang terkait dengan tabel fisik tidak didukung dalam klausa `WHERE`.
Lampiran: Contoh skrip dan parameter
Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type":"job",
"version":"2.0",// Nomor versi
"steps":[
{
"stepType":"drds",// Nama plugin
"parameter":{
"datasource":"",// Nama sumber data
"column":[// Nama kolom
"id",
"name"
],
"where":"",// Kondisi filter
"table":"",// Nama tabel
"splitPk": ""// Kunci shard
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",// Nama plugin
"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
"mbps":"12"// Laju data maksimum. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Reader
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 | Tabel tempat Anda ingin menyinkronkan data. | Ya | Tidak ada |
column | Kolom yang ingin Anda sinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan bidang. Secara default, semua kolom digunakan. Contoh: [*].
| Ya | Tidak ada |
where | Kondisi filter. DRDS (PolarDB-X 1.0) Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan, lalu mengekstrak data berdasarkan pernyataan SQL tersebut.
Misalnya, selama pengujian, Anda dapat menggunakan kondisi `where` untuk menentukan skenario bisnis. Biasanya, Anda mungkin ingin menyinkronkan data untuk hari ini. Anda dapat mengatur kondisi where menjadi | Tidak | Tidak ada |
Contoh skrip Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"drds",// Nama plugin.
"parameter":{
"postSql":[],// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data.
"datasource":"",// Sumber data.
"column":[// Nama kolom.
"id"
],
"writeMode":"insert ignore",
"batchSize":"1024",// Jumlah catatan yang dikomit dalam satu batch.
"table":"test",// Nama tabel.
"preSql":[]// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data.
},
"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, // Jumlah tugas konkuren.
"mbps":"12"// Laju data maksimum. 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 | Tabel tempat Anda ingin menyinkronkan data. | Ya | Tidak ada |
writeMode | Mode impor. Nilai yang valid: insert ignore dan replace into.
| Tidak | insert ignore |
column | Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma (,). Contoh: "column": ["id", "name", "age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "column": ["*"]. | Ya | Tidak ada |
preSql | Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, | Tidak | Tidak ada |
postSql | Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, | Tidak | Tidak ada |
batchSize | Jumlah catatan yang dikomit dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi interaksi jaringan antara sistem sinkronisasi data dan DRDS (PolarDB-X 1.0), sehingga meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data. | Tidak | 1.024 |