全部产品
Search
文档中心

DataWorks:Sumber data PostgreSQL

更新时间:Nov 10, 2025

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

  • Sumber data PostgreSQL mendukung autentikasi berbasis kata sandi, termasuk metode SCRAM-SHA-256. Jika Anda mengubah kata sandi 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 bidang di PostgreSQL diawali dengan angka, bersifat case-sensitive, atau mencakup 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
    • Baik tanda kutip ganda pembuka maupun penutup harus di-escape dengan backslash (\).

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

    Kode berikut menunjukkan contoh cara melakukan escape 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 sementara 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 bersama 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 ini.

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

  • Operasi TRUNCATE tidak didukung.

  • Replikasi objek besar (Bytea) tidak didukung.

  • Replikasi tampilan, tampilan yang di-materialisasi, dan tabel eksternal tidak didukung.

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 bilangan bulat

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 sebagaimana 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 publikasi dan berlangganan. Dalam model ini, satu atau lebih subscriber berlangganan ke satu atau lebih publikasi pada node publisher. Subscriber menarik data dari publikasi 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 agar 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

-- Kueri max_wal_senders.
show max_wal_senders;

-- Kueri 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, tersedia proses wal_sender yang menganggur. 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 kesalahan.

Setelah tugas sinkronisasi PostgreSQL real-time dimulai, tugas tersebut secara otomatis membuat slot dan publikasi di database. Nama slot menggunakan format di_slot_ + ID Solusi, dan nama publikasi menggunakan format di_pub_ + ID Solusi. Setelah tugas sinkronisasi real-time dihentikan atau dibatalkan publikasinya, Anda harus menghapus slot dan publikasi 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 infotips 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 satu tabel

Panduan konfigurasi tugas baca offline basis data penuh dan sinkronisasi real-time

