全部产品
Search
文档中心

DataWorks:Sumber data ApsaraDB For OceanBase

更新时间:Nov 27, 2025

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

Catatan

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.

Catatan
  • 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

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: jdbc:oceanbase://127.0.0.1:3306/database. Anda harus menentukan salah satu parameter ini atau parameter username.

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: [ * ].

  • Anda dapat mengekspor subset kolom.

  • Anda dapat mengubah urutan kolom.

  • Konstanta didukung. Contoh: '123'.

  • Kolom fungsi didukung. Contoh: date('now').

  • Anda harus secara eksplisit menentukan kolom yang akan disinkronkan. Parameter column tidak boleh kosong.

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.

  • Atur splitPk ke primary key tabel. Primary key biasanya terdistribusi merata, sehingga mencegah hotspot data pada shard.

  • Saat ini, splitPk hanya mendukung sharding data untuk tipe integer. Tipe lain seperti string, float, dan date tidak didukung. Jika Anda menentukan tipe yang tidak didukung, ApsaraDB For OceanBase Reader akan melaporkan error.

  • Jika Anda membiarkan splitPk kosong, sistem menganggap Anda tidak mengizinkan sharding untuk satu tabel dan menggunakan satu saluran untuk ekstraksi data.

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 gmt_create>$bizdate.

  • Kondisi where dapat digunakan untuk melakukan sinkronisasi inkremental secara efisien.

  • Jika kondisi where tidak dikonfigurasi atau dibiarkan kosong, data dari seluruh tabel akan disinkronkan.

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.

  • Anda hanya dapat mengonfigurasi satu nilai untuk satu database. Kasus di mana satu database memiliki beberapa database utama (impor data dua arah) tidak didukung.

  • Format jdbcUrl harus mematuhi spesifikasi resmi ApsaraDB For OceanBase. Anda juga dapat menentukan informasi lampiran koneksi. Contoh: jdbc:oceanbase://127.0.0.1:3306/database.

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: "column": ["id", "name", "age"].

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.

  • insert: insert into ... Jika terjadi konflik primary key atau unique index, baris yang bertentangan tidak dapat ditulis.

  • update: ... on duplicate key update ... Mode ini digunakan untuk tenant MySQL. Jika terjadi konflik, baris yang bertentangan diperbarui.

  • merge: merge into ... matched then update ... Mode ini digunakan untuk tenant Oracle. Jika terjadi konflik, baris yang bertentangan diperbarui.

Tidak

insert

onClauseColumns

Catatan

Parameter ini digunakan dalam mode tenant Oracle. Parameter ini wajib jika obWriteMode diatur ke merge. Jika parameter ini tidak dikonfigurasi, mode insert digunakan untuk menulis data.

Atur parameter ini ke bidang primary key atau bidang unique constraint. Untuk menentukan beberapa bidang, pisahkan dengan koma (,). Contoh: ID,C1.

Tidak

Tidak ada

obUpdateColumns

Catatan

Parameter ini berlaku ketika obWriteMode diatur ke merge atau update.

Bidang yang akan diperbarui saat terjadi konflik penulisan data. Untuk menentukan beberapa bidang, pisahkan dengan koma (,). Contoh: c2,c3.

Tidak

Semua bidang

preSql

Pernyataan standar yang dieksekusi sebelum data ditulis ke tabel tujuan. Jika pernyataan SQL perlu beroperasi pada tabel, gunakan @table untuk merepresentasikan nama tabel. Saat pernyataan SQL dieksekusi, variabel `@table` diganti dengan nama tabel aktual.

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