All Products
Search
Document Center

DataWorks:PostgreSQL

Last Updated:Mar 20, 2026

Sumber data PostgreSQL menyediakan saluran dua arah untuk membaca dan menulis data ke PostgreSQL. Anda dapat mengonfigurasi tugas sinkronisasi data menggunakan Antarmuka tanpa kode atau editor kode. Topik ini menjelaskan dukungan DataWorks terhadap sinkronisasi data PostgreSQL.

Versi yang didukung

Anda dapat mengonfigurasi sumber data untuk versi PostgreSQL 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.

  • Jika nama tabel atau field di PostgreSQL diawali dengan angka, bersifat case-sensitive, atau mengandung tanda hubung (-), Anda harus membungkus nama tersebut dalam 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 (\). Sebagai contoh, jika sebuah tabel bernama 123Test, maka nama yang telah di-escape adalah \"123Test\".

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

    • Antarmuka tanpa kode tidak mendukung escaping. Anda harus beralih ke editor kode untuk melakukan escaping karakter.

    Kode berikut menunjukkan contoh cara melakukan escaping karakter di editor kode.

    "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 menyediakan dukungan khusus untuk ADD COLUMN:

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

      Penting

      Jika Anda menggunakan ADD COLUMN bersamaan dengan operasi lain seperti DROP COLUMN or RENAME COLUMN, yang merupakan perilaku ALTER COLUMN, tugas sinkronisasi data akan gagal.

    • Batasan: Data Integration tidak dapat mendeteksi operasi DDL selain ADD COLUMN.

  • Operasi ALTER TABLE dan CREATE TABLE tidak didukung.

  • Replikasi tabel TEMPORARY, UNLOGGED, dan Hyper tidak didukung. PostgreSQL tidak menyediakan mekanisme untuk mengurai log dan berlangganan jenis tabel tersebut.

  • 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.

  • Saat menggunakan PostgreSQL sebagai sumber untuk sinkronisasi real-time tingkat tabel tunggal atau seluruh database, Anda hanya dapat menyinkronkan tabel yang dimiliki oleh pengguna database yang dikonfigurasi.

Tipe data yang didukung

Sebagian besar tipe data PostgreSQL didukung. Namun, beberapa tipe tidak didukung untuk operasi baca dan tulis offline. Anda harus memverifikasi bahwa tipe data Anda didukung.

Tabel berikut mencantumkan pemetaan tipe data PostgreSQL.

Kategori

Tipe data PostgreSQL

Tipe integer

BIGINT, BIGSERIAL, INTEGER, SMALLINT, dan SERIAL

Tipe bilangan titik mengambang

DOUBLE PRECISION, MONEY, NUMERIC, dan REAL

Tipe string

VARCHAR, CHAR, TEXT, BIT, dan INET

Tipe tanggal dan waktu

DATE, TIME, dan TIMESTAMP

Tipe Boolean

BOOL

Tipe biner

BYTEA

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

  • Untuk PostgreSQL Reader, Anda harus mengonversi tipe data MONEY, INET, dan BIT menggunakan sintaks seperti a_inet::varchar.

Persiapan

Sebelum menyinkronkan data di DataWorks, Anda harus menyiapkan lingkungan PostgreSQL seperti yang dijelaskan dalam bagian ini. Persiapan ini memastikan bahwa tugas sinkronisasi data PostgreSQL dapat dikonfigurasi dan dijalankan sesuai harapan. Bagian-bagian berikut menjelaskan persiapan yang diperlukan.

Persiapan 1: Buat akun dan konfigurasikan izin

Buat akun login database untuk operasi selanjutnya. Akun ini harus memiliki izin REPLICATION dan LOGIN.

Catatan