Untuk informasi selengkapnya, lihat Konfigurasi tugas sinkronisasi real-time untuk basis data penuh.

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 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, PostgreSQL Reader tidak mengambil data yang diperbarui karena fitur snapshot database.

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

    Setelah PostgreSQL Reader melakukan sharding data berdasarkan parameter `splitPk`, ia 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 tunggal yang konsisten.

    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, dan Anda dapat memilih salah satu berdasarkan kebutuhan Anda.

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

    • Nonaktifkan penulis data lain untuk memastikan data 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 secara otomatis mendeteksi dan mengonversi encoding.

    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 berisi karakter acak.

  • 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 bidang `modify` dengan stempel waktu untuk semua perubahan, PostgreSQL Reader dapat menambahkan klausa `WHERE` yang menggunakan stempel waktu sinkronisasi terakhir untuk hanya mengambil data baru atau yang diperbarui.

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

    Jika logika bisnis Anda tidak mencakup bidang untuk membedakan antara data baru dan data yang dimodifikasi, PostgreSQL Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam hal ini, 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 Konfigurasi tugas di 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 Konfigurasi tugas di editor kode.

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"postgresql",// Nama plugin.
            "parameter":{
                "datasource":"",// Sumber data.
                "column":[// Bidang.
                    "col1",
                    "col2"
                ],
                "where":"",// Kondisi filter.
                "splitPk":"",// Bidang 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 kesalahan.
        },
        "speed":{
            "throttle":true, // Jika throttle diatur ke false, parameter mbps tidak berlaku dan pengendalian aliran dinonaktifkan. Jika throttle diatur ke true, pengendalian aliran diaktifkan.
            "concurrent":1, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Laju pengendalian aliran. 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 bidang. Secara default, semua kolom digunakan, misalnya, [ * ].

  • Anda dapat memilih subset kolom untuk disinkronkan.

  • Anda dapat mengatur ulang urutan kolom. Kolom tidak perlu dalam urutan yang sama seperti dalam 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 yang dicadangkan.

    • 1 adalah konstanta bilangan bulat.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa harus diapit dengan 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 di-shard menjadi jumlah shard yang sama dengan 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 kesalahan kehabisan memori (OOM).

Tidak

5

splitPk

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

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

  • Parameter splitPk hanya mendukung data bilangan bulat untuk sharding. Parameter ini tidak mendukung string, bilangan titik mengambang, tanggal, atau tipe lainnya. Jika Anda menentukan tipe yang tidak didukung, fitur splitPk diabaikan, dan satu saluran digunakan untuk sinkronisasi.

  • Jika parameter splitPk tidak ditentukan (yang berarti splitPk tidak diberikan atau nilai splitPk kosong), sinkronisasi data untuk tabel tersebut 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 untuk 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, 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 tabel, kolom, 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 tabel, kolom, 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 kesalahan 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":[// Bidang.
          "col1",
          "col2"
        ],
        "table":"",// Nama tabel.
        "preSql":[],// Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi data dijalankan.
        "postSql":[],// Pernyataan SQL yang dijalankan setelah tugas sinkronisasi data dijalankan.
      },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
    "errorLimit":{
      "record":"0"// Jumlah catatan kesalahan.
    },
    "speed":{
      "throttle":true,// Jika throttle diatur ke false, parameter mbps tidak berlaku dan pengendalian aliran dinonaktifkan. Jika throttle diatur ke true, pengendalian aliran diaktifkan.
      "concurrent":1, // Jumlah pekerjaan konkuren.
      "mbps":"12"// Laju pengendalian aliran. 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 utama 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

Bidang di tabel tujuan tempat Anda ingin menulis data. Pisahkan bidang 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 dijalankan. 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 dijalankan. Antarmuka tanpa kode hanya memungkinkan Anda menjalankan satu pernyataan SQL. Editor kode mendukung beberapa pernyataan SQL, misalnya, untuk menambahkan stempel waktu.

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 kesalahan 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 bidang di tabel tujuan.
                        "bigint_arr",
                        "double_arr",
                        "text_arr",
                        "jsonb_obj",
                        "json_obj"
                    ],
                    "pgType":
                    {
                        // Pengaturan tipe khusus. Kunci adalah nama bidang di tabel tujuan, dan nilai adalah tipe bidang.
                        "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

Berkas 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 yang terkait dengan autentikasi SSL.

Database PostgreSQL

Konfigurasi sumber data PostgreSQL DataWorks

Enkripsi tautan SSL

Enkripsi berbasis klien

Configure ACL

Item konfigurasi

Deskripsi

Diaktifkan

Nonaktif

Tidak berlaku

Truststore Certificate File

Opsional. Klien menggunakan sertifikat ini untuk mengotentikasi server.

  • Tidak dikonfigurasi: Tautan reguler digunakan.

  • Dikonfigurasi: Tautan terenkripsi SSL digunakan.

Diaktifkan

Atur Configure ACL ke prefer

  • Keystore Certificate File

  • Private Key File

  • Private Key Password

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

  • Jika Private Key File tidak dienkripsi, tautan terenkripsi SSL digunakan untuk menghubungkan ke database, dan file kunci privat 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 kata sandi, Anda harus memasukkan kata sandi kunci privat. 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 Certificate File, Private Key File, dan Private Key Password untuk membuat sumber data.

Memperoleh berkas autentikasi SSL PostgreSQL

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

  1. Peroleh Truststore Certificate File.

    Untuk informasi selengkapnya tentang cara memperoleh Truststore Certificate 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 akan dilindungi, seperti yang ditunjukkan pada gambar berikut:

    image

    Catatan
    • Jika titik akhir publik diaktifkan, sistem menampilkan titik akhir internal dan 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 memperoleh file Truststore Certificate.

    image

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

  2. Peroleh dan konfigurasikan Keystore Certificate 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 alat OpenSSL.

    Catatan

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

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

    1. Gunakan alat OpenSSL untuk menghasilkan sertifikat tanda tangan sendiri (`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=<Nama pengguna klien>"

      Dalam perintah ini, atur nilai Common Name (CN) setelah parameter -subj ke nama pengguna 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 tanda tangan sendiri yang dihasilkan `ca1.crt`. Salin konten sertifikat dan tempelkan ke kotak dialog Enter The Public Key Of The Client Certificate Authority.image

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

      cp client.key client.pk8
    6. Konfigurasikan kata sandi kunci privat.

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

      Saat Anda menjalankan perintah untuk mengonfigurasi kata sandi kunci privat, Anda akan diminta memasukkan kata sandi. Jika Anda menetapkan kata sandi, Anda harus menggunakan kata sandi yang sama untuk kolom Kata Sandi Kunci Privat di konfigurasi sumber data PostgreSQL DataWorks.

Konfigurasi berkas 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 untuk 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.