全部产品
Search
文档中心

DataWorks:Sumber data PolarDB

更新时间:Jul 09, 2025

DataWorks menyediakan PolarDB Reader dan PolarDB Writer untuk membaca dan menulis data ke sumber data PolarDB. Anda dapat menggunakan UI tanpa kode atau editor kode untuk mengonfigurasi tugas sinkronisasi.

Batasan

Pembacaan dan penulisan data batch

Data dari Tampilan dapat dibaca.

Pembacaan data real-time

Jika sumber tugas sinkronisasi adalah kluster PolarDB untuk MySQL, fitur pencatatan biner harus diaktifkan. PolarDB untuk MySQL sepenuhnya kompatibel dengan MySQL dan menggunakan log fisik tingkat tinggi sebagai pengganti log biner. Untuk memfasilitasi integrasi dengan ekosistem MySQL, Anda dapat mengaktifkan fitur pencatatan biner pada kluster PolarDB.

Pemetaan tipe data

Pembacaan data batch

Tabel berikut mencantumkan pemetaan tipe data yang digunakan oleh PolarDB Reader untuk konversi.

Kategori

Tipe data PolarDB

Integer

INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT

Bilangan titik mengambang

FLOAT, DOUBLE, dan DECIMAL

String

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT

Tanggal dan waktu

DATE, DATETIME, TIMESTAMP, TIME, dan YEAR

Boolean

BIT dan BOOL

Biner

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY

Catatan
  • Tipe data yang tidak tercantum dalam tabel tidak didukung.

  • PolarDB Reader memproses TINYINT(1) sebagai tipe data integer.

Penulisan data batch

Mirip dengan PolarDB Reader, PolarDB Writer mendukung sebagian besar tipe data PolarDB. Pastikan tipe data database Anda didukung.

Tabel berikut mencantumkan pemetaan tipe data yang digunakan oleh PolarDB Writer untuk konversi.

Kategori

Tipe data PolarDB

Integer

INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT, dan YEAR

Bilangan titik mengambang

FLOAT, DOUBLE, dan DECIMAL

String

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT

Tanggal dan waktu

DATE, DATETIME, TIMESTAMP, dan TIME

Boolean

BOOL

Biner

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY

Siapkan lingkungan PolarDB sebelum sinkronisasi data

Konfigurasikan daftar putih alamat IP

Tambahkan blok CIDR dari virtual private cloud (VPC) tempat grup sumber daya eksklusif untuk Data Integration berada ke daftar putih alamat IP kluster PolarDB untuk MySQL.

Siapkan akun yang memiliki izin yang diperlukan

Buat akun dan berikan izin yang diperlukan.

Anda harus membuat akun untuk masuk ke database kluster PolarDB untuk MySQL. Berikan SELECT, REPLICATION SLAVE, dan REPLICATION CLIENT izin kepada akun tersebut.

  1. Buat akun.

    Untuk informasi lebih lanjut, lihat Buat dan Kelola Akun Database.

  2. Berikan izin yang diperlukan kepada akun.

    Anda dapat menjalankan perintah berikut untuk memberikan izin yang diperlukan, atau langsung tetapkan SUPER peran kepada akun.

    -- CREATE USER 'Akun untuk sinkronisasi data'@'%' IDENTIFIED BY 'Akun untuk sinkronisasi data';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'Akun untuk sinkronisasi data'@'%';

Aktifkan fitur pencatatan biner

Untuk informasi lebih lanjut, lihat Aktifkan Pencatatan Biner.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi data di DataWorks, tambahkan sumber data yang diperlukan dengan mengikuti petunjuk di Manajemen Sumber Data. Tip info parameter tersedia di konsol DataWorks untuk membantu memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data berdasarkan sumber data PolarDB

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

Konfigurasikan tugas sinkronisasi batch untuk menyinkronkan data tabel tunggal

Konfigurasikan tugas sinkronisasi real-time untuk menyinkronkan data tabel tunggal atau menyinkronkan semua data dalam database

Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi Real-Time di DataStudio.

Konfigurasikan pengaturan sinkronisasi untuk menerapkan sinkronisasi batch semua data dalam database dan sinkronisasi real-time data tabel tunggal atau data penuh atau data tambahan dalam database

Untuk informasi lebih lanjut tentang prosedur konfigurasi, lihat Konfigurasikan Tugas Sinkronisasi di Data Integration.

FAQ

