All Products
Search
Document Center

DataWorks:ApsaraDB for OceanBase

Last Updated:Mar 03, 2026

Sumber data ApsaraDB for OceanBase memungkinkan Anda membaca dari dan menulis ke ApsaraDB for OceanBase. Anda dapat menggunakan sumber data ini untuk mengonfigurasi dan menjalankan tugas sinkronisasi data. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan DataWorks untuk ApsaraDB for OceanBase.

Versi yang didukung

Plugin ApsaraDB for OceanBase Reader dan ApsaraDB for OceanBase Writer mendukung operasi pembacaan dan penulisan data batch untuk versi ApsaraDB for OceanBase berikut:

  • OceanBase 2.x

  • OceanBase 3.x

  • OceanBase 4.x

Batasan

Pembacaan batch

  • ApsaraDB for OceanBase menyediakan dua mode tenant: Oracle dan MySQL. Saat Anda mengonfigurasi klausa where atau kolom fungsi pada parameter column, sintaks Anda harus kompatibel dengan mode tenant instans tersebut. Jika tidak, pernyataan SQL mungkin gagal.

  • Anda dapat membaca data dari sebuah view.

  • Untuk mencegah masalah kualitas data seperti duplikasi atau kehilangan data, jangan memodifikasi data selama tugas sinkronisasi batch sedang berjalan.

  • Jika Anda mengonfigurasi sumber data untuk read data by partition, akun yang digunakan untuk mengakses sumber data harus memiliki izin system.

Penulisan batch

Catatan

Akun yang digunakan untuk tugas ini memerlukan setidaknya izin insert into.... Izin tambahan mungkin diperlukan tergantung pada pernyataan SQL yang Anda tentukan dalam parameter preSql dan postSql.

  • Kami menyarankan Anda menggunakan metode batch untuk menulis data. Metode ini hanya menginisiasi permintaan penulisan setelah jumlah baris tertentu terkumpul.

  • ApsaraDB for OceanBase menyediakan dua mode tenant: Oracle dan MySQL. Saat Anda mengonfigurasi parameter preSql dan postSql, sintaksnya harus kompatibel dengan mode tenant instans Anda. Jika tidak, pernyataan SQL mungkin gagal dieksekusi.

Pembacaan real-time

  • Hanya mode tenant MySQL dari ApsaraDB for OceanBase yang didukung.

  • Untuk menyinkronkan data secara real-time, Anda harus mengaktifkan fitur Binlog. Untuk informasi selengkapnya, lihat Operasi terkait Binlog (instans Alibaba Cloud) dan Operasi terkait Binlog (instans OceanBase Cloud).

  • Untuk sinkronisasi real-time seluruh database, sumber data yang menggunakan string koneksi tidak didukung.

  • Untuk sinkronisasi real-time seluruh database, instans ApsaraDB for OceanBase harus menggunakan versi V3.0 atau yang lebih baru.

  • ApsaraDB for OceanBase adalah database relasional terdistribusi yang dapat mengonsolidasikan data dari beberapa database fisik yang tersebar menjadi satu database logis tunggal. Namun, saat Anda menyinkronkan data secara real-time dari ApsaraDB for OceanBase ke AnalyticDB for MySQL, Anda hanya dapat menyinkronkan data dari satu database fisik. Anda tidak dapat menyinkronkan data dari database logis.

Sebelum memulai

Sebelum Anda dapat mengonfigurasi dan menjalankan tugas sinkronisasi data ApsaraDB for OceanBase di DataWorks, Anda harus mengonfigurasi instans ApsaraDB for OceanBase Anda. Bagian ini menjelaskan persiapan yang diperlukan.

Konfigurasi daftar putih

Tambahkan blok CIDR dari resource group arsitektur tanpa server atau grup sumber daya eksklusif untuk Integrasi Data ke daftar putih instans ApsaraDB for OceanBase Anda. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP.

Buat akun dan berikan izin

Buat akun database untuk sinkronisasi data. Akun ini harus memiliki izin operasional yang diperlukan pada instans ApsaraDB for OceanBase. Untuk informasi selengkapnya, lihat Buat akun.

Tambahkan sumber data

Sebelum Anda mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Manajemen sumber data. Anda dapat melihat deskripsi parameter di konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Konfigurasi tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Sinkronisasi batch untuk satu tabel

