All Products
Search
Document Center

DataWorks:Sumber data PostgreSQL

Last Updated:Jun 18, 2026

Sumber data PostgreSQL menyediakan saluran dua arah untuk membaca dan menulis data ke PostgreSQL. Anda dapat mengonfigurasi tugas sinkronisasi data menggunakan mode wizard atau mode skrip. Topik ini menjelaskan dukungan DataWorks terhadap sinkronisasi data PostgreSQL.

Versi yang didukung

Anda dapat mengonfigurasi sumber data untuk PostgreSQL versi 10, 11, 12, 13, 14, 15, dan 16.4. Untuk memeriksa versi database PostgreSQL Anda, jalankan pernyataan berikut.

SHOW SERVER_VERSION;

Batasan

Baca dan tulis offline

Catatan

Anda dapat membaca data dari views.

  • Sumber data PostgreSQL mendukung autentikasi berbasis password, termasuk metode SCRAM-SHA-256. Jika Anda mengubah password atau metode autentikasi di database PostgreSQL, Anda harus memperbarui konfigurasi sumber data, menguji koneksi lagi, dan menjalankan tugas terkait secara manual untuk memverifikasi perubahan tersebut.

  • PostgreSQL

  • Jika nama tabel atau kolom di PostgreSQL diawali angka, case-sensitive, atau mengandung tanda hubung (-), Anda harus membungkus nama tersebut dengan tanda kutip ganda (""). Jika tidak, plugin PostgreSQL tidak dapat membaca atau menulis data. Di plugin PostgreSQL Reader dan Writer, tanda kutip ganda ("") merupakan kata kunci JSON. Oleh karena itu, Anda harus melakukan escape tanda kutip ganda tersebut dengan backslash (\). Misalnya, jika sebuah tabel bernama 123Test, nama yang telah di-escape adalah \"123Test\".

    Catatan
    • Kedua tanda kutip ganda (pembuka dan penutup) harus di-escape dengan backslash (\).

    • Mode wizard tidak mendukung escaping. Anda harus beralih ke mode skrip untuk melakukan escaping karakter.

    Kode berikut menunjukkan contoh cara melakukan escaping karakter dalam mode skrip.

    "parameter": {
        "datasource": "abc",
        "column": [
            "id",
            "\"123Test\"", //Tambahkan karakter escape
    ],
    "where": "",
    "splitPk": "id",
    "table": "public.wpw_test"
    },
  • Pembaruan data di sumber data PostgreSQL berdasarkan indeks unik tidak didukung. Untuk memperbarui data, Anda harus terlebih dahulu menulis data ke tabel temporary, lalu menggunakan operasi RENAME.

Baca real-time

Batasan berikut berlaku untuk tugas sinkronisasi real-time di Data Integration:

  • Data Integration memberikan dukungan khusus untuk ADD COLUMN:

    • Batasan: Anda tidak dapat menggabungkan operasi ADD COLUMN dengan operasi ADD COLUMN, DROP COLUMN, atau pernyataan DDL lainnya dalam satu transaksi.

      Penting

      Jika Anda menggunakan ADD COLUMN bersama operasi lain seperti DROP COLUMN、RENAME COLUMN atau operasi ALTER COLUMN lainnya, tugas sinkronisasi data mungkin gagal berjalan dengan benar.

    • Batasan: Operasi DDL selain ADD COLUMN tidak dapat dikenali.

  • ALTER TABLE/CREATE TABLE tidak didukung.

  • Replikasi tabel TEMPORARY, tabel UNLOGGED, dan tabel Hyper tidak didukung. PostgreSQL tidak menyediakan mekanisme untuk berlangganan parsing log WAL untuk jenis tabel ini.

  • Replikasi Sequences (serial/bigserial/identity) tidak didukung.

  • Operasi TRUNCATE tidak didukung.

  • Replikasi objek besar (Bytea) tidak didukung.

  • Replikasi views, materialized views, dan foreign tables tidak didukung.

  • Ketika PostgreSQL digunakan sebagai sumber untuk sinkronisasi real-time satu tabel atau sinkronisasi real-time seluruh database, hanya tabel yang memiliki izin owner pada akun tersebut yang dapat disinkronkan.

