All Products
Search
Document Center

DataWorks:DRDS (PolarDB-X 1.0)

Last Updated:Mar 01, 2026

Sumber data DRDS (PolarDB-X 1.0) memungkinkan Anda membaca dan menulis data ke DRDS (PolarDB-X 1.0). Topik ini menjelaskan kemampuan sinkronisasi data DataWorks untuk sumber data tersebut.

Batasan

Baca dan tulis offline

  • Plugin DRDS (PolarDB-X 1.0) hanya kompatibel dengan engine MySQL. DRDS (PolarDB-X 1.0) merupakan database MySQL terdistribusi, dan sebagian besar protokol komunikasinya mengikuti standar MySQL.

  • MySQL 8.0 dalam DRDS (PolarDB-X 1.0) mendukung Serverless resource groups (direkomendasikan) dan exclusive resource groups for Data Integration.

  • Secara internal, DRDS (PolarDB-X 1.0) Writer terhubung ke proxy database DRDS (PolarDB-X 1.0) remote melalui Java Database Connectivity (JDBC) dan menjalankan pernyataan replace into untuk menulis data ke DRDS (PolarDB-X 1.0).

    Karena pernyataan SQL yang dieksekusi adalah replace into, tabel Anda harus memiliki primary key atau unique index untuk mencegah penulisan data duplikat.

  • DRDS (PolarDB-X 1.0) Writer mengambil data dari Reader melalui framework sinkronisasi data, lalu menulisnya ke DRDS (PolarDB-X 1.0) menggunakan pernyataan replace into. Jika tidak terjadi konflik pada primary key atau unique index, perilakunya sama seperti insert into. Jika terjadi konflik, baris baru akan menggantikan seluruh bidang pada baris yang sudah ada. DRDS (PolarDB-X 1.0) Writer mengumpulkan data dan melakukan commit ke proxy DRDS (PolarDB-X 1.0), yang kemudian menentukan apakah data akan ditulis ke satu atau beberapa tabel serta bagaimana merutekan data saat menulis ke beberapa tabel.

    Catatan

    Tugas memerlukan setidaknya izin replace into. Apakah izin tambahan diperlukan bergantung pada pernyataan yang Anda tentukan di preSql dan postSql saat mengonfigurasi tugas.

  • Pembacaan dari view didukung.

Tipe bidang yang didukung

DRDS (PolarDB-X 1.0) Reader dan Writer mendukung sebagian besar tipe data DRDS (PolarDB-X 1.0). Namun, beberapa tipe tidak didukung. Pastikan tipe data Anda termasuk dalam daftar yang didukung.

Tabel berikut mencantumkan tipe data yang didukung oleh DRDS (PolarDB-X 1.0) Reader dan Writer.

Kategori tipe

Tipe data DRDS (PolarDB-X 1.0)

Tipe integer

INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT

Tipe bilangan titik mengambang

FLOAT, DOUBLE, dan DECIMAL

Tipe string

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

Tipe tanggal dan waktu

DATE, DATETIME, TIMESTAMP, TIME, dan YEAR

Tipe Boolean

BIT dan BOOL

Tipe biner

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY

Prasyarat

Buat akun login database dengan izin yang diperlukan untuk melakukan operasi pada DRDS (PolarDB-X 1.0). Untuk informasi selengkapnya, lihat Create an account.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data

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

Konfigurasikan tugas sinkronisasi offline untuk satu tabel

Konfigurasikan tugas sinkronisasi offline untuk seluruh database

Untuk informasi lebih lanjut, lihat Configure an offline sync task for an entire database.

FAQ

  • Permasalahan konsistensi view

    DRDS (PolarDB-X 1.0) adalah database terdistribusi dan tidak dapat menyediakan view yang konsisten untuk beberapa database dan tabel yang di-shard. Berbeda dengan sinkronisasi data untuk satu database dan tabel MySQL, DRDS (PolarDB-X 1.0) Reader tidak dapat mengekstrak informasi snapshot dari database dan tabel yang di-shard pada time slice yang sama. Artinya, ketika DRDS (PolarDB-X 1.0) Reader mengekstrak data dari tabel-tabel sharded yang berbeda di lapisan bawah, snapshot tabel yang diambil berbeda-beda. Konsistensi kuat tidak dapat dijamin.

  • Permasalahan encoding database

    DRDS (PolarDB-X 1.0) menyediakan pengaturan encoding yang fleksibel. Anda dapat menentukan encoding berbeda di tingkat database, tabel, dan bidang. Prioritas pengaturan encoding, dari tertinggi ke terendah, adalah bidang, tabel, database, lalu instans. Kami merekomendasikan agar Anda menetapkan encoding ke UTF-8 di tingkat database.

    DRDS (PolarDB-X 1.0) Reader menggunakan JDBC untuk mengekstrak data. JDBC kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan bawah. Oleh karena itu, Anda tidak perlu menentukan encoding untuk DRDS (PolarDB-X 1.0) Reader. Encoding tersebut dapat diambil dan ditranskode secara otomatis.

    Jika encoding yang digunakan untuk menulis data ke lapisan bawah DRDS (PolarDB-X 1.0) tidak konsisten dengan encoding yang ditentukan, DRDS (PolarDB-X 1.0) Reader tidak dapat mendeteksi ketidakkonsistenan ini. Dalam kasus seperti itu, hasil sinkronisasi mungkin berisi karakter acak (garbled characters).

  • Metode untuk sinkronisasi data inkremental

    DRDS (PolarDB-X 1.0) Reader menggunakan pernyataan SELECT JDBC untuk mengekstrak data. Anda dapat menggunakan SELECT…WHERE… untuk melakukan ekstraksi data inkremental dengan cara berikut:

    • Saat aplikasi online menulis data ke database, aplikasi tersebut mengisi bidang `modify` dengan timestamp perubahan, yang bisa berupa penambahan, pembaruan, atau penghapusan logis. Untuk aplikasi semacam ini, Anda cukup menambahkan klausa `WHERE` dengan timestamp sinkronisasi terakhir ke konfigurasi DRDS (PolarDB-X 1.0) Reader.

    • Untuk data streaming baru, Anda dapat menambahkan klausa `WHERE` dengan ID auto-increment maksimum dari tahap sebelumnya ke konfigurasi DRDS (PolarDB-X 1.0) Reader.

    Jika aplikasi Anda tidak memiliki bidang untuk membedakan antara data baru dan data yang dimodifikasi, DRDS (PolarDB-X 1.0) Reader tidak dapat melakukan sinkronisasi data inkremental. Reader hanya dapat menyinkronkan data penuh.

  • Kondisi filter yang terkait dengan tabel fisik tidak didukung dalam klausa `WHERE`.