Sinkronisasi real-time untuk satu tabel

Sinkronisasi real-time untuk seluruh database

Lampiran: Contoh skrip dan parameter

Konfigurasi tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi selengkapnya, lihat Gunakan editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type": "job",
    "steps": [
        {
            "stepType": "apsaradb_for_OceanBase", // Nama plugin.
            "parameter": {
                "datasource": "", // Nama sumber data.
                "where": "",
                "column": [ // Kolom.
                    "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 yang diizinkan.
        },
        "speed": {
            "throttle": true, // Menentukan apakah pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
            "concurrent": 1, // Jumlah thread konkuren.
            "mbps":"12"// Laju transmisi maksimum. Satuan: MB/s.
        }
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data ApsaraDB for OceanBase.

Anda dapat menentukan koneksi menggunakan parameter ini atau kombinasi parameter jdbcUrl, username, dan password.

Ya

Tidak ada

jdbcUrl

URL JDBC database sumber. Anda dapat menentukan beberapa URL koneksi dalam bentuk array JSON.

Jika Anda menentukan beberapa URL, plugin ApsaraDB for OceanBase Reader akan mencoba menghubungkannya secara berurutan hingga berhasil membuat koneksi yang valid.

Jika semua koneksi gagal, tugas akan gagal.

Catatan

Parameter jdbcUrl harus bersarang di dalam parameter connection.

jdbcUrl String koneksi, yang harus ditentukan sesuai spesifikasi resmi ApsaraDB for OceanBase. Misalnya, jdbc:oceanbase://127.0.0.1:3306/database. Anda harus menentukan parameter ini atau username.

Tidak

Tidak ada

username

Username untuk akun database.

Tidak

Tidak ada

password

Password untuk akun database.

Tidak

Tidak ada

table

Tabel tempat data dibaca. Anda dapat menentukan beberapa tabel dalam bentuk array JSON.

Jika Anda menentukan beberapa tabel, pastikan skema tabel tersebut sama. Plugin ApsaraDB for OceanBase Reader tidak memeriksa konsistensi logis antar tabel.

Catatan

Parameter table harus bersarang di dalam parameter connection.

Ya

Tidak ada

column

Kolom yang akan dibaca dari tabel yang ditentukan. Tentukan kolom dalam bentuk array JSON. Untuk membaca semua kolom, atur parameter ini ke [*].

  • Anda dapat mengekspor subset kolom.

  • Anda dapat mengekspor kolom dalam urutan apa pun, terlepas dari skema tabel.

  • Anda dapat menggunakan konfigurasi konstan. Contoh: '123'.

  • Anda dapat menggunakan kolom fungsi. 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, menentukan parameter splitPk menunjukkan bahwa Anda ingin menggunakan kolom yang diwakili oleh splitPk untuk sharding data. Akibatnya, sinkronisasi data memulai tugas konkuren, yang meningkatkan efisiensi.

  • Kami menyarankan Anda mengatur splitPk ke kunci primer tabel. Kunci primer biasanya terdistribusi merata, yang membantu mencegah hotspot data dalam data yang dipartisi.

  • Saat ini, parameter splitPk hanya mendukung tipe data integer untuk sharding data. Tipe data lain seperti string, floating point, dan tanggal tidak didukung. Jika Anda menentukan tipe data yang tidak didukung, kesalahan akan dilaporkan.

  • Jika Anda membiarkan parameter splitPk kosong, sharding data dinonaktifkan, dan data dibaca oleh satu thread.

Tidak

Kosong

where

Kondisi filter yang ditambahkan ke kueri SQL. Plugin ApsaraDB for OceanBase Reader membangun kueri SQL berdasarkan parameter column, table, dan where yang ditentukan.

Misalnya, Anda dapat mengatur parameter where ke limit 10 untuk tujuan pengujian. Untuk skenario bisnis yang memerlukan sinkronisasi inkremental, Anda dapat mengatur parameter where ke kondisi seperti gmt_create>$bizdate.

  • Parameter where memungkinkan sinkronisasi inkremental yang efektif.

  • Jika kondisi where tidak dikonfigurasi atau kosong, sinkronisasi seluruh tabel akan dilakukan.

Tidak

Tidak ada

querySql

Menentukan pernyataan SQL kustom untuk memfilter data. Ini berguna ketika parameter where tidak cukup untuk menggambarkan kondisi filter yang kompleks. Jika Anda mengonfigurasi parameter ini, plugin akan mengabaikan parameter table, column, dan splitPk.

Saat Anda mengonfigurasi querySql, ApsaraDB for OceanBase Reader mengabaikan parameter table, column, where, dan splitPk.

Tidak

Tidak ada

fetchSize

Jumlah catatan yang diambil dari server database dalam satu batch. Nilai yang lebih besar dapat mengurangi jumlah interaksi jaringan antara Data Integration dan server, yang secara signifikan dapat meningkatkan kinerja ekstraksi data.

Catatan

Nilai fetchSize yang besar (>2048) dapat menyebabkan error kehabisan memori (OOM) dalam 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": [// Kolom.
                    "id",
                    "name"
                ],
                "table": "apsaradb_for_OceanBase_table",// Nama tabel.
                "preSql": [ // Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi dijalankan.
                    "delete from @table where db_id = -1"
                ],
                "postSql": [// Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi 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 yang diizinkan.
        },
        "speed":{
            "throttle":true,// Menentukan apakah pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
            "concurrent":1, // Jumlah thread konkuren.
            "mbps":"12"// Laju transmisi maksimum. Satuan: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data ApsaraDB for OceanBase.

Anda dapat menentukan koneksi menggunakan parameter ini atau kombinasi parameter jdbcUrl, username, dan password.

Tidak

Tidak ada

jdbcUrl

URL JDBC database tujuan. Parameter jdbcUrl harus bersarang di dalam parameter connection.

  • Anda hanya dapat menentukan satu URL untuk satu database. Skenario yang melibatkan penulisan data ke beberapa database utama tidak didukung.

  • Format jdbcUrl harus konsisten dengan format resmi ApsaraDB for OceanBase. Anda juga dapat menyertakan properti koneksi. Contoh: jdbc:oceanbase://127.0.0.1:3306/database.

Ya

Tidak ada

username

Username untuk akun database.

Ya

Tidak ada

password

Password untuk akun database.

Ya

Tidak ada

table

Nama tabel tujuan. Anda hanya dapat menentukan satu tabel.

Catatan

Parameter table harus bersarang di dalam parameter connection.

Ya

Tidak ada

column

Kolom di tabel tujuan tempat Anda ingin menulis data. Tentukan kolom sebagai array JSON berisi string. Contoh: "column": ["id", "name", "age"].

Catatan

Anda harus mengonfigurasi parameter column. Parameter ini tidak boleh dibiarkan kosong.

Ya

Tidak ada

obWriteMode

Mengontrol mode penulisan yang digunakan untuk tabel tujuan. Nilai yang valid:

  • insert: Menggunakan pernyataan insert into .... Jika terjadi konflik kunci primer atau indeks unik, operasi penulisan untuk baris yang bertentangan akan gagal.

  • update: Menggunakan pernyataan ... on duplicate key update .... Mode ini untuk mode tenant MySQL. Jika terjadi konflik, plugin akan memperbarui baris yang bertentangan.

  • merge: Menggunakan pernyataan merge into ... when matched then update .... Mode ini untuk mode tenant Oracle. Jika terjadi konflik, plugin akan memperbarui baris yang bertentangan.

Tidak

insert

onClauseColumns

Catatan

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

Kolom kunci primer atau kolom kendala unik. Untuk menentukan beberapa kolom, pisahkan dengan koma. Contoh: ID,C1.

Tidak

Tidak ada

obUpdateColumns

Catatan

Parameter ini hanya berlaku saat obWriteMode diatur ke merge atau update.

Kolom yang akan diperbarui saat terjadi konflik penulisan. Untuk menentukan beberapa kolom, pisahkan dengan koma. Contoh: c2,c3.

Tidak

Semua kolom

preSql

Pernyataan SQL yang dieksekusi sebelum tugas menulis data ke tabel tujuan. Jika pernyataan SQL perlu mereferensikan nama tabel, gunakan variabel @table. Sistem akan mengganti variabel tersebut dengan nama tabel aktual selama eksekusi.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah tugas menulis data ke tabel tujuan.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirimkan dalam satu batch. Nilai yang lebih besar dapat mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan server database, yang secara signifikan dapat meningkatkan throughput keseluruhan.

Catatan

Nilai batchSize yang besar (>2048) dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data.

Tidak

1.024