Tipe kolom yang didukung

Sebagian besar tipe data PostgreSQL didukung. Namun, beberapa tipe tidak didukung untuk operasi baca dan tulis sinkronisasi batch. Periksa tipe data Anda sebelum melanjutkan.

Tabel berikut mencantumkan pemetaan konversi tipe untuk PostgreSQL.

Kategori tipe

Tipe data PostgreSQL

Integer

BIGINT, BIGSERIAL, INTEGER, SMALLINT, dan SERIAL

Bilangan titik mengambang

DOUBLE PRECISION, MONEY, NUMERIC, dan REAL

String

VARCHAR, CHAR, TEXT, BIT, dan INET

Tanggal dan waktu

DATE, TIME, dan TIMESTAMP

Boolean

BOOL

Biner

BYTEA

Catatan

  • Tipe kolom selain yang tercantum di atas tidak didukung.

  • Di PostgreSQL Reader, tipe MONEY, INET, dan BIT harus dikonversi menggunakan sintaksis seperti a_inet::varchar.

Persiapan sebelum sinkronisasi data

Sebelum menyinkronkan data di DataWorks, Anda harus menyiapkan lingkungan PostgreSQL seperti yang dijelaskan dalam bagian ini untuk memastikan bahwa tugas sinkronisasi data PostgreSQL dapat dikonfigurasi dan dijalankan dengan benar di DataWorks. Bagian berikut menjelaskan langkah-langkah persiapan untuk sinkronisasi PostgreSQL.

Persiapan 1: Buat akun dan konfigurasi izin

Anda harus merencanakan akun login database untuk operasi selanjutnya. Akun ini harus memiliki izin REPLICATION、 LOGIN pada database.

Catatan

Sinkronisasi real-time hanya mendukung mekanisme replikasi logis. Replikasi logis menggunakan model publish-and-subscribe di mana satu atau lebih subscriber berlangganan ke satu atau lebih publication pada node publisher. Subscriber menarik data dari publication yang mereka langgani.

Replikasi logis suatu tabel biasanya dimulai dengan mengambil snapshot data pada database publisher dan menyalinnya ke subscriber. Setelah snapshot selesai, perubahan pada publisher dikirim ke subscriber secara real-time.

  1. Buat akun.

    Untuk informasi lebih lanjut, lihat Buat akun.

  2. Konfigurasi izin.

    Periksa apakah akun memiliki izin replication.

    select userepl from pg_user where usename='xxx'

    Hasil yang diharapkan adalah True. Jika hasilnya False, akun tersebut tidak memiliki izin. Anda dapat menjalankan pernyataan berikut untuk memberikan izin tersebut.

    ALTER USER <user> REPLICATION;

Persiapan 2: Periksa apakah database standby didukung

SELECT pg_is_in_recovery()

Hanya database utama yang didukung. Hasil yang diharapkan adalah False. Jika hasilnya True, database tersebut adalah database standby. Sinkronisasi real-time tidak mendukung database standby. Anda harus mengubah konfigurasi sumber data agar mengarah ke database utama. Untuk informasi lebih lanjut, lihat Konfigurasi sumber data.

Persiapan 3: Periksa apakah wal_level diatur ke logical

show wal_level

wal_level menentukan tingkat wal_log. Nilai yang diharapkan adalah logical. Jika tidak, mekanisme replikasi logis tidak didukung.

Persiapan 4: Periksa apakah proses wal_sender dapat dimulai

-- Query max_wal_senders
show max_wal_senders;

-- Query jumlah entri pg_stat_replication
select count(*) from pg_stat_replication

Jika max_wal_senders tidak kosong dan nilainya lebih besar daripada jumlah entri max_wal_senders di pg_stat_replication, tersedia proses wal_sender yang idle. Database PostgreSQL memulai proses wal_sender untuk program sinkronisasi data agar mengirim log ke subscriber.