Lampiran: Contoh skrip dan parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi
    "steps":[
        {
            "stepType":"drds",// Nama plugin
            "parameter":{
                "datasource":"",// Nama sumber data
                "column":[// Nama kolom
                    "id",
                    "name"
                ],
                "where":"",// Kondisi filter
                "table":"",// Nama tabel
                "splitPk": ""// Kunci shard
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",// Nama plugin
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error
        },
        "speed":{
            "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
            "concurrent":1,// Konkurensi
            "mbps":"12"// Laju data maksimum. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Tabel tempat Anda ingin menyinkronkan data.

Ya

Tidak ada

column

Kolom yang ingin Anda sinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan bidang. Secara default, semua kolom digunakan. Contoh: [*].

  • Pemangkasan kolom didukung. Anda dapat menyinkronkan subset kolom.

  • Pengubahan urutan kolom didukung. Anda dapat menyinkronkan kolom dalam urutan yang berbeda dari skema tabel.

  • Konstanta didukung. Anda harus mengikuti sintaksis MySQL. Misalnya, ["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3", "true"]. Parameter dalam contoh dijelaskan sebagai berikut:

    • id adalah nama kolom biasa.

    • table menggunakan nama kolom yang dicadangkan.

    • 1 adalah konstanta integer.

    • bazhen.csy adalah konstanta string.

    • null adalah pointer null.

    • to_char(a + 1) adalah ekspresi fungsi.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai Boolean.

  • Anda harus menentukan set kolom yang akan disinkronkan untuk column. Parameter ini tidak boleh kosong.

Ya

Tidak ada

where

Kondisi filter. DRDS (PolarDB-X 1.0) Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan, lalu mengekstrak data berdasarkan pernyataan SQL tersebut.

  • Kondisi where dapat digunakan untuk sinkronisasi data inkremental.

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

Misalnya, selama pengujian, Anda dapat menggunakan kondisi `where` untuk menentukan skenario bisnis. Biasanya, Anda mungkin ingin menyinkronkan data untuk hari ini. Anda dapat mengatur kondisi where menjadi STRTODATE('${bdp.system.bizdate}','%Y%m%d') <= today AND today < DATEADD(STRTODATE('${bdp.system.bizdate}', '%Y%m%d'), interval 1 day).

Tidak

Tidak ada

Contoh skrip 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 dijalankan setelah tugas sinkronisasi data.
                "datasource":"",// Sumber data.
                "column":[// Nama kolom.
                "id"
                ],
                "writeMode":"insert ignore",
                "batchSize":"1024",// Jumlah catatan yang dikomit dalam satu batch.
                "table":"test",// Nama tabel.
                "preSql":[]// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data.
                },
            "name":"Writer",
            "category":"writer"
                }
                ],
    "setting":{
        "errorLimit":{
        "record":"0"// Jumlah catatan error.
            },
        "speed":{
            "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, artinya laju data tidak dibatasi. Jika throttle diatur ke true, laju data dibatasi.
            "concurrent":1, // Jumlah tugas konkuren.
            "mbps":"12"// Laju data maksimum. 1 mbps = 1 MB/s.
                }
            },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
                }
            ]
        }
    }

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Tabel tempat Anda ingin menyinkronkan data.

Ya

Tidak ada

writeMode

Mode impor. Nilai yang valid: insert ignore dan replace into.

  • insert ignore: Saat terjadi pelanggaran primary key atau constraint, data sumber diabaikan.

  • replace into: Saat terjadi pelanggaran primary key atau constraint, data sumber menggantikan data tujuan.

Tidak

insert ignore

column

Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang dengan koma (,). Contoh: "column": ["id", "name", "age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "column": ["*"].

Ya

Tidak ada

preSql

Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL.

Misalnya, delete * from table xxx; menghapus data dari tabel `xxx` sebelum data ditulis. Konfigurasikan parameter ini sesuai kebutuhan.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL.

Misalnya, delete * from table xxx where xx=xx; menghapus data yang memenuhi kondisi tertentu setelah sinkronisasi data. Konfigurasikan parameter ini sesuai kebutuhan.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikomit dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi interaksi jaringan antara sistem sinkronisasi data dan DRDS (PolarDB-X 1.0), sehingga meningkatkan throughput keseluruhan. Jika nilai ini terlalu besar, dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data.

Tidak

1.024