Sinkronisasi real-time hanya mendukung replikasi logis. Replikasi logis menggunakan model publish and subscribe. Dalam model ini, 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 di database publisher dan menyalinnya ke subscriber. Setelah snapshot disalin, perubahan di publisher dikirim ke subscriber secara real-time.

  1. Buat akun.

    Untuk informasi selengkapnya, lihat Buat akun dan database.

  2. Konfigurasikan izin.

    Periksa apakah akun memiliki izin replication.

    select userepl from pg_user where usename='xxx'

    Jika perintah mengembalikan True, izin telah diberikan. Jika mengembalikan False, izin belum diberikan. Untuk memberikan izin tersebut, jalankan pernyataan berikut:

    ALTER USER <user> REPLICATION;

Persiapan 2: Periksa dukungan database sekunder

SELECT pg_is_in_recovery()

Hanya database utama yang didukung. Perintah harus mengembalikan False. Jika mengembalikan True, database tersebut adalah database sekunder. Sinkronisasi real-time tidak mendukung database sekunder. Anda harus mengubah konfigurasi sumber data untuk menggunakan database utama. Untuk informasi selengkapnya, lihat Konfigurasi sumber data PostgreSQL.

Persiapan 3: Periksa apakah wal_level diatur ke logical

show wal_level

Parameter wal_level menentukan tingkat wal_log. Perintah harus mengembalikan 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 proses pg_stat_replication.
select count(*) from pg_stat_replication

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

Untuk setiap tabel yang ingin Anda sinkronkan, Anda harus menjalankan pernyataan ALTER TABLE [tableName] REPLICA IDENTITY FULL untuk memberikan izin yang diperlukan. Jika tidak, tugas sinkronisasi real-time akan melaporkan error.