Untuk setiap tabel yang perlu disinkronkan, Anda harus menjalankan pernyataan ALTER TABLE [tableName] REPLICA IDENTITY FULL secara manual untuk memberikan izin yang diperlukan. Jika tidak, tugas sinkronisasi real-time akan gagal.

Setelah tugas sinkronisasi real-time PostgreSQL dimulai, slot dan publication dibuat secara otomatis di database. Format nama slot adalah di_slot_ + ID Solusi , dan format nama publication adalah di_pub_ + ID Solusi. Setelah tugas sinkronisasi real-time dihentikan atau diundeploy, Anda harus menghapus slot dan publication tersebut secara manual. Jika tidak, file WAL PostgreSQL dapat terus bertambah.

Tambahkan sumber data

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

Jika autentikasi SSL diaktifkan untuk database PostgreSQL Anda, Anda juga harus mengaktifkan autentikasi SSL saat menambahkan sumber data PostgreSQL di DataWorks. Untuk informasi lebih lanjut, lihat Tambahkan autentikasi SSL untuk sumber data PostgreSQL.

Pengembangan tugas sinkronisasi data: Panduan proses sinkronisasi PostgreSQL

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

Panduan konfigurasi tugas sinkronisasi batch satu tabel

Panduan konfigurasi tugas sinkronisasi baca batch seluruh database dan baca real-time seluruh database

Untuk informasi lebih lanjut tentang prosedurnya, lihat Konfigurasi tugas sinkronisasi batch seluruh database dan Konfigurasi tugas sinkronisasi real-time seluruh database.

FAQ

  • Masalah pemulihan data sinkronisasi primary-standby

    Masalah sinkronisasi primary-standby mengacu pada skenario di mana PostgreSQL menggunakan pemulihan bencana primary-standby, dan database standby terus memulihkan data dari database utama. Karena terdapat selisih waktu antara sinkronisasi data primary dan standby, terutama dalam situasi tertentu seperti latency jaringan, data yang dipulihkan di database standby mungkin berbeda signifikan dari database utama. Data yang disinkronkan dari database standby bukan snapshot lengkap pada waktu saat ini.

  • Batasan konsistensi

    PostgreSQL adalah sistem RDBMS yang menyediakan antarmuka kueri data yang sangat konsisten. Misalnya, ketika tugas sinkronisasi sedang berjalan dan penulis lain sedang menulis data ke database, PostgreSQL Reader tidak mengambil data yang baru ditulis karena fitur snapshot database.

    Penjelasan di atas menggambarkan karakteristik konsistensi sinkronisasi data PostgreSQL Reader dalam mode single-thread. PostgreSQL Reader dapat melakukan ekstraksi data konkuren berdasarkan konfigurasi Anda, sehingga konsistensi data yang ketat tidak dapat dijamin.

    Setelah PostgreSQL Reader membagi data berdasarkan splitPk, beberapa tugas konkuren dimulai secara berurutan untuk menyelesaikan sinkronisasi data. Tugas-tugas konkuren ini tidak termasuk dalam transaksi baca yang sama, dan terdapat interval waktu di antara mereka. Oleh karena itu, data tersebut bukan snapshot data yang lengkap dan konsisten.

    Snapshot konsisten untuk operasi multi-thread secara teknis tidak layak. Hal ini hanya dapat diatasi dari perspektif rekayasa. Solusi berikut melibatkan pertukaran. Anda dapat memilih berdasarkan situasi Anda.

    • Gunakan sinkronisasi single-threaded, artinya tidak ada sharding data. Kelemahannya adalah kecepatan lebih lambat, tetapi menjamin konsistensi.

    • Hentikan penulis data lain untuk memastikan data saat ini statis, misalnya dengan mengunci tabel atau menghentikan sinkronisasi database standby. Kelemahannya adalah potensi dampak pada bisnis online.

  • Masalah encoding database

    PostgreSQL hanya mendukung encoding Chinese sederhana EUC_CN dan UTF-8 di sisi server. PostgreSQL Reader menggunakan JDBC untuk ekstraksi data di tingkat dasar. JDBC secara native mendukung berbagai encoding dan melakukan konversi encoding di tingkat dasar. Oleh karena itu, PostgreSQL Reader tidak mengharuskan Anda menentukan encoding dan dapat secara otomatis mendeteksi serta mengonversi encoding.

    Jika encoding penulisan dasar PostgreSQL tidak konsisten dengan encoding yang dikonfigurasi, PostgreSQL Reader tidak dapat mendeteksi masalah ini dan tidak dapat memberikan solusi. Data yang diekspor mungkin berisi karakter acak.

  • Metode sinkronisasi data inkremental

    PostgreSQL Reader menggunakan pernyataan SELECT JDBC untuk ekstraksi data. Oleh karena itu, Anda dapat menggunakan SELECT…WHERE… untuk mengekstraksi data inkremental. Metodenya sebagai berikut:

    • Ketika aplikasi online menulis data ke database, field modify diisi dengan timestamp modifikasi, termasuk insert, update, dan delete (delete logis). Untuk aplikasi semacam ini, PostgreSQL Reader hanya perlu menambahkan timestamp dari fase sinkronisasi sebelumnya dalam kondisi where.

    • Untuk data sekuensial baru yang ditambahkan, PostgreSQL Reader hanya perlu menambahkan ID auto-increment maksimum dari fase sebelumnya dalam kondisi where.

    Jika tidak ada kolom untuk membedakan data baru dan data yang dimodifikasi di tingkat bisnis, PostgreSQL Reader tidak dapat melakukan sinkronisasi data inkremental dan hanya dapat menyinkronkan data penuh.

  • Keamanan SQL

    PostgreSQL Reader menyediakan pernyataan querySql agar Anda dapat mengimplementasikan pernyataan ekstraksi SELECT kustom. PostgreSQL Reader tidak melakukan validasi keamanan apa pun pada pernyataan querySql.

  • Jika Anda tidak dapat memilih nama tabel yang diinginkan saat mengonfigurasi tugas sinkronisasi, atasi masalah tersebut sebagai berikut:

    • Periksa apakah sumber data terhubung.

    • Periksa apakah akun PostgreSQL yang digunakan untuk sumber data memiliki izin tabel yang diperlukan.

    • Jika database berisi banyak tabel, kami sarankan Anda langsung mencari dengan mengetik nama tabel.

  • PostgreSQL tidak mendukung sinkronisasi tabel ter-shard. Jika Anda memiliki banyak tabel PostgreSQL yang perlu disinkronkan, kami sarankan Anda menggunakan tugas sinkronisasi seluruh database. Untuk informasi lebih lanjut, lihat Panduan konfigurasi tugas sinkronisasi seluruh database.

