DataWorks menyediakan DRDS (PolarDB-X 1.0) Reader dan DRDS (PolarDB-X 1.0) Writer untuk membaca data dari dan menulis data ke sumber data DRDS (PolarDB-X 1.0). Topik ini menjelaskan kemampuan menyinkronkan data dari atau ke sumber data DRDS (PolarDB-X 1.0).
Versi DRDS yang Didukung
Pembacaan data real-time
DRDS (PolarDB-X 1.0) didukung. Untuk informasi lebih lanjut tentang cara membuat instance DRDS (PolarDB-X 1.0), lihat Buat Instance PolarDB-X 1.0.
Batasan
Pembacaan dan penulisan data batch
DRDS (PolarDB-X 1.0) Reader hanya mendukung mesin MySQL. DRDS (PolarDB-X 1.0) adalah layanan database MySQL terdistribusi, dengan sebagian besar protokol komunikasinya sama dengan protokol komunikasi MySQL.
Hanya kelompok sumber daya eksklusif untuk Data Integration yang dapat digunakan untuk membaca data dari instance DRDS (PolarDB-X 1.0) yang menjalankan MySQL 8.0.
DRDS (PolarDB-X 1.0) Writer menghubungkan proxy dari database DRDS (PolarDB-X 1.0) jarak jauh menggunakan Java Database Connectivity (JDBC) dan mengeksekusi pernyataan
REPLACE INTOuntuk menulis data ke database DRDS (PolarDB-X 1.0).Untuk mengeksekusi pernyataan
REPLACE INTO, pastikan tabel Anda memiliki kunci utama atau indeks unik untuk mencegah duplikasi data.DRDS (PolarDB-X 1.0) Writer mendapatkan data dari pembaca dan mengeksekusi pernyataan
REPLACE INTOuntuk menulis data ke database tujuan. Jika tidak ada konflik kunci utama atau indeks unik, data diproses seperti saat mengeksekusi pernyataanINSERT INTO. Jika terjadi konflik, data di baris yang bertentangan dalam tabel tujuan digantikan oleh data baru. DRDS (PolarDB-X 1.0) Writer mengirimkan data ke proxy DRDS (PolarDB-X 1.0) ketika jumlah data yang di-buffer mencapai ambang batas tertentu. Proxy menentukan apakah akan menulis data ke satu atau lebih tabel serta bagaimana merutekan data ketika ditulis ke beberapa tabel.CatatanTugas sinkronisasi yang menggunakan DRDS (PolarDB-X 1.0) Writer harus memiliki setidaknya izin untuk mengeksekusi pernyataan
REPLACE INTO. Kebutuhan izin tambahan bergantung pada pernyataan SQL yang Anda tentukan dalam parameter preSql dan postSql saat mengonfigurasi tugas.Data dari Tampilan dapat dibaca.
Pembacaan data real-time
Hanya sumber data yang ditambahkan di DataWorks dalam mode instance Alibaba Cloud yang didukung. Jika Anda menambahkan sumber data dalam mode string koneksi dan menggunakannya dalam tugas sinkronisasi data, tugas tersebut gagal.
Jenis penyimpanan harus PolarDB untuk MySQL atau ApsaraDB RDS (tidak termasuk ApsaraDB RDS untuk MySQL). ApsaraDB RDS hanya dapat digunakan untuk instance DRDS (PolarDB-X 1.0) yang sudah ada dan tidak dapat digunakan untuk instance DRDS (PolarDB-X 1.0) yang baru dibeli.
Sinkronisasi real-time data tempat pernyataan XA ROLLBACK dieksekusi tidak didukung.
Untuk data transaksi tempat pernyataan XA PREPARE dieksekusi, Anda dapat menggunakan fitur sinkronisasi real-time untuk menyinkronkan data ke tujuan. Jika pernyataan XA ROLLBACK dieksekusi nanti pada data tersebut, perubahan rollback ke data tidak dapat disinkronkan ke tujuan. Jika tabel yang ingin Anda sinkronkan mencakup tabel tempat pernyataan XA ROLLBACK dieksekusi, Anda harus menghapus tabel tersebut dari tugas sinkronisasi real-time dan menambahkannya kembali untuk menyinkronkan data.
Pemetaan tipe data
Sebagian besar tipe data DRDS (PolarDB-X 1.0) didukung. Pastikan tipe data database Anda didukung.
Tabel berikut mencantumkan pemetaan tipe data berdasarkan mana DRDS (PolarDB-X 1.0) Reader atau DRDS (PolarDB-X 1.0) Writer mengonversi tipe data.
Kategori | Tipe data DRDS (PolarDB-X 1.0) |
Integer | INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT |
Floating point | 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 |
Binary | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY |
Persiapan sebelum sinkronisasi data
Anda perlu membuat akun yang digunakan untuk masuk ke database DRDS (PolarDB-X 1.0) untuk operasi selanjutnya dan memberikan izin yang diperlukan kepada akun tersebut. Untuk informasi lebih lanjut, lihat Buat Akun.
Mengembangkan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur mengonfigurasi 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 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.
Konfigurasikan pengaturan sinkronisasi untuk mengimplementasikan sinkronisasi batch semua data dalam database atau sinkronisasi real-time data penuh dan inkremental dalam tabel tunggal atau database
Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi di Data Integration.
Informasi tambahan
Tampilan Konsisten
DRDS (PolarDB-X 1.0) tidak dapat menyediakan tampilan konsisten untuk beberapa tabel di beberapa database karena merupakan layanan database terdistribusi. DRDS (PolarDB-X 1.0) Reader mendapatkan snapshot yang berbeda dari shard tabel yang berbeda, tetapi tidak dapat mendapatkan snapshot shard tabel pada irisan waktu yang sama. Akibatnya, DRDS (PolarDB-X 1.0) Reader tidak dapat memastikan konsistensi kuat untuk kueri data.
Pengkodean Karakter
DRDS (PolarDB-X 1.0) mendukung konfigurasi pengkodean fleksibel. Anda dapat menentukan format pengkodean untuk seluruh instance dan bidang, tabel, serta database tertentu. Konfigurasi pada tingkat bidang, tabel, database, dan instance diprioritaskan dalam urutan menurun. Kami merekomendasikan Anda menggunakan UTF-8 untuk database.
DRDS (PolarDB-X 1.0) Reader menggunakan JDBC untuk membaca data, memungkinkan otomatisasi konversi format pengkodean karakter. Oleh karena itu, Anda tidak perlu menentukan format pengkodean.
Jika Anda menentukan format pengkodean untuk database DRDS (PolarDB-X 1.0) tetapi data ditulis ke database DRDS (PolarDB-X 1.0) dalam format pengkodean yang berbeda, DRDS (PolarDB-X 1.0) Reader tidak dapat mengenali ketidaksesuaian ini dan mungkin mengekspor karakter yang tidak dapat dibaca.
Sinkronisasi Data Inkremental
DRDS (PolarDB-X 1.0) Reader menggunakan JDBC untuk terhubung ke database dan menggunakan pernyataan SELECT dengan klausa
WHEREuntuk membaca data inkremental.Untuk data batch, operasi penambahan, pembaruan, dan penghapusan inkremental (termasuk operasi penghapusan logis) dibedakan berdasarkan timestamp. Tentukan klausa WHERE berdasarkan timestamp tertentu. Waktu yang ditunjukkan oleh timestamp harus lebih lambat dari waktu yang ditunjukkan oleh timestamp terbaru dalam sinkronisasi sebelumnya.
Untuk data streaming, tentukan klausa WHERE berdasarkan ID catatan tertentu. ID tersebut harus lebih besar dari ID maksimum yang terlibat dalam sinkronisasi sebelumnya.
Jika data yang ditambahkan atau dimodifikasi tidak dapat dibedakan, DRDS (PolarDB-X 1.0) Reader hanya dapat membaca data penuh.
Anda tidak dapat mengonfigurasi kondisi filter untuk tabel fisik dalam klausa WHERE.
Lampiran: Kode dan parameter
Lampiran: Konfigurasikan tugas sinkronisasi batch menggunakan editor kode
Kode untuk DRDS (PolarDB-X 1.0) Reader
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"drds",// Nama plugin.
"parameter":{
"datasource":"",// Nama sumber data.
"column":[// Nama kolom.
"id",
"name"
],
"where":"",// Klausa WHERE.
"table":"",// Nama tabel.
"splitPk": ""// Kunci shard.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",// Nama plugin.
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
},
"speed":{
"throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true.
"concurrent":1,// Jumlah maksimum thread paralel.
"mbps":"12"// Kecepatan transmisi maksimum. Unit: MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter dalam kode untuk DRDS (PolarDB-X 1.0) Reader
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 dari mana Anda ingin membaca data. | Ya | Tidak ada nilai default |
column | Nama kolom dari mana Anda ingin membaca data. Tentukan nama dalam array JSON. Nilai defaultnya adalah [*], yang menunjukkan semua kolom dalam tabel sumber.
| Ya | Tidak ada nilai default |
where | Klausa WHERE. DRDS (PolarDB-X 1.0) Reader menghasilkan pernyataan SQL berdasarkan pengaturan parameter column, table, dan where, dan menggunakan pernyataan yang dihasilkan untuk membaca data.
Sebagai contoh, Anda dapat menyetel parameter ini ke | Tidak | Tidak ada nilai default |
Kode untuk DRDS (PolarDB-X 1.0) 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 ingin Anda eksekusi setelah tugas sinkronisasi dijalankan.
"datasource":"",// Nama sumber data.
"column":[// Nama kolom.
"id"
],
"writeMode":"insert ignore",
"batchSize":"1024",// Jumlah catatan data yang ditulis sekaligus.
"table":"test",// Nama tabel.
"preSql":[]// Pernyataan SQL yang ingin Anda eksekusi sebelum tugas sinkronisasi dijalankan.
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
},
"speed":{
"throttle":true,// Menentukan apakah throttling diaktifkan. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true.
"concurrent":1, // Jumlah maksimum thread paralel.
"mbps":"12"// Kecepatan transmisi maksimum. Unit: MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter dalam kode untuk DRDS (PolarDB-X 1.0) 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 |
writeMode | Mode penulisan. Nilai valid:
| Tidak | insert ignore |
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 dalam tabel tujuan, atur parameter ini ke asterisk (*), seperti "column": ["*"]. | Ya | Tidak ada nilai default |
preSql | Pernyataan SQL yang ingin Anda eksekusi sebelum tugas sinkronisasi dijalankan. Anda hanya dapat mengeksekusi satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode. Sebagai contoh, Andadapat menyetel parameter ini ke | Tidak | Tidak ada nilai default |
postSql | Pernyataan SQL yang ingin Anda eksekusi setelah tugas sinkronisasi dijalankan. Anda hanya dapat mengeksekusi satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode. Sebagai contoh, Anda dapat menyetel parameter ini ke | 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 DRDS (PolarDB-X 1.0) serta meningkatkan throughput. Jika Anda menyetel parameter ini ke nilai yang terlalu besar, kesalahan out of memory (OOM) mungkin terjadi selama sinkronisasi data. | Tidak | 1.024 |