Setelah tugas sinkronisasi real-time PostgreSQL dimulai, sistem secara otomatis membuat slot dan publication di database. Nama slot mengikuti format di_slot_ + ID Solusi, dan nama publication mengikuti format di_pub_ + ID Solusi. Setelah tugas sinkronisasi real-time dihentikan atau dibatalkan publikasinya, Anda harus menghapus slot dan publication tersebut secara manual. Jika tidak, Write-Ahead Logging (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 selengkapnya, lihat Lampiran 2: Tambahkan autentikasi SSL ke sumber data PostgreSQL.

Kembangkan tugas sinkronisasi data: Panduan sinkronisasi PostgreSQL

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

Panduan konfigurasi tugas sinkronisasi offline untuk tabel tunggal

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

Untuk informasi selengkapnya, lihat Konfigurasi tugas sinkronisasi real-time untuk seluruh database.

FAQ

  • Pemulihan data dalam pengaturan sinkronisasi aktif/standby.

    Masalah ini dapat terjadi ketika PostgreSQL dikonfigurasi untuk pemulihan bencana aktif/standby. Dalam konfigurasi ini, database sekunder terus-menerus memulihkan data dari database utama. Terdapat jeda waktu dalam sinkronisasi data antara database utama dan sekunder. Dalam beberapa kasus, seperti latensi jaringan, data di database sekunder dapat berbeda secara signifikan dari data di database utama. Akibatnya, data yang disinkronkan dari database sekunder bukanlah citra lengkap dan mutakhir dari database utama.

  • Batasan konsistensi.

    PostgreSQL adalah sistem manajemen database relasional (RDBMS) yang menyediakan antarmuka kueri data dengan konsistensi kuat. Misalnya, jika proses lain menulis data ke database selama tugas sinkronisasi berlangsung, PostgreSQL Reader tidak mengambil data yang diperbarui karena fitur snapshot database.

    Penjelasan di atas berlaku untuk konsistensi data PostgreSQL Reader dalam model single-threaded. PostgreSQL Reader juga dapat menggunakan ekstraksi data konkuren berdasarkan konfigurasi Anda. Dalam kasus ini, konsistensi data tidak dapat dijamin secara ketat.

    Setelah PostgreSQL Reader melakukan sharding data berdasarkan parameter splitPk, sistem memulai beberapa tugas konkuren untuk menyinkronkan data. Tugas-tugas konkuren ini tidak termasuk dalam transaksi baca yang sama dan memiliki interval waktu di antaranya. Oleh karena itu, data yang disinkronkan bukan berasal dari snapshot yang konsisten secara tunggal.

    Saat ini belum tersedia solusi teknis untuk snapshot konsisten lintas beberapa thread. Anda hanya dapat mengatasi masalah ini dari perspektif rekayasa. Solusi berikut melibatkan pertukaran kompromi, dan Anda dapat memilih salah satunya berdasarkan kebutuhan Anda.

    • Gunakan sinkronisasi single-threaded tanpa sharding data. Metode ini lebih lambat tetapi menjamin konsistensi.

    • Nonaktifkan penulis data lain untuk memastikan data bersifat statis. Misalnya, Anda dapat mengunci tabel atau menonaktifkan sinkronisasi database sekunder. Metode ini dapat memengaruhi layanan online.

  • Masalah encoding database.

    Server PostgreSQL hanya mendukung encoding EUC_CN dan UTF-8 untuk Bahasa Tionghoa Sederhana. PostgreSQL Reader menggunakan Java Database Connectivity (JDBC) untuk ekstraksi data. JDBC kompatibel dengan berbagai encoding dan melakukan konversi encoding di lapisan dasar. Oleh karena itu, Anda tidak perlu menentukan encoding untuk PostgreSQL Reader karena sistem secara otomatis mendeteksi dan mengonversi encoding tersebut.

    Jika encoding penulisan dasar PostgreSQL tidak konsisten dengan encoding yang dikonfigurasi, PostgreSQL Reader tidak dapat mengidentifikasi masalah ini atau memberikan solusi. Akibatnya, data yang diekspor mungkin mengandung karakter acak (garbled characters).

  • Metode untuk sinkronisasi data inkremental.

    PostgreSQL Reader menggunakan pernyataan SELECT JDBC untuk mengekstraksi data. Hal ini memungkinkan Anda menggunakan SELECT…WHERE… untuk ekstraksi data inkremental sebagai berikut:

    • Jika aplikasi online mengisi field modify dengan timestamp untuk semua perubahan, PostgreSQL Reader dapat menambahkan klausa WHERE yang menggunakan timestamp sinkronisasi terakhir untuk mengambil hanya data baru atau yang diperbarui.

    • Untuk data stream baru, PostgreSQL Reader dapat menambahkan klausa WHERE yang menggunakan ID auto-increment maksimum dari sinkronisasi sebelumnya.

    Jika logika bisnis Anda tidak menyertakan field untuk membedakan antara data baru dan data yang dimodifikasi, PostgreSQL Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam hal ini, sistem hanya dapat melakukan sinkronisasi data penuh.

  • Keamanan SQL.

    PostgreSQL Reader menyediakan parameter querySql, yang memungkinkan Anda menyesuaikan pernyataan SELECT untuk ekstraksi data. PostgreSQL Reader tidak melakukan pemeriksaan keamanan apa pun pada pernyataan querySql.

Lampiran 1: Contoh 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 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

Untuk mengonfigurasi pekerjaan yang menyinkronkan dan mengekstraksi data dari database PostgreSQL, lihat petunjuk di Gunakan editor kode.

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"postgresql",// Nama plugin.
            "parameter":{
                "datasource":"",// Sumber data.
                "column":[// Field.
                    "col1",
                    "col2"
                ],
                "where":"",// Kondisi filter.
                "splitPk":"",// Field yang digunakan untuk sharding data. Sinkronisasi data memulai tugas konkuren untuk menyinkronkan data.
                "table":""// Nama tabel.
            },
            "name":"Reader",
            "category":"reader"
        },
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah catatan error.
        },
        "speed":{
            "throttle":true, // Jika throttle diatur ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Laju pembatasan. 1 mbps setara dengan 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

Nama tabel yang akan disinkronkan.

Ya

Tidak ada

column

Kumpulan kolom yang akan disinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan informasi field. Secara default, semua kolom digunakan, misalnya, [ * ].

  • Anda dapat memilih subset kolom untuk disinkronkan.

  • Anda dapat mengubah urutan kolom. Kolom tidak perlu dalam urutan yang sama seperti pada skema tabel.

  • Anda dapat mengonfigurasi konstanta. Anda harus mengikuti sintaks 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 juga merupakan kata kunci tercadang (reserved word).

    • 1 adalah konstanta integer.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa harus diapit tanda kutip tunggal.

    • 'null' adalah string.

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

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai Boolean.

  • Anda harus secara eksplisit menentukan kumpulan kolom untuk parameter column. Parameter ini tidak boleh kosong.

Ya

Tidak ada

splitFactor

Menentukan jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data akan di-shard menjadi jumlah shard sebesar Jumlah thread konkuren × splitFactor. Misalnya, jika jumlah thread konkuren adalah 5 dan splitFactor adalah 5, lima thread konkuren digunakan untuk melakukan sharding, dan data didistribusikan ke 25 (5 × 5) shard.

Catatan

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

Tidak

5

splitPk

Saat PostgreSQL Reader mengekstraksi data, menentukan parameter splitPk menunjukkan bahwa Anda ingin melakukan sharding data berdasarkan field yang diwakili oleh splitPk. Sinkronisasi data kemudian memulai tugas konkuren untuk meningkatkan efisiensi sinkronisasi data:

  • Kami merekomendasikan agar Anda mengatur splitPk ke kunci primer tabel. Kunci primer biasanya terdistribusi merata, yang membantu mencegah hot spot data di shard.

  • Parameter splitPk hanya mendukung data integer untuk sharding. Parameter ini tidak mendukung string, bilangan titik mengambang, tanggal, atau tipe lainnya. Jika Anda menentukan tipe yang tidak didukung, fitur splitPk akan diabaikan, dan sinkronisasi dilakukan menggunakan satu channel.

  • Jika parameter splitPk tidak ditentukan (yang berarti parameter splitPk tidak disediakan atau nilai parameter splitPk kosong), sinkronisasi data untuk tabel dilakukan menggunakan saluran tunggal.

Tidak

Tidak ada

where

Kondisi filter. PostgreSQL Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan, lalu mengekstraksi data berdasarkan pernyataan SQL tersebut. Misalnya, selama pengujian, Anda dapat menggunakan klausa where untuk menentukan skenario bisnis. Biasanya, Anda mungkin menyinkronkan data hari ini dengan mengatur klausa where menjadi id>2 and sex=1:

  • Klausa where dapat digunakan untuk sinkronisasi bisnis inkremental yang efektif.

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

Tidak

Tidak ada

querySql (Mode lanjutan. Parameter ini tidak tersedia di antarmuka tanpa kode.)

Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menyesuaikan SQL filter. Saat parameter ini dikonfigurasi, sistem sinkronisasi data mengabaikan parameter tables, columns, dan splitPk serta 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 parameter table, column, dan where.

Tidak

Tidak ada

fetchSize

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

Catatan

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

Tidak

512

Contoh skrip Writer

Kode berikut memberikan contoh konfigurasi skrip. Untuk informasi selengkapnya, lihat deskripsi parameter berikut.

{
  "type":"job",
  "version":"2.0",// Nomor versi.
  "steps":[ 
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"postgresql",// Nama plugin.
      "parameter":{
        "datasource":"",// Sumber data.
        "column":[// Field.
          "col1",
          "col2"
        ],
        "table":"",// Nama tabel.
        "preSql":[],// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data berjalan.
        "postSql":[],// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data berjalan.
      },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"// Jumlah catatan error.
    },
    "speed":{
      "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
      "concurrent":1, // Jumlah pekerjaan konkuren.
      "mbps":"12"// Laju pembatasan. 1 mbps setara dengan 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

Nama tabel yang akan disinkronkan.

Ya

Tidak ada

writeMode

Mode impor. Mode insert dan copy didukung:

  • insert: Menjalankan pernyataan PostgreSQL insert into...values... untuk menulis data ke PostgreSQL. Jika terjadi konflik kunci primer atau indeks unik, baris data gagal ditulis ke PostgreSQL, dan catatan saat ini menjadi data kotor. Kami merekomendasikan agar Anda memprioritaskan mode insert.

  • 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 dalam tabel. Kami merekomendasikan agar Anda mencoba mode ini jika mengalami masalah kinerja.

Tidak

insert

column

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

Ya

Tidak ada

preSql

Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data berjalan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menghapus data lama.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data berjalan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan timestamp.

Tidak

Tidak ada

batchSize

Jumlah catatan yang dikirimkan dalam satu batch. Nilai yang lebih besar secara signifikan dapat mengurangi interaksi jaringan antara Data Integration dan PostgreSQL serta meningkatkan throughput keseluruhan. Namun, mengatur nilai ini terlalu tinggi dapat menyebabkan error OOM dalam proses Data Integration.

Tidak

1.024

pgType

Konfigurasi untuk mengonversi tipe khusus PostgreSQL. Tipe bigint[], double[], text[], Jsonb, dan JSON didukung. Kode berikut menunjukkan contoh konfigurasi.

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

                }
            }
        }]
    }
}