Lampiran 1: Demo skrip dan deskripsi 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 lebih lanjut, lihat Konfigurasi mode skrip. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

Untuk mengonfigurasi pekerjaan yang mengekstraksi data dari database PostgreSQL, gunakan mode skrip. Untuk informasi lebih lanjut, lihat Konfigurasi tugas sinkronisasi batch dalam mode skrip.

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"postgresql",// Nama plugin.
            "parameter":{
                "datasource":"",// Sumber data.
                "column":[// Kolom.
                    "col1",
                    "col2"
                ],
                "where":"",// Kondisi filter.
                "splitPk":"",// Kolom yang digunakan sebagai kunci split untuk sharding data. Sinkronisasi data memulai tugas konkuren untuk sinkronisasi data.
                "table":""// Nama tabel.
            },
            "name":"Reader",
            "category":"reader"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah error.
        },
        "speed":{
            "throttle":true, // Nilai false untuk throttle menunjukkan bahwa pembatasan kecepatan dinonaktifkan dan parameter mbps tidak berlaku. Nilai true menunjukkan bahwa pembatasan kecepatan diaktifkan.
            "concurrent":1, // Konkurensi pekerjaan.
            "mbps":"12"// Laju pembatasan. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Mode skrip memungkinkan Anda menambahkan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang Anda tambahkan.

Ya

N/A

table

Nama tabel dari mana Anda ingin menyinkronkan data.

Ya

N/A

column

Kumpulan nama kolom untuk disinkronkan dalam tabel yang dikonfigurasi, dijelaskan dalam array JSON. Secara default, semua kolom digunakan, misalnya [*].

  • Pemangkasan kolom didukung, artinya Anda dapat memilih kolom tertentu untuk disinkronkan.

  • Pengubahan urutan kolom didukung, artinya kolom dapat disinkronkan dalam urutan yang berbeda dari skema tabel.

  • Konstanta didukung. Anda harus mengikuti format sintaksis SQL MySQL, misalnya, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2.3" , "true"] .

    • id adalah nama kolom biasa.

    • table adalah nama kolom yang berisi kata kunci tercadang.

    • 1 adalah konstanta integer.

    • 'mingya.wmy' adalah konstanta string (sepasang tanda kutip tunggal diperlukan).

    • 'null' adalah string.

    • to_char(a+1) adalah fungsi yang menghitung panjang string.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah Nilai Boolean.

  • column harus secara eksplisit menentukan kumpulan kolom untuk disinkronkan dan tidak boleh dibiarkan kosong.

Ya

N/A

splitFactor

Faktor split. Anda dapat mengonfigurasi jumlah split data. Jika beberapa thread konkuren dikonfigurasi, data dibagi menjadi concurrency × splitFactor bagian. Misalnya, jika concurrency adalah 5 dan splitFactor adalah 5, data dibagi menjadi 5 × 5 = 25 bagian dan dieksekusi di 5 thread konkuren.

Catatan

Nilai yang direkomendasikan: 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM).