Mengapa kesalahan dilaporkan berulang kali ketika tugas sinkronisasi real-time dijalankan untuk menyinkronkan data dari Oracle, PolarDB, atau MySQL?

Lampiran: Kode dan parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Untuk mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, konfigurasikan parameter terkait dalam skrip sesuai format seragam. Untuk informasi lebih lanjut, lihat Konfigurasikan Tugas Sinkronisasi Batch Menggunakan Editor Kode. Informasi berikut menjelaskan parameter yang harus dikonfigurasi untuk sumber data.

Kode untuk PolarDB Reader

Kode berikut mengonfigurasi tugas sinkronisasi batch untuk membaca data dari tabel tunggal. Untuk informasi tentang parameter, lihat parameter dalam kode untuk PolarDB Reader.

{
    "type": "job",
    "steps": [
        {
            "parameter": {
                "datasource": "test_005",// Nama sumber data. 
                "column": [// Nama kolom. 
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "where": "id=1001",// Klausul WHERE. 
                "splitPk": "id",// Kunci sharding. 
                "table": "PolarDB_person"// Nama tabel. 
              	"useReadonly": "false"// Menentukan apakah akan membaca data dari database sekunder. 
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {}
    ],
    "version": "2.0",// Nomor versi. 
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// Jumlah maksimum catatan data kotor yang diizinkan. 
            "record": ""
        },
        "speed": {
            "concurrent": 6,// Jumlah maksimum thread paralel. 
            "throttle": true,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true. 
      "mbps":"12",// Laju transmisi maksimum. Unit: MB/s. 
        }
    }
}

Parameter dalam kode untuk PolarDB Reader

Parameter

Deskripsi

Diperlukan

Nilai default

datasource

Nama sumber data. Harus sama dengan nama sumber data yang 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

useReadonly

Menentukan apakah akan membaca data dari database sekunder. Jika Anda ingin menerapkan pemisahan baca/tulis dan membaca data dari database sekunder kluster PolarDB untuk MySQL, atur parameter ini ke true. Jika Anda meninggalkan parameter ini kosong, nilai default false digunakan, yang menunjukkan bahwa data dibaca dari database utama.

Tidak

false

column

Nama kolom dari mana Anda ingin membaca data. Tentukan nama dalam array JSON. Nilai default adalah [*], yang menunjukkan semua kolom dalam tabel sumber.

  • Anda dapat memilih kolom tertentu untuk dibaca.

  • Urutan kolom dapat diubah. Ini menunjukkan bahwa Anda dapat menentukan kolom dalam urutan yang berbeda dari urutan yang ditentukan oleh skema tabel sumber.

  • Konstanta didukung. Nama kolom harus diatur sesuai dengan sintaks SQL yang didukung oleh PolarDB, seperti ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"].

    • id: nama kolom.

    • table: nama kolom yang berisi kata kunci cadangan.

    • 1: konstanta integer.

    • 'mingya.wmy': konstanta string, yang diapit tanda kutip tunggal (').

    • 'null': string null.

    • to_char(a+1): ekspresi fungsi yang digunakan untuk menghitung panjang string.

    • 2.3: konstanta floating-point.

    • true: nilai Boolean.

  • Parameter column harus secara eksplisit menentukan semua kolom dari mana Anda ingin membaca data. Parameter ini tidak dapat dibiarkan kosong.

Ya

Tidak ada nilai default

splitPk

Bidang yang digunakan untuk sharding data saat PolarDB Reader membaca data. Jika Anda mengonfigurasi parameter ini, tabel sumber di-sharding berdasarkan nilai parameter ini. Data Integration kemudian menjalankan thread paralel untuk membaca data. Ini meningkatkan efisiensi sinkronisasi data.

  • Kami sarankan Anda menyetel parameter splitPk ke nama kolom kunci utama tabel. Data dapat didistribusikan secara merata ke shard yang berbeda berdasarkan kolom kunci utama, bukan didistribusikan secara intensif hanya ke shard tertentu.

  • Parameter splitPk hanya mendukung sharding untuk data tipe data integer. Jika Anda menyetel parameter ini ke bidang tipe data yang tidak didukung, seperti string, bilangan titik mengambang, atau tipe data tanggal, PolarDB Reader mengabaikan pengaturan parameter splitPk dan menggunakan satu thread untuk membaca data.

  • Jika parameter splitPk tidak disediakan atau dibiarkan kosong, PolarDB Reader menggunakan satu thread untuk membaca data.

Tidak

Tidak ada nilai default

splitFactor

Faktor sharding, yang menentukan jumlah bagian ke dalam mana data yang akan disinkronkan di-sharding. Jika Anda mengonfigurasi paralelisme untuk tugas sinkronisasi batch Anda, jumlah bagian dihitung berdasarkan rumus berikut: Jumlah thread paralel × Faktor sharding. Sebagai contoh, jika jumlah thread paralel dan faktor sharding adalah 5, jumlah bagian ke dalam mana data yang akan disinkronkan di-sharding adalah 25.

Catatan

Kami sarankan Anda menentukan faktor sharding yang berkisar antara 1 hingga 100. Jika Anda menentukan faktor sharding yang lebih besar dari 100, kesalahan out of memory (OOM) mungkin terjadi.

Tidak

5

where

Klausul WHERE. Sebagai contoh, Anda dapat menyetel parameter ini ke gmt_create>$bizdate untuk membaca data yang dihasilkan pada hari saat ini.

  • Anda dapat menggunakan klausul WHERE untuk membaca data tambahan. Jika parameter where tidak disediakan atau dibiarkan kosong, PolarDB Reader membaca semua data.

  • Jangan menyetel parameter where ke limit 10. Nilai ini tidak sesuai dengan batasan PolarDB pada klausa SQL WHERE.

Tidak

Tidak ada nilai default

querySql (parameter lanjutan, yang hanya tersedia di editor kode)

Pernyataan SQL yang digunakan untuk penyaringan data yang lebih halus. Jika Anda mengonfigurasi parameter ini, PolarDB Reader mengabaikan pengaturan parameter column, table, dan where, dan hanya menyaring data berdasarkan nilai parameter ini. Sebagai contoh, jika Anda ingin menggabungkan beberapa tabel untuk sinkronisasi data, Anda dapat menyetel parameter ini ke select a,b from table_a join table_b on table_a.id = table_b.id. Prioritas parameter querySql lebih tinggi daripada parameter column, table, where, dan splitPk. Sumber data yang ditentukan oleh parameter datasource mengurai informasi, termasuk nama pengguna dan kata sandi, dari parameter ini.

Tidak

Tidak ada nilai default

Kode untuk PolarDB Writer

Kode berikut mengonfigurasi tugas sinkronisasi batch untuk menulis data ke PolarDB. Untuk informasi tentang parameter, lihat parameter dalam kode untuk PolarDB Writer.

{
    "type": "job",
    "steps": [
        {
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {
                "postSql": [],// Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi batch dijalankan. 
                "datasource": "test_005",// Nama sumber data. 
                "column": [// Nama kolom. 
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "writeMode": "insert",// Mode penulisan. 
                "batchSize": 256,// Jumlah catatan data yang ditulis sekaligus. 
                "table": "PolarDB_person_copy",// Nama tabel. 
                "preSql": []// Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi batch dijalankan. 
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",// Nomor versi. 
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// Jumlah maksimum catatan data kotor yang diizinkan. 
            "record": ""
        },
        "speed": {
            "throttle":true,// Menentukan apakah akan mengaktifkan pembatasan bandwidth. Nilai false menunjukkan bahwa pembatasan bandwidth dinonaktifkan, dan nilai true menunjukkan bahwa pembatasan bandwidth diaktifkan. Parameter mbps hanya berlaku jika parameter throttle disetel ke true. 
            "concurrent":6, // Jumlah maksimum thread paralel. 
            "mbps":"12",// Laju transmisi maksimum. Unit: MB/s. 
        }
    }
}

Parameter dalam kode untuk PolarDB Writer

  • Parameter dalam kode untuk PolarDB Writer

    Parameter

    Deskripsi

    Diperlukan

    Nilai default

    datasource

    Nama sumber data. Harus sama dengan nama sumber data yang ditambahkan. Anda dapat menambahkan sumber data menggunakan editor kode.

    Ya

    Tidak ada nilai default

    table

    Nama tabel yang berisi data yang ingin Anda baca.

    Ya

    Tidak ada nilai default

    writeMode

    Mode penulisan. Nilai valid:

    • insert: Mode ini setara dengan INSERT INTO pada UI tanpa kode.

    • update (setara dengan ON DUPLICATE KEY UPDATE pada UI tanpa kode)

    • replace: Mode ini setara dengan REPLACE INTO pada UI tanpa kode.

    Untuk informasi lebih lanjut tentang mode penulisan dan contoh data, lihat Deskripsi parameter writeMode.

    Catatan

    Saat tujuan adalah PolarDB untuk PostgreSQL, hanya mode insert yang didukung. Untuk memperbarui data dan menghindari konflik kunci utama, kami sarankan menghapus catatan duplikat di tabel tujuan sebelum melakukan sinkronisasi batch. Anda dapat menggunakan salah satu pendekatan berikut:

    Pendekatan 1: Konfigurasikan pernyataan TRUNCATE dalam parameter preSql (setara dengan a statement to be executed before data is written to the destination on the codeless UI) untuk membersihkan tabel tujuan.

    Pendekatan 2: Proses tabel tujuan di node hulu dari node sinkronisasi batch untuk memastikan tidak ada konflik kunci utama yang terjadi selama sinkronisasi data.

    Tidak

    insert

    column

    Nama kolom ke mana Anda ingin menulis data. Pisahkan nama dengan koma (,), Contoh: "column":["id","name","age"]. Jika Anda ingin menulis data ke semua kolom di tabel tujuan, atur parameter ini ke asterisk (*), seperti "column":["*"].

    Ya

    Tidak ada nilai default

    preSql

    Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi batch dijalankan. Sebagai contoh, Anda dapat menyetel parameter ini ke pernyataan SQL yang digunakan untuk menghapus data usang. Anda hanya dapat menjalankan satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode.

    Tidak

    Tidak ada nilai default

    postSql

    Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi batch dijalankan. Sebagai contoh, Anda dapat menyetel parameter ini ke pernyataan SQL yang digunakan untuk menambahkan timestamp. Anda hanya dapat menjalankan satu pernyataan SQL pada UI tanpa kode dan beberapa pernyataan SQL di editor kode.

    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 PolarDB 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

    updateColumn

    Nama kolom yang diperbarui saat terjadi konflik kunci utama atau konflik indeks unik. Parameter ini hanya berlaku saat parameter writeMode disetel ke update. Pisahkan nama dengan koma (,), seperti "updateColumn": ["name", "age"].

    Catatan

    Hanya sumber data PolarDB untuk MySQL yang mendukung parameter ini.

    Tidak

    Tidak ada nilai default

  • Deskripsi parameter writeMode

    Item

    insert (setara dengan INSERT INTO pada UI tanpa kode)

    update (setara dengan ON DUPLICATE KEY UPDATE pada UI tanpa kode)

    replace (setara dengan REPLACE INTO pada UI tanpa kode)

    Aturan Pemrosesan

    Jika terjadi konflik kunci utama atau indeks unik, data tidak ditulis ke baris yang bertentangan, dan data yang tidak ditulis dianggap sebagai data kotor.

    Jika tidak ada konflik kunci utama atau indeks unik, data diproses seperti saat menyetel parameter ini ke insert. Jika terjadi konflik, data di baris yang bertentangan di tabel tujuan diganti dengan data baru.

    Jika tidak ada konflik kunci utama atau indeks unik, data diproses seperti saat menyetel parameter ini ke insert. Jika terjadi konflik, baris asli dihapus, dan baris baru dimasukkan. Ini menunjukkan bahwa semua bidang baris asli diganti.

    Contoh Data

    • Data di tabel sumber

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Data asli di tabel tujuan

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Setelah tugas sinkronisasi batch dijalankan, satu catatan data ditulis ke tabel tujuan, dan satu catatan data dihasilkan.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Skenario 1: Hanya beberapa kolom yang ditentukan: "column": ["id","name"].

      • Data di tabel sumber

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Data asli di tabel tujuan

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Setelah tugas sinkronisasi batch dijalankan, dua catatan data ditulis ke tabel tujuan, dan tidak ada catatan data kotor yang dihasilkan.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    | 3   |
        +----+---------+-----+
    • Skenario 2: Semua kolom ditentukan: "column": ["id","name","age"].

      • Data di tabel sumber

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Data asli di tabel tujuan

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Setelah tugas sinkronisasi batch dijalankan, dua catatan data ditulis ke tabel tujuan, dan tidak ada catatan data kotor yang dihasilkan.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
    • Data di tabel sumber

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Data asli di tabel tujuan

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |  3  |
      +----+---------+-----+
    • Setelah tugas sinkronisasi batch dijalankan, dua catatan data ditulis ke tabel tujuan, dan tidak ada catatan data kotor yang dihasilkan.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+