Tidak

Tidak ada

Lampiran 2: Tambahkan autentikasi SSL ke sumber data PostgreSQL

File autentikasi SSL PostgreSQL

Saat Anda membuat atau memodifikasi koneksi untuk sumber data PostgreSQL di DataWorks, Anda dapat mengonfigurasi autentikasi SSL. Tabel berikut menjelaskan item konfigurasi terkait autentikasi SSL.

Database PostgreSQL

Konfigurasi sumber data PostgreSQL di DataWorks

Enkripsi tautan SSL

Enkripsi berbasis klien

Configure ACL

Item konfigurasi

Deskripsi

Diaktifkan

Nonaktif

Tidak berlaku

Truststore File

Opsional. Klien menggunakan sertifikat ini untuk mengotentikasi server.

  • Tidak dikonfigurasi: Menggunakan link reguler.

  • Dikonfigurasi: Menggunakan link terenkripsi SSL.

Diaktifkan

Atur Configure ACL ke prefer

  • Keystore File

  • Private Key File

  • Private Key Password

File Keystore Certificate File dan Private Key File bersifat opsional. Mengatur Configure ACL ke prefer berarti server tidak mewajibkan verifikasi klien.

  • Jika Private Key File tidak dienkripsi, link terenkripsi SSL digunakan untuk menghubungkan ke database, dan file private key diverifikasi.

  • Jika Private Key File dienkripsi, Anda harus mengonfigurasi Private Key Password untuk berhasil memverifikasi Private Key File dan membuat koneksi.