Tidak

5

splitPk

Saat PostgreSQL Reader mengekstraksi data, jika Anda menentukan splitPk, kolom yang diwakili oleh splitPk digunakan untuk sharding data. Sinkronisasi data memulai tugas konkuren untuk meningkatkan kinerja sinkronisasi:

  • Kami merekomendasikan Anda menggunakan primary key tabel untuk splitPk, karena primary key umumnya terdistribusi merata, yang mengurangi risiko hotspot data pada shard yang dihasilkan.

  • splitPk hanya mendukung sharding data integer. Tipe string, bilangan titik mengambang, tanggal, dan lainnya tidak didukung. Jika Anda menentukan tipe yang tidak didukung, fitur splitPk diabaikan dan saluran tunggal digunakan untuk sinkronisasi.

  • Jika splitPk tidak ditentukan, termasuk tidak menyediakan splitPk atau membiarkan nilai splitPk kosong, sinkronisasi data menggunakan saluran tunggal untuk menyinkronkan data tabel.

Tidak

N/A

where

Kondisi filter. PostgreSQL Reader menggabungkan SQL berdasarkan column, table, dan kondisi where yang ditentukan, dan mengekstraksi data berdasarkan SQL tersebut. Misalnya, selama pengujian, Anda dapat menggunakan kondisi where untuk menentukan skenario bisnis. Biasanya, data dari hari ini disinkronkan. Anda dapat menentukan kondisi where sebagai id>2 and sex=1:

  • Kondisi where dapat digunakan secara efektif untuk sinkronisasi data inkremental.

  • Jika kondisi where tidak dikonfigurasi atau dibiarkan kosong, sinkronisasi data penuh tabel dilakukan.

Tidak

N/A

querySql (mode lanjutan, tidak tersedia dalam mode wizard)

Dalam beberapa skenario bisnis, konfigurasi where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk mendefinisikan SQL filter kustom. Saat parameter ini dikonfigurasi, sistem sinkronisasi data mengabaikan konfigurasi tabel, kolom, dan splitPk, dan langsung menggunakan konten parameter ini untuk memfilter data. Misalnya, untuk menyinkronkan data setelah JOIN multi-tabel, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, PostgreSQL Reader mengabaikan konfigurasi tabel, kolom, dan where.

Tidak

N/A

fetchSize

Parameter ini menentukan jumlah catatan yang diambil per batch antara plugin dan server database. Nilai ini menentukan jumlah interaksi jaringan antara Data Integration dan server, dan dapat secara signifikan meningkatkan kinerja ekstraksi data.

Catatan

