Pengantar transfer data PostgreSQL
Anda dapat memuat data dari PostgreSQL ke BigQuery menggunakan konektor BigQuery Data Transfer Service untuk PostgreSQL. Konektor ini mendukung instance PostgreSQL yang dihosting di lingkungan lokal, Cloud SQL, dan penyedia cloud publik lainnya seperti Amazon Web Services (AWS) dan Microsoft Azure. Dokumen ini memberikan ringkasan opsi penyerapan data untuk transfer PostgreSQL Anda dan informasi tentang pemetaan jenis data dan harga.
Untuk mempelajari cara menjadwalkan transfer PostgreSQL, lihat Memuat data PostgreSQL ke BigQuery.
Opsi penyerapan data
Bagian berikut memberikan informasi tentang opsi penyerapan data saat Anda menyiapkan transfer data PostgreSQL.
Konfigurasi TLS
Konektor PostgreSQL mendukung konfigurasi keamanan tingkat transportasi (TLS) untuk mengenkripsi transfer data Anda ke BigQuery. Konektor PostgreSQL mendukung konfigurasi TLS berikut:
Mode Enkripsi data, dan verifikasi CA serta nama host. Mode ini melakukan validasi penuh server menggunakan TLS melalui protokol TCPS. Fitur ini mengenkripsi semua data dalam pengiriman dan memverifikasi bahwa sertifikat server database ditandatangani oleh certificate authority (CA) tepercaya. Mode ini juga memeriksa apakah nama host yang Anda hubungkan sama persis dengan Nama Umum (CN) atau Nama Alternatif Subjek (SAN) pada sertifikat server. Mode ini mencegah penyerang menggunakan sertifikat yang valid untuk domain lain guna meniru server database Anda.
Jika nama host Anda tidak cocok dengan CN atau SAN sertifikat, koneksi akan gagal. Anda harus mengonfigurasi resolusi DNS agar cocok dengan sertifikat atau menggunakan mode keamanan yang berbeda. Gunakan mode ini untuk opsi paling aman guna mencegah serangan person-in-the-middle (PITM).
Mode Enkripsi data, dan verifikasi CA saja. Mode ini mengenkripsi semua data menggunakan TLS melalui protokol TCPS dan memverifikasi bahwa sertifikat server ditandatangani oleh CA yang dipercayai klien. Namun, mode ini tidak memverifikasi nama host server. Mode ini berhasil terhubung selama sertifikat valid dan diterbitkan oleh CA tepercaya, terlepas dari apakah nama host dalam sertifikat cocok dengan nama host yang Anda hubungkan.
Gunakan mode ini jika Anda ingin memastikan bahwa Anda terhubung ke server yang sertifikatnya ditandatangani oleh CA tepercaya, tetapi nama host tidak dapat diverifikasi atau Anda tidak memiliki kontrol atas konfigurasi nama host.
Mode Khusus enkripsi. Mode ini mengenkripsi semua data yang ditransfer antara klien dan server. Tidak melakukan validasi sertifikat atau nama host apa pun.
Mode ini memberikan tingkat keamanan tertentu dengan melindungi data dalam pengiriman, tetapi dapat rentan terhadap serangan PITM.
Gunakan mode ini jika Anda perlu memastikan semua data dienkripsi, tetapi tidak dapat atau tidak ingin memverifikasi identitas server. Sebaiknya gunakan mode ini saat bekerja dengan VPC pribadi.
Mode Tidak ada enkripsi atau verifikasi. Mode ini tidak mengenkripsi data apa pun dan tidak melakukan verifikasi sertifikat atau hostname. Semua data dikirim sebagai teks biasa.
Sebaiknya jangan gunakan mode ini di lingkungan tempat data sensitif ditangani. Sebaiknya gunakan mode ini hanya untuk tujuan pengujian di jaringan terisolasi yang tidak mengkhawatirkan keamanan.
Sertifikat Server Tepercaya (PEM)
Jika Anda menggunakan mode Enkripsi data, dan verifikasi CA serta nama host atau mode Enkripsi data, dan verifikasi CA, Anda juga dapat memberikan satu atau beberapa sertifikat yang dienkode PEM. Sertifikat ini diperlukan dalam beberapa skenario saat BigQuery Data Transfer Service perlu memverifikasi identitas server database Anda selama koneksi TLS:
- Jika Anda menggunakan sertifikat yang ditandatangani oleh CA pribadi dalam organisasi Anda atau sertifikat yang ditandatangani sendiri, Anda harus memberikan rantai sertifikat lengkap atau sertifikat tunggal yang ditandatangani sendiri. Hal ini diperlukan untuk sertifikat yang dikeluarkan oleh CA internal layanan penyedia cloud terkelola, seperti Amazon Relational Database Service (RDS).
- Jika sertifikat server database Anda ditandatangani oleh CA publik (misalnya, Let's Encrypt, DigiCert, atau GlobalSign), Anda tidak perlu memberikan sertifikat. Sertifikat root untuk CA publik ini telah diinstal sebelumnya dan dipercaya oleh BigQuery Data Transfer Service.
Anda dapat menentukan sertifikat berenkode PEM di kolom Sertifikat PEM Tepercaya dalam konfigurasi transfer, dengan persyaratan berikut:
- Sertifikat harus berupa rantai sertifikat berenkode PEM yang valid.
- Sertifikat harus benar sepenuhnya. Sertifikat yang tidak ada dalam rantai atau konten yang salah menyebabkan koneksi TLS gagal.
- Untuk satu sertifikat, Anda dapat memberikan satu sertifikat yang ditandatangani sendiri dari server database.
- Untuk rantai sertifikat lengkap yang diterbitkan oleh CA pribadi, Anda harus memberikan rantai kepercayaan lengkap. Hal ini mencakup sertifikat dari server database dan sertifikat CA perantara dan root.
Transfer penuh atau inkremental
Anda dapat menentukan cara data dimuat ke BigQuery dengan memilih preferensi tulis Penuh atau Inkremental dalam konfigurasi transfer saat Anda menyiapkan transfer PostgreSQL. Transfer inkremental didukung di Pratinjau.
Anda dapat mengonfigurasi transfer data penuh untuk mentransfer semua data dari kumpulan data PostgreSQL Anda dengan setiap transfer data.Atau, Anda dapat mengonfigurasi transfer data inkremental ([Pratinjau](https://cloud.google.com/products#product-launch-stages)) untuk hanya mentransfer data yang diubah sejak transfer data terakhir, bukan memuat seluruh set data dengan setiap transfer data. Jika memilih Bertahap untuk transfer data, Anda harus menentukan mode penulisan Tambahkan atau Upsert untuk menentukan cara data ditulis ke BigQuery selama transfer data bertahap. Bagian berikut menjelaskan mode penulisan yang tersedia.
Mode tulis tambahan
Mode penulisan penambahan hanya menyisipkan baris baru ke tabel tujuan Anda. Opsi ini menambahkan data yang ditransfer secara ketat tanpa memeriksa catatan yang ada, sehingga mode ini berpotensi menyebabkan duplikasi data dalam tabel tujuan.
Saat memilih mode penambahan, Anda harus memilih kolom watermark. Kolom tanda air diperlukan agar konektor PostgreSQL dapat melacak perubahan dalam tabel sumber.
Untuk transfer PostgreSQL, sebaiknya pilih kolom yang hanya diperbarui saat data dibuat, dan tidak akan berubah dengan pembaruan berikutnya. Misalnya, kolomCREATED_AT.
Mode penulisan upsert
Mode penulisan upsert memperbarui baris atau menyisipkan baris baru di tabel tujuan dengan memeriksa kunci utama. Anda dapat menentukan kunci utama agar konektor PostgreSQL dapat menentukan perubahan yang diperlukan untuk menjaga tabel tujuan tetap terbaru dengan tabel sumber. Jika kunci primer yang ditentukan ada di tabel BigQuery tujuan selama transfer data, konektor PostgreSQL akan memperbarui baris tersebut dengan data baru dari tabel sumber. Jika kunci primer tidak ada selama transfer data, konektor PostgreSQL akan menyisipkan baris baru.
Saat memilih mode upsert, Anda harus memilih kolom watermark dan kunci utama:
- Kolom tanda air diperlukan agar konektor PostgreSQL dapat melacak perubahan pada tabel sumber.
- Pilih kolom tanda air yang diperbarui setiap kali baris diubah. Sebaiknya gunakan kolom yang mirip dengan kolom
UPDATED_ATatauLAST_MODIFIED.
- Pilih kolom tanda air yang diperbarui setiap kali baris diubah. Sebaiknya gunakan kolom yang mirip dengan kolom
Kunci utama dapat berupa satu atau beberapa kolom di tabel Anda yang diperlukan agar konektor PostgreSQL dapat menentukan apakah perlu menyisipkan atau memperbarui baris.
Pilih kolom yang berisi nilai non-null yang unik di semua baris tabel. Sebaiknya gunakan kolom yang menyertakan ID yang dibuat sistem, kode referensi unik (misalnya, ID yang bertambah otomatis), atau ID urutan berbasis waktu yang tidak dapat diubah.
Untuk mencegah potensi hilangnya data atau kerusakan data, kolom kunci utama yang Anda pilih harus memiliki nilai unik. Jika Anda meragukan keunikan kolom kunci utama yang Anda pilih, sebaiknya gunakan mode penulisan penambahan.
Perilaku penyerapan inkremental
Saat Anda membuat perubahan pada skema tabel di sumber data, transfer data inkremental dari tabel tersebut akan tercermin di BigQuery dengan cara berikut:
| Perubahan pada sumber data | Perilaku penyerapan inkremental |
|---|---|
| Menambahkan kolom baru | Kolom baru ditambahkan ke tabel BigQuery tujuan. Semua data sebelumnya untuk kolom ini akan memiliki nilai null. |
| Menghapus kolom | Kolom yang dihapus tetap ada di tabel BigQuery tujuan. Entri baru ke kolom yang dihapus ini diisi dengan nilai null. |
| Mengubah jenis data dalam kolom | Konektor hanya mendukung konversi jenis data
yang didukung oleh pernyataan DDL ALTER COLUMN.
Konversi jenis data lainnya akan menyebabkan transfer data gagal.
Jika Anda mengalami masalah, sebaiknya buat konfigurasi transfer baru. |
| Mengganti nama kolom | Kolom asli tetap ada di tabel BigQuery tujuan seperti apa adanya, sementara kolom baru ditambahkan ke tabel tujuan dengan nama yang diperbarui. |
Pemetaan jenis data
Tabel berikut memetakan jenis data PostgreSQL ke jenis data BigQuery yang sesuai:
| Jenis data PostgreSQL | Jenis data BigQuery | Jenis data BigQuery yang diperbarui |
|---|---|---|
array |
STRING |
|
bigint |
INTEGER |
|
bigserial |
INTEGER |
|
bit(n) |
STRING |
|
bit varying(n) |
STRING |
|
boolean |
BOOLEAN |
|
box |
STRING |
|
bytea |
BYTES |
|
character |
STRING |
|
character varying |
STRING |
|
cidr |
STRING |
|
circle |
STRING |
|
circularstring |
STRING |
|
compoundcurve |
STRING |
|
curvepolygon |
STRING |
|
date |
DATE |
|
double precision |
FLOAT |
|
enum |
STRING |
|
geometrycollection |
STRING |
|
inet |
STRING |
|
integer |
INTEGER |
|
interval |
STRING |
|
json |
STRING |
JSON |
jsonb |
STRING |
JSON |
line |
STRING |
|
linestring |
STRING |
|
lseg |
STRING |
|
macaddr |
STRING |
|
macaddr8 |
STRING |
|
money |
STRING |
|
multicurve |
STRING |
|
multilinestring |
STRING |
|
multipoint |
STRING |
|
multipolygon |
STRING |
|
multisurface |
STRING |
|
numeric(precision, scale)/decimal(precision, scale) |
NUMERIC |
|
path |
STRING |
|
point |
STRING |
|
polygon |
STRING |
|
polyhedralsurface |
STRING |
|
range |
STRING
|
|
real |
FLOAT |
|
serial |
INTEGER |
|
smallint |
INTEGER |
|
smallserial |
INTEGER |
|
text |
STRING |
|
time [ (p) ] [ without timezone ] |
TIMESTAMP |
|
time [ (p) ] with time zone |
TIMESTAMP |
|
tin |
STRING |
|
timestamp [ (p) ] [ without timezone ] |
TIMESTAMP |
DATETIME |
timestamp [ (p) ] with time zone |
TIMESTAMP |
|
triangle |
STRING |
|
tsquery |
STRING |
|
tsvector |
STRING |
|
uuid |
STRING |
|
xml |
STRING |
Harga
Untuk mengetahui informasi harga tentang transfer PostgreSQL, lihat Harga Data Transfer Service.
Langkah berikutnya
- Pelajari cara menyiapkan transfer PostgreSQL.
- Pelajari lebih lanjut BigQuery Data Transfer Service.