Atur Configure ACL ke verify-ca

  • Keystore Certificate File: Wajib. Ini adalah Client CA Certificate. Klien memerlukan sertifikat ini untuk membuktikan identitasnya kepada server.

  • Private Key File: Wajib. Klien menyimpan file kunci privat ini, yang tidak dipublikasikan. Digunakan untuk otentikasi identitas bersama dengan Keystore Certificate File yang diunggah ke server.

  • Private Key Password: Opsional. Jika file kunci privat dilindungi password, Anda harus memasukkan password kunci privat tersebut. Jika tidak, Anda dapat mengosongkannya.

Catatan
  • Jika konfigurasi Access Control List (ACL) diatur ke prefer, konten klien tidak diverifikasi secara paksa.

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

    • Jika Anda menambahkan file autentikasi untuk SSL, lihat deskripsi yang sesuai dalam tabel.

  • Jika konfigurasi ACL diatur ke verify-ca, Anda harus mengonfigurasi Keystore File, Private Key File, dan Private Key Password untuk membuat sumber data.

Dapatkan file autentikasi SSL PostgreSQL

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

  1. Dapatkan Truststore File.

    Untuk informasi selengkapnya tentang cara mendapatkan Truststore File, lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL dengan cepat.

    1. Buka halaman Instans RDS, temukan instans RDS di wilayah target, lalu klik ID instans untuk membuka halaman detail instans.

    2. Pilih string koneksi yang ingin dilindungi, seperti yang ditunjukkan pada gambar berikut:

    image

    Catatan
    • Jika titik akhir publik diaktifkan, sistem menampilkan baik titik akhir internal maupun titik akhir publik. Sertifikat cloud hanya dapat melindungi satu titik akhir. Kami merekomendasikan agar Anda melindungi titik akhir publik karena terpapar ke internet, sedangkan titik akhir internal lebih aman di dalam VPC. Untuk informasi selengkapnya tentang cara melihat titik akhir internal dan publik, lihat Lihat titik akhir internal dan publik.

    • Untuk melindungi kedua titik akhir internal dan publik, lihat Gunakan sertifikat kustom untuk mengaktifkan enkripsi SSL.

    • Setelah Anda mengonfigurasi sertifikat cloud, Running Status instans berubah menjadi Modifying SSL. Proses ini memakan waktu sekitar tiga menit. Tunggu hingga status berubah menjadi Running sebelum melanjutkan.

    Klik Download CA Certificate untuk mendapatkan Truststore File.

    image

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

  2. Dapatkan dan konfigurasikan Keystore File, Private Key File, dan Private Key Password.

    Prasyarat: Anda telah menyelesaikan langkah-langkah di Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL dengan cepat atau Gunakan sertifikat kustom untuk mengaktifkan enkripsi SSL, dan Anda telah menginstal tool OpenSSL.

    Catatan

    Sistem Linux secara default menyertakan tool OpenSSL. Jika Anda menggunakan sistem Windows, Anda harus mendapatkan dan menginstal paket OpenSSL.

    Untuk informasi selengkapnya tentang cara mendapatkan dan mengonfigurasi Keystore File, Private Key File, dan Private Key Password, lihat Konfigurasi sertifikat CA klien.

    1. Gunakan tool OpenSSL untuk menghasilkan sertifikat self-signed (ca1.crt) dan kunci privat (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 (CSR) klien (client.csr) dan kunci privat klien (client.key).

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

      Dalam perintah ini, atur nilai Common Name (CN) setelah parameter -subj 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 ApsaraDB RDS for PostgreSQL Anda perlu memverifikasi sertifikat CA klien, buka file sertifikat self-signed yang dihasilkan ca1.crt. Salin konten sertifikat tersebut dan tempelkan ke dalam kotak dialog Enter Public Key from Client Certificate Authority.image

    5. Setelah Anda mengonfigurasi sertifikat CA klien pada instans RDS, Anda harus mengonversi file kunci privat klien client.key ke format PKCS#8 (client.pk8). Saat mengonfigurasi sumber data PostgreSQL di DataWorks, unggah file client.pk8 ke field Private Key File.

      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 akan diminta memasukkan password. Jika Anda menetapkan password, Anda harus menggunakan password yang sama untuk field Private Key Password dalam konfigurasi sumber data PostgreSQL di DataWorks.

Konfigurasi file autentikasi SSL PostgreSQL

Saat Anda mengunggah file sertifikat ke konfigurasi sumber data PostgreSQL di DataWorks, ikuti langkah-langkah berikut:

image

Configure ACL: Buka halaman Instans RDS, temukan instans RDS di wilayah target, lalu klik ID instans untuk membuka halaman detail instans. Klik Data Security > Configure ACL untuk memodifikasi pengaturan. Anda dapat memilih dari berbagai metode autentikasi SSL. Untuk informasi selengkapnya, lihat Paksa klien menggunakan koneksi SSL.

image

Catatan
  • Jika metode autentikasi ACL diatur ke prefer, server PostgreSQL tidak memverifikasi sertifikat klien secara paksa.

  • Jika metode autentikasi ACL diatur ke verify-ca di ApsaraDB RDS for PostgreSQL, Anda harus mengunggah sertifikat klien yang benar saat mengonfigurasi sumber data PostgreSQL di DataWorks. Konfigurasi ini memastikan bahwa server dapat memverifikasi keaslian klien.