Nilai fetchSize yang terlalu besar (>2048) dapat menyebabkan proses sinkronisasi data kehabisan memori (OOM).

Tidak

512

Demo skrip Writer

Berikut adalah contoh konfigurasi skrip. Untuk informasi lebih lanjut, lihat deskripsi parameter di atas.

{
  "type":"job",
  "version":"2.0",// Nomor versi.
  "steps":[ 
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"postgresql",// Nama plugin.
      "parameter":{
        "datasource":"",// Sumber data.
        "column":[// Kolom.
          "col1",
          "col2"
        ],
        "table":"",// Nama tabel.
        "preSql":[],// Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data.
        "postSql":[],// Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data.
      },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"// Jumlah error.
    },
    "speed":{
      "throttle":true,// Nilai false untuk throttle menunjukkan bahwa pembatasan kecepatan dinonaktifkan dan parameter mbps tidak berlaku. Nilai true menunjukkan bahwa pembatasan kecepatan diaktifkan.
      "concurrent":1, // Konkurensi pekerjaan.
      "mbps":"12"// Laju pembatasan. 1 mbps = 1 MB/s.
    }
  },
  "order":{
    "hops":[
      {
        "from":"Reader",
        "to":"Writer"
      }
    ]
  }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Mode skrip memungkinkan Anda menambahkan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang Anda tambahkan.

Ya

N/A

table

Nama tabel ke mana Anda ingin menyinkronkan data.

Ya

N/A

writeMode

Mode penulisan. Saat ini, mode insert dan copy didukung:

  • insert: Menjalankan pernyataan PostgreSQL insert into...values... untuk menulis data ke PostgreSQL. Jika terjadi konflik primary key atau indeks unik, catatan yang akan disinkronkan menjadi data kotor. Kami merekomendasikan Anda menggunakan mode insert terlebih dahulu.

  • copy: PostgreSQL menyediakan perintah copy untuk menyalin data antara tabel dan file (standard output, standard input). Data Integration mendukung penggunaan copy from untuk memuat data ke tabel. Kami merekomendasikan Anda mencoba mode ini hanya ketika mengalami masalah kinerja.

Tidak

insert

column

Kolom tempat data ditulis di tabel tujuan, dipisahkan dengan koma. Misalnya, "column":["id","name","age"]. Untuk menulis data ke semua kolom secara berurutan, gunakan (*), misalnya, "column":["*"].

Ya

N/A

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data dijalankan. Saat ini, mode wizard hanya memungkinkan satu pernyataan SQL, sedangkan mode skrip mendukung beberapa pernyataan SQL, misalnya, untuk menghapus data lama.

Tidak

N/A

postSql

Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data dijalankan. Saat ini, mode wizard hanya memungkinkan satu pernyataan SQL, sedangkan mode skrip mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan timestamp.

Tidak

N/A

batchSize

Jumlah catatan yang dikirim per batch. Nilai ini dapat secara signifikan mengurangi jumlah interaksi jaringan antara Data Integration dan PostgreSQL, dan meningkatkan throughput keseluruhan. Namun, mengatur nilai ini terlalu besar dapat menyebabkan proses Data Integration kehabisan memori (OOM).

Tidak

1.024

pgType

Konfigurasi konversi untuk tipe khusus PostgreSQL. Tipe yang didukung termasuk bigint[], double[], text[], Jsonb, dan JSON. Berikut adalah contoh konfigurasi.

{
    "job":
    {
        "content":
        [{
            "reader": {...},
            "writer":
            {
                "parameter":
                {
                    "column":
                    [
                        // Daftar field tabel tujuan
                        "bigint_arr",
                        "double_arr",
                        "text_arr",
                        "jsonb_obj",
                        "json_obj"
                    ],
                    "pgType":
                    {
                        // Pengaturan tipe khusus. Kunci adalah nama field tabel tujuan, dan nilai adalah tipe field.
                        "bigint_arr": "bigint[]",
                        "double_arr": "double[]",
                        "text_arr": "text[]",
                        "jsonb_obj": "jsonb",
                        "json_obj": "json"
                    }

                }
            }
        }]
    }
}

