Sumber data OceanBase mendukung pembacaan dan penulisan data ke OceanBase. Anda dapat menggunakan sumber data ini untuk mengonfigurasi task sinkronisasi data. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan DataWorks untuk OceanBase.
Versi yang didukung
OceanBase Reader dan OceanBase Writer mendukung versi OceanBase berikut untuk membaca dan menulis data secara offline:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Batasan
Pembacaan offline
OceanBase mendukung mode tenant Oracle dan MySQL. Saat mengonfigurasi kondisi filter where dan kolom fungsi dalam parameter column, konfigurasi tersebut harus mematuhi sintaks SQL sesuai mode tenant yang digunakan. Jika tidak, pernyataan SQL mungkin gagal dieksekusi.
Anda dapat membaca data dari view.
Jangan memodifikasi data yang sedang disinkronkan selama pembacaan offline dari OceanBase. Tindakan tersebut dapat menyebabkan masalah kualitas data, seperti duplikasi atau kehilangan data.
Jika sumber data dikonfigurasi dengan Read By Partition, akun yang digunakan untuk mengakses sumber data harus memiliki system permissions.
Penulisan offline
Akun yang digunakan untuk task memerlukan setidaknya izin untuk mengeksekusi pernyataan insert into.... Izin tambahan mungkin diperlukan tergantung pada pernyataan yang ditentukan dalam parameter preSql dan postSql.
Data ditulis dalam mode batch. Permintaan penulisan dipicu setelah jumlah baris mencapai ambang batas tertentu.
OceanBase mendukung mode tenant Oracle dan MySQL. Pernyataan yang ditentukan dalam parameter preSql dan postSql harus mematuhi sintaks SQL sesuai mode tenant yang digunakan. Jika tidak, pernyataan SQL mungkin gagal dieksekusi.
Pembacaan real-time
OceanBase adalah database relasional terdistribusi yang mengintegrasikan data dari beberapa database fisik yang tersebar menjadi satu database logis. Namun, saat menyinkronkan data dari OceanBase ke AnalyticDB for MySQL secara real-time, Anda hanya dapat menyinkronkan data dari satu database fisik, bukan dari database logis.
Sumber data yang ditambahkan menggunakan string koneksi tidak didukung untuk task real-time yang menyinkronkan seluruh database.
Versi database harus 3.0 atau lebih baru untuk task sinkronisasi real-time.
Persiapan sebelum sinkronisasi data
Sebelum menyinkronkan data di DataWorks, Anda harus menyiapkan lingkungan OceanBase agar task sinkronisasi data dapat dikonfigurasi dan dijalankan sesuai harapan. Bagian berikut menjelaskan persiapan yang diperlukan.
Konfigurasi daftar putih
Tambahkan blok CIDR VPC dari serverless resource group atau grup sumber daya eksklusif untuk Data Integration ke daftar putih instans OceanBase Anda. Untuk informasi selengkapnya, lihat Add a whitelist.
Buat akun dan berikan izin
Buat akun login database yang memiliki izin operasi yang diperlukan pada OceanBase. Untuk informasi selengkapnya, lihat Create an account.
Add a data source
Sebelum mengembangkan task sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Data source management. Anda dapat melihat infotips parameter di Konsol DataWorks untuk memahami makna parameter saat menambahkan sumber data.
Kembangkan task sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi task sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasi task sinkronisasi batch untuk satu tabel
Untuk informasi selengkapnya tentang prosedur, lihat Configure a task in the codeless UI dan Configure a task in the code editor.
Untuk informasi tentang semua parameter dan contoh skrip untuk editor kode, lihat Appendix: Script demo and parameter descriptions.
Konfigurasi task sinkronisasi real-time untuk seluruh database
Untuk informasi selengkapnya tentang prosedur, lihat Configure a real-time sync task in DataStudio.
Konfigurasi task sinkronisasi baca penuh dan inkremental (real-time) untuk satu tabel atau seluruh database
Untuk informasi selengkapnya tentang prosedur, lihat Configure a real-time sync task for an entire database.
Lampiran: Contoh skrip dan deskripsi parameter
Konfigurasi task sinkronisasi batch menggunakan editor kode
Jika ingin mengonfigurasi task sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai format skrip terpadu. Untuk informasi selengkapnya, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data saat menggunakan editor kode.
Contoh skrip Reader
{
"type": "job",
"steps": [
{
"stepType": "apsaradb_for_OceanBase", // Nama plugin
"parameter": {
"datasource": "", // Nama sumber data
"where": "",
"column": [ // Bidang
"id",
"name"
],
"splitPk": ""
},
"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, // Menentukan apakah pengendalian aliran diaktifkan. Jika diatur ke true, pengendalian aliran diaktifkan. Jika diatur ke false, pengendalian aliran dinonaktifkan dan parameter mbps tidak berlaku.
"concurrent": 1, // Jumlah pekerjaan konkuren
"mbps":"12"// Laju pengendalian aliran. 1 mbps = 1 MB/s.
}
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data ApsaraDB For OceanBase yang telah Anda tambahkan. Anda dapat menggunakan parameter ini jika versi DataWorks Anda mendukung penambahan sumber data ApsaraDB For OceanBase. Anda dapat mengonfigurasi koneksi menggunakan parameter jdbcUrl atau username. | Ya | Tidak ada |
jdbcUrl | Informasi koneksi JDBC database tujuan. Gunakan array JSON untuk menentukan beberapa alamat koneksi untuk satu database. Jika Anda mengonfigurasi beberapa alamat, ApsaraDB For OceanBase Reader akan memeriksa konektivitas alamat IP secara berurutan hingga menemukan alamat IP yang valid. Jika semua koneksi gagal, ApsaraDB For OceanBase Reader akan melaporkan error. Catatan Parameter jdbcUrl harus disertakan dalam unit konfigurasi connection. Format jdbcUrl harus mematuhi spesifikasi resmi ApsaraDB For OceanBase. Anda juga dapat menentukan informasi kontrol lampiran koneksi. Contoh: | Tidak | Tidak ada |
username | Username untuk sumber data. | Tidak | Tidak ada |
password | Password untuk username yang ditentukan. | Tidak | Tidak ada |
table | Tabel yang akan disinkronkan. Gunakan array JSON untuk menentukan beberapa tabel. Jika Anda mengonfigurasi beberapa tabel, pastikan tabel-tabel tersebut memiliki struktur skema yang sama. ApsaraDB For OceanBase Reader tidak memeriksa apakah tabel memiliki struktur logis yang seragam. Catatan Parameter table harus disertakan dalam unit konfigurasi connection. | Ya | Tidak ada |
column | Kumpulan kolom yang akan disinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan bidang. Secara default, semua kolom digunakan. Contoh: [ * ].
| Ya | Tidak ada |
splitPk | Saat ApsaraDB for OceanBase Reader mengekstraksi data, jika Anda menentukan parameter splitPk, bidang yang ditentukan dalam splitPk digunakan untuk sharding data. Data Integration kemudian menjalankan thread paralel untuk membaca data. Dengan cara ini, data dapat disinkronkan lebih efisien.
| Tidak | Kosong |
where | ApsaraDB for OceanBase Reader menggabungkan pernyataan SQL berdasarkan column, table, dan kondisi where yang ditentukan, lalu mengekstraksi data berdasarkan pernyataan SQL tersebut. Sebagai contoh, untuk keperluan pengujian, Anda dapat mengatur kondisi where menjadi limit 10. Dalam skenario bisnis aktual, Anda biasanya menyinkronkan data hari ini dan 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 menyesuaikan pernyataan SQL filter. Jika Anda mengonfigurasi parameter ini, sistem sinkronisasi data akan mengabaikan parameter tables, columns, dan splitPk serta menggunakan isi parameter ini untuk memfilter data. Saat Anda mengonfigurasi querySql, ApsaraDB For OceanBase Reader mengabaikan parameter table, column, where, dan splitPk. | Tidak | Tidak ada |
fetchSize | Parameter ini menentukan jumlah catatan data yang diambil dalam setiap batch. Nilai ini menentukan jumlah interaksi jaringan antara Data Integration dan server dan dapat meningkatkan kinerja ekstraksi data secara signifikan. Catatan Nilai fetchSize yang lebih besar dari 2048 dapat menyebabkan error kehabisan memori (OOM) pada 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":"apsaradb_for_OceanBase",// Nama plugin.
"parameter":{
"datasource": "Nama sumber data",
"column": [// Bidang.
"id",
"name"
],
"table": "apsaradb_for_OceanBase_table",// Nama tabel.
"preSql": [ // Pernyataan SQL yang dieksekusi sebelum task sinkronisasi data dijalankan.
"delete from @table where db_id = -1"
],
"postSql": [// Pernyataan SQL yang dieksekusi setelah task sinkronisasi data dijalankan.
"update @table set db_modify_time = now() where db_id = 1"
],
"obWriteMode": "insert",
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error.
},
"speed":{
"throttle":true,// Menentukan apakah pengendalian aliran diaktifkan. Jika diatur ke true, pengendalian aliran diaktifkan. Jika diatur ke false, pengendalian aliran dinonaktifkan dan parameter mbps tidak berlaku.
"concurrent":1, // Jumlah pekerjaan konkuren.
"mbps":"12"// Laju pengendalian aliran. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Nilai default |
datasource | Nama sumber data ApsaraDB For OceanBase yang telah Anda tambahkan. Anda dapat menggunakan parameter ini jika versi DataWorks Anda mendukung penambahan sumber data ApsaraDB For OceanBase. Anda dapat mengonfigurasi koneksi menggunakan parameter jdbcUrl atau username. | Tidak | Tidak ada |
jdbcUrl | Informasi koneksi JDBC database tujuan. Parameter jdbcUrl disertakan dalam unit konfigurasi connection.
| Ya | Tidak ada |
username | Username untuk sumber data. | Ya | Tidak ada |
password | Password untuk username yang ditentukan. | Ya | Tidak ada |
table | Nama tabel tempat Anda ingin menulis data. Gunakan array JSON untuk menentukan nama tabel. Catatan Parameter table harus disertakan dalam unit konfigurasi connection. | Ya | Tidak ada |
column | Bidang dalam tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma (,). Contoh: Catatan Anda harus menentukan parameter column. Parameter ini tidak boleh kosong. | Ya | Tidak ada |
obWriteMode | Mengontrol mode yang digunakan untuk menulis data ke tabel tujuan. Parameter ini bersifat opsional.
| Tidak | insert |
onClauseColumns | Catatan Parameter ini digunakan dalam mode tenant Oracle. Parameter ini wajib jika Atur parameter ini ke bidang primary key atau bidang unique constraint. Untuk menentukan beberapa bidang, pisahkan dengan koma (,). Contoh: | Tidak | Tidak ada |
obUpdateColumns | Catatan Parameter ini berlaku ketika Bidang yang akan diperbarui saat terjadi konflik penulisan data. Untuk menentukan beberapa bidang, pisahkan dengan koma (,). Contoh: | Tidak | Semua bidang |
preSql | Pernyataan standar yang dieksekusi sebelum data ditulis ke tabel tujuan. Jika pernyataan SQL perlu beroperasi pada tabel, gunakan | Tidak | Tidak ada |
postSql | Pernyataan standar yang dieksekusi setelah data ditulis ke tabel tujuan. | Tidak | Tidak ada |
batchSize | Jumlah catatan dalam satu commit batch. Nilai ini dapat secara signifikan mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan server, serta meningkatkan throughput keseluruhan. Catatan Nilai fetchSize yang besar (lebih dari 2048) dapat menyebabkan error kehabisan memori (OOM) selama sinkronisasi data. | Tidak | 1.024 |