全部产品
Search
文档中心

DataWorks:Sumber data MariaDB

更新时间:Jul 02, 2025

DataWorks menyediakan MariaDB Reader dan MariaDB Writer untuk membaca dan menulis data ke sumber data MariaDB. Topik ini menjelaskan kemampuan sinkronisasi data dari atau ke sumber data MariaDB.

Versi MariaDB yang didukung

Pembacaan dan penulisan data batch

MariaDB 5.5.x, MariaDB 10.0.x, MariaDB 10.1.x, MariaDB 10.2.x, dan MariaDB 10.3.x didukung. Data dari Tampilan dapat dibaca selama sinkronisasi batch.

Tipe data yang didukung

Untuk informasi tentang semua tipe data di setiap versi MariaDB, lihat dokumentasi resmi MariaDB. Tabel berikut memberikan status dukungan untuk tipe data utama di MariaDB 10.3.x.

Tipe data

MariaDB Reader untuk pembacaan data batch

MariaDB Writer untuk penulisan data batch

TINYINT

Didukung

Didukung

SMALLINT

Didukung

Didukung

INTEGER

Didukung

Didukung

BIGINT

Didukung

Didukung

FLOAT

Didukung

Didukung

DOUBLE

Didukung

Didukung

DECIMAL/NUMBERIC

Didukung

Didukung

REAL

Tidak didukung

Tidak didukung

VARCHAR

Didukung

Didukung

JSON

Didukung

Didukung

TEXT

Didukung

Didukung

MEDIUMTEXT

Didukung

Didukung

LONGTEXT

Didukung

Didukung

VARBINARY

Didukung

Didukung

BINARY

Didukung

Didukung

TINYBLOB

Didukung

Didukung

MEDIUMBLOB

Didukung

Didukung

LONGBLOB

Didukung

Didukung

ENUM

Didukung

Didukung

SET

Didukung

Didukung

BOOLEAN

Didukung

Didukung

BIT

Didukung

Didukung

DATE

Didukung

Didukung

DATETIME

Didukung

Didukung

TIMESTAMP

Didukung

Didukung

TIME

Didukung

Didukung

YEAR

Didukung

Didukung

LINESTRING

Tidak didukung

Tidak didukung

POLYGON

Tidak didukung

Tidak didukung

MULTIPOINT

Tidak didukung

Tidak didukung

MULTILINESTRING

Tidak didukung

Tidak didukung

MULTIPOLYGON

Tidak didukung

Tidak didukung

GEOMETRYCOLLECTION

Tidak didukung

Tidak didukung

Siapkan lingkungan MariaDB sebelum sinkronisasi data

Sebelum menggunakan DataWorks untuk menyinkronkan data dari atau ke sumber data MariaDB, Anda harus menyiapkan lingkungan MariaDB. Hal ini memastikan bahwa tugas sinkronisasi dapat dikonfigurasi dan berjalan sesuai harapan. Berikut adalah langkah-langkah untuk menyiapkan lingkungan MariaDB.

Persiapan 1: Periksa versi database MariaDB Anda

Data Integration memiliki persyaratan khusus untuk versi MariaDB. Anda dapat merujuk ke Versi MariaDB yang Didukung untuk memeriksa apakah versi database MariaDB Anda memenuhi persyaratan. Jalankan pernyataan terkait untuk memeriksa versi database MariaDB Anda.

Persiapan 2: Siapkan akun dengan izin yang diperlukan

Kami merekomendasikan agar Anda merencanakan dan membuat akun untuk DataWorks mengakses database MariaDB Anda. Berikut adalah langkah-langkah untuk menyiapkan akun tersebut:

  1. Buat akun. Langkah ini opsional.

    Untuk informasi lebih lanjut, lihat Buat akun yang digunakan untuk mengakses database MariaDB.

  2. Berikan izin yang diperlukan kepada akun tersebut.

    • Pembacaan data batch: Akun harus memiliki izin SELECT.

    • Penulisan data batch: Akun harus memiliki izin INSERT, DELETE, dan UPDATE.

  3. Jalankan pernyataan berikut untuk memberikan izin kepada akun tersebut. Sebagai alternatif, berikan izin SUPER kepada akun tersebut. Ganti Akun untuk sinkronisasi data dengan akun yang telah dibuat saat Anda menjalankan pernyataan tersebut.

    -- CREATE USER 'Akun untuk sinkronisasi data'@'%' IDENTIFIED BY 'Password'; //Buat akun yang dapat digunakan untuk sinkronisasi data dan tentukan kata sandi. Dengan cara ini, Anda dapat menggunakan akun dan kata sandi untuk mengakses database dari host mana pun. % menunjukkan host.
    GRANT SELECT, INSERT, DELETE,UPDATE CLIENT ON *.* TO 'Akun untuk sinkronisasi data'@'%'; //Berikan izin SELECT, INSERT, DELETE, dan UPDATE kepada akun tersebut.