Tidak

N/A

Lampiran 2: Tambahkan autentikasi SSL untuk sumber data PostgreSQL

Deskripsi file autentikasi SSL PostgreSQL

Saat membuat atau mengubah koneksi sumber data PostgreSQL di DataWorks, Anda dapat mengonfigurasi autentikasi SSL. Parameter konfigurasi autentikasi SSL dijelaskan di bawah ini.

Database PostgreSQL

Konfigurasi sumber data PostgreSQL DataWorks

Enkripsi link SSL

Enkripsi klien

Konfigurasi ACL

Item konfigurasi

Deskripsi

Diaktifkan

Nonaktif

N/A

File sertifikat Truststore

Opsional. Klien menggunakan sertifikat ini untuk mengotentikasi server.

  • Tidak dikonfigurasi: Koneksi reguler digunakan.

  • Dikonfigurasi: Koneksi terenkripsi SSL digunakan.

Diaktifkan

Konfigurasi ACL diatur ke prefer

  • File sertifikat Keystore

  • File kunci privat

  • Password kunci privat

Baik File sertifikat Keystore maupun File kunci privat bersifat opsional. Ketika Konfigurasi ACL diatur ke prefer, server tidak menerapkan verifikasi sertifikat klien.

  • Jika File kunci privat tidak dienkripsi, koneksi terenkripsi SSL digunakan untuk terhubung ke database, dan file kunci privat diverifikasi.

  • Jika File kunci privat dienkripsi, Anda harus mengonfigurasi Password kunci privat untuk memverifikasi File kunci privat dengan benar dan membangun koneksi.

Konfigurasi ACL diatur ke verify-ca

  • File sertifikat Keystore: Wajib. Ini adalah sertifikat CA klien yang digunakan klien untuk membuktikan identitasnya kepada server.

  • File kunci privat: Wajib. Klien menyimpan file kunci privat ini, yang tidak dibagikan secara publik. Digunakan bersama File sertifikat Keystore yang diunggah ke server untuk otentikasi identitas.

  • Password kunci privat: Opsional. Jika file kunci privat dilindungi password, Anda harus memberikan password kunci privat tersebut. Jika tidak, Anda dapat membiarkannya kosong.

Catatan

  • Ketika konfigurasi ACL diatur ke prefer, konten klien tidak diberlakukan untuk verifikasi.

    • Jika tidak ada file yang dikonfigurasi untuk autentikasi SSL, koneksi reguler digunakan.

    • Jika file autentikasi ditambahkan untuk autentikasi SSL, lihat deskripsi yang sesuai dalam tabel di atas.

  • Saat konfigurasi ACL diatur ke verify-ca, konfigurasikan Keystore certificate file, Private key file, dan Private key password untuk membuat Sumber data.

Memperoleh file autentikasi SSL PostgreSQL

Bagian ini menggunakan instans ApsaraDB RDS for PostgreSQL sebagai contoh untuk menghasilkan sertifikat autentikasi SSL.

  1. Dapatkan file sertifikat Truststore.

    Untuk informasi lebih lanjut tentang memperoleh File sertifikat Truststore, lihat Konfigurasi koneksi terenkripsi SSL.

    1. Buka daftar instans RDS, klik instans RDS di wilayah yang sesuai, lalu klik ID instans target untuk membuka halaman detail instans.

    2. Pilih string koneksi yang ingin Anda lindungi. Prosedur berikut menunjukkan langkah-langkahnya:

    image

    Catatan

    • Jika titik akhir publik diaktifkan, baik titik akhir internal maupun publik ditampilkan. Sertifikat cloud hanya dapat melindungi satu titik akhir. Karena titik akhir internal relatif lebih aman, kami merekomendasikan Anda melindungi titik akhir publik. Untuk informasi lebih lanjut tentang cara melihat titik akhir internal dan publik, lihat Lihat titik akhir internal dan publik.

    • Jika Anda perlu melindungi kedua titik akhir internal dan publik, lihat Konfigurasi sertifikat kustom.

    • Setelah Anda mengonfigurasi sertifikat cloud, Running Status instans berubah menjadi Memodifikasi SSL. Status ini berlangsung sekitar tiga menit. Tunggu hingga status berjalan berubah menjadi Running sebelum melanjutkan.

    c. Klik Unduh Sertifikat CA untuk memperoleh file Sertifikat Truststore.

    image

    Paket sertifikat CA yang diunduh berisi tiga file. Saat mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file dengan ekstensi .pem atau file dengan ekstensi .p7b ke item konfigurasi File sertifikat Truststore.

  2. Dapatkan dan konfigurasikan file sertifikat Keystore, file kunci privat, serta kata sandi kunci privat.

    Prasyarat: Anda telah menyelesaikan mengonfigurasi koneksi terenkripsi SSL atau mengonfigurasi sertifikat kustom, dan Anda memiliki tool OpenSSL.

    Catatan

    Jika Anda menggunakan sistem Linux, OpenSSL sudah terinstal sebelumnya. Jika Anda menggunakan sistem Windows, unduh dan instal paket perangkat lunak OpenSSL.

    Untuk informasi lebih lanjut tentang memperoleh dan mengonfigurasi File sertifikat Keystore, File kunci privat, dan Password kunci privat, lihat Konfigurasi sertifikat klien.

    1. Gunakan tool OpenSSL pada sistem Linux atau instal perangkat lunak OpenSSL pada sistem Windows untuk menghasilkan sertifikat tanda tangan sendiri (ca1.crt) dan kunci privatnya (ca1.key).

      openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"
    2. Hasilkan file permintaan penandatanganan sertifikat klien (client.csr) dan kunci privat sertifikat klien (client.key).

      openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<client_username>"

      Dalam perintah ini, nilai CN setelah parameter -subj harus diatur ke username yang digunakan klien untuk mengakses database.

    3. Hasilkan sertifikat klien (client.crt).

      openssl x509 -req -in client.csr -text -days 365  -CA ca1.crt -CAkey ca1.key -CAcreateserial  -out client.crt
    4. Jika server RDS PostgreSQL Anda memerlukan verifikasi sertifikat CA klien, buka file sertifikat tanda tangan sendiri klien yang dihasilkan ca1.crt, salin konten sertifikatnya, dan tempelkan ke dialog Konten Kunci Publik Sertifikat CA Klien sebagai sertifikat CA klien.image

    5. Setelah mengonfigurasi sertifikat CA klien di sisi RDS, saat mengonfigurasi sumber data PostgreSQL di DataWorks, konversi kunci privat sertifikat klien client.key menjadi file client.pk8, dan unggah file client.pk8 ke item konfigurasi File kunci privat dalam konfigurasi sumber data PostgreSQL DataWorks.

      cp client.key client.pk8
    6. Konfigurasikan password kunci privat.

      openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
      Catatan

      Saat menjalankan perintah untuk mengonfigurasi password kunci privat, Anda harus memasukkan password. Jika Anda menetapkan password, gunakan password yang sama untuk password kunci privat dalam konfigurasi sumber data PostgreSQL DataWorks.

Konfigurasi file autentikasi SSL PostgreSQL

Saat mengunggah file sertifikat yang diperoleh ke item konfigurasi PostgreSQL DataWorks, lakukan operasi berikut:

image

Konfigurasi ACL: Buka daftar instans RDS, klik instans RDS di wilayah yang sesuai, klik ID instans target untuk membuka halaman detail instans, lalu klik Keamanan Data > Konfigurasi ACL untuk memodifikasi pengaturan. Anda dapat memilih metode autentikasi SSL yang berbeda. Untuk informasi lebih lanjut, lihat Konfigurasi ACL.

image

Catatan

  • Jika metode autentikasi ACL diatur ke prefer, server PostgreSQL tidak menerapkan verifikasi sertifikat klien.

  • Jika metode autentikasi ACL diatur ke verify-ca di RDS PostgreSQL, Anda harus mengunggah sertifikat klien yang benar saat mengonfigurasi sumber data PostgreSQL di DataWorks, sehingga server dapat memverifikasi otentikasi klien.