Kembangkan tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi data, lihat bagian berikut. Untuk informasi tentang pengaturan parameter, lihat infotip setiap parameter pada tab konfigurasi tugas.

Tambahkan sumber data

Konfigurasikan tugas sinkronisasi batch untuk menyinkronkan data tabel tunggal

Lampiran: Kode dan parameter

Lampiran: Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Kode untuk MariaDB Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"mariadb",// Nama Plugin.
            "parameter":{
                "column":[// Nama kolom.
                    "id"
                ],
                "connection":[
                    {   "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // Pernyataan SQL yang digunakan untuk membaca data dari tabel sumber.
                        "datasource":"",// Nama sumber data.
                        "table":[// Nama tabel sumber. Nama tabel harus diapit oleh tanda kurung [].
                            "xxx"
                        ]
                    }
                ],
                "where":"",// Klausul WHERE.
                "splitPk":"",// Kunci shard.
                "encoding":"UTF-8"// Format penyandian.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan data kotor yang diizinkan.
        },
        "speed":{
            "throttle":true,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true.
            "concurrent":1,// Jumlah maksimum thread paralel.
            "mbps":"12"// Laju transmisi maksimum. Unit: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter dalam kode untuk MariaDB 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. Setiap tugas sinkronisasi hanya dapat digunakan untuk menyinkronkan data ke satu tabel.

Contoh berikut menunjukkan penggunaan lanjutan parameter table. Dalam contoh, parameter table digunakan untuk menentukan rentang tabel.

  • Setel parameter table ke 'table_[0-99]'. Nilai ini menunjukkan bahwa MariaDB Reader membaca data dari tabel 'table_0' hingga 'table_99' di basis data sharding.

  • Setel parameter table ke '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'. Nilai ini menunjukkan bahwa MariaDB Reader membaca data dari tabel 'table_000' hingga 'table_999'. Anda hanya dapat menggunakan metode ini jika sufiks numerik nama tabel Anda memiliki panjang yang sama.

Catatan

MariaDB Reader membaca data dari kolom yang ditentukan oleh parameter column di partisi yang ditentukan oleh parameter table. Jika partisi atau kolom yang ditentukan tidak ada, tugas sinkronisasi gagal.

Ya

Tidak ada nilai default

column

Nama kolom dari mana Anda ingin membaca data. Tentukan nama dalam array JSON. Nilai default adalah [ * ], yang menunjukkan semua kolom di 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 MariaDB, seperti ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"].

    • id: nama kolom.

    • table: nama kolom yang berisi kata kunci tercadang.

    • 1: konstanta integer.

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

    • null:

  • " " menunjukkan string kosong.

  • null menunjukkan nilai null.

  • 'null' menunjukkan 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 boleh dibiarkan kosong.

Ya

Tidak ada nilai default

splitPk

Field yang digunakan untuk sharding data ketika MariaDB Reader membaca data. Jika Anda mengonfigurasi parameter ini, tabel sumber di-shard berdasarkan nilai parameter ini. Data Integration kemudian menjalankan thread paralel untuk membaca data. Dengan cara ini, data dapat disinkronkan lebih efisien.

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

  • Parameter splitPk mendukung sharding data hanya untuk tipe data integer. Jika Anda menyetel parameter splitPk ke field dengan tipe data yang tidak didukung, seperti string, floating point, atau tanggal, pengaturan parameter ini diabaikan, dan thread tunggal digunakan untuk membaca data.

  • Jika parameter splitPk tidak disediakan atau dibiarkan kosong, thread tunggal digunakan untuk membaca data.

Tidak

Tidak ada nilai default

where

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

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

  • Jangan menyetel parameter where ke limit 10. Nilai ini tidak sesuai dengan batasan MariaDB 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, MariaDB Reader mengabaikan pengaturan parameter table, column, dan splitPk dan hanya menyaring data berdasarkan nilai parameter ini.

Sebagai contoh, jika Anda ingin menggabungkan beberapa tabel untuk sinkronisasi data, setel 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 prioritas parameter table, column, where, dan splitPk. Jika Anda mengonfigurasi parameter querySql, MariaDB Reader mengabaikan pengaturan parameter table, column, where, dan splitPk. Sistem mengurai informasi, seperti nama pengguna dan kata sandi, dari sumber data yang ditentukan oleh parameter datasource dari parameter querySql.

Catatan

Nama parameter querySql bersifat case-sensitive. Sebagai contoh, querysql tidak akan berlaku.

Tidak

Tidak ada nilai default

Kode untuk MariaDB Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[ 
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"mariadb",// Nama Plugin.
            "parameter":{
                "postSql":[],// Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan.
                "datasource":"",// Nama sumber data.
                "column":[// Nama kolom.
                    "id",
                    "value"
                ],
                "writeMode":"insert into",// Mode penulisan. Nilai valid: insert into, replace into, dan on duplicate key update.
                "batchSize":1024,// Jumlah catatan data yang ditulis sekaligus.
                "table":"",// Nama tabel.
                "preSql":[ 
                     "delete from XXX;" // Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan.
                   ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{// Jumlah maksimum catatan data kotor yang diizinkan.
            "record":"0"
        },
        "speed":{
            "throttle":true,// Menentukan apakah akan mengaktifkan throttling. Nilai false menunjukkan bahwa throttling dinonaktifkan, dan nilai true menunjukkan bahwa throttling diaktifkan. Parameter mbps hanya berlaku ketika parameter throttle disetel ke true.
            "concurrent":1, // Jumlah maksimum thread paralel.
            "mbps":"12"// Laju transmisi maksimum. Unit: MB/s. Menyetel parameter ini ke nilai yang sesuai dapat mengurangi beban baca pada sumber dan beban tulis pada tujuan.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter dalam kode untuk MariaDB 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 ke mana Anda ingin menulis data.

Ya

Tidak ada nilai default

writeMode

Mode penulisan. Nilai valid: insert into, on duplicate key update, dan replace into.

  • insert into: Jika terjadi konflik kunci utama atau indeks unik, data tidak dapat ditulis ke baris yang bertentangan, dan data yang tidak ditulis ke baris tersebut dianggap sebagai data kotor. Jika Anda mengonfigurasi tugas sinkronisasi menggunakan editor kode, setel writeMode ke insert into.

  • on duplicate key update: Jika tidak terjadi konflik kunci utama atau indeks unik, data diproses dengan cara yang sama seperti saat Anda menyetel parameter ini ke insert into. Jika terjadi konflik, bidang tertentu di baris asli diganti dengan baris baru, dan data ditulis ke MariaDB. Jika Anda mengonfigurasi tugas sinkronisasi menggunakan editor kode, setel writeMode ke on duplicate key update.

  • replace into: Jika tidak terjadi konflik kunci utama atau indeks unik, data diproses dengan cara yang sama seperti saat Anda menyetel parameter ini ke insert into. Jika terjadi konflik, baris asli dihapus, dan baris baru dimasukkan. Ini menunjukkan bahwa semua data di baris asli diganti. Jika Anda mengonfigurasi tugas sinkronisasi menggunakan editor kode, setel writeMode ke replace into.

Tidak

insert into

column

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

Ya

Tidak ada nilai default

preSql

Pernyataan SQL yang ingin Anda jalankan sebelum tugas sinkronisasi dijalankan. Anda hanya dapat menjalankan satu pernyataan SQL di UI tanpa kode dan beberapa pernyataan SQL di editor kode. Sebagai contoh, Anda dapat menjalankan pernyataan TRUNCATE TABLE tablename untuk menghapus data lama sebelum tugas sinkronisasi dijalankan.

Catatan

Jika Anda menentukan beberapa pernyataan SQL, pernyataan tersebut tidak dijalankan dalam transaksi yang sama.

Tidak

Tidak ada nilai default

postSql

Pernyataan SQL yang ingin Anda jalankan setelah tugas sinkronisasi dijalankan. Anda hanya dapat menjalankan satu pernyataan SQL di UI tanpa kode dan beberapa pernyataan SQL di editor kode. Sebagai contoh, Anda dapat menjalankan pernyataan ALTER TABLE tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP untuk menambahkan cap waktu setelah tugas sinkronisasi dijalankan.

Catatan

Jika Anda menentukan beberapa pernyataan SQL, pernyataan tersebut tidak dijalankan dalam transaksi yang sama.

Tidak

Tidak ada nilai default

batchSize

Jumlah catatan data yang ditulis sekaligus. Setel parameter ini ke nilai yang sesuai berdasarkan kebutuhan bisnis Anda. Ini sangat mengurangi interaksi antara Data Integration dan MariaDB serta meningkatkan throughput. Jika Anda menyetel parameter ini ke nilai yang terlalu besar, kesalahan out of memory (OOM) mungkin terjadi selama sinkronisasi data.

Tidak

256

updateColumn

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

Tidak

Tidak ada nilai default