Mengekspor data ke AlloyDB (ETL terbalik)
Dokumen ini menjelaskan cara menyiapkan alur kerja ekstrak, transformasi, dan
pemuatan terbalik (ETL terbalik) dari BigQuery ke AlloyDB untuk PostgreSQL. Anda dapat
melakukannya menggunakan
pernyataan EXPORT DATA.
Anda juga dapat mengekspor data ke AlloyDB dengan menyelaraskan tabel BigQuery ke AlloyDB.
Sebelum memulai
Buat cluster dan instance AlloyDB, yang mencakup database, skema, dan tabel, untuk menerima data yang diekspor. Anda harus memiliki skema dan tabel target sebelum menjalankan tugas ekspor.
Instance AlloyDB target harus berupa instance
PRIMARYdalam statusREADY.Buat koneksi BigQuery untuk terhubung ke instance AlloyDB Anda. Koneksi harus diautentikasi dengan nama pengguna dan sandi. Pengguna database yang ditentukan dalam koneksi harus memiliki hak istimewa
INSERTpada tabel target danUSAGEpada skema target.Untuk menggunakan fitur ini, Anda harus membuat reservasi tingkat BigQuery Enterprise atau Enterprise Plus. Ekspor ke AlloyDB hanya didukung untuk reservasi dengan penetapan
QUERY.Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengekspor data BigQuery ke AlloyDB, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Mengekspor data dari tabel BigQuery:
BigQuery Data Viewer (
roles/bigquery.dataViewer) -
Menjalankan tugas ekstraksi:
BigQuery User (
roles/bigquery.user) -
Menggunakan koneksi BigQuery:
BigQuery Connection User (
roles/bigquery.connectionUser) -
Terhubung ke instance AlloyDB:
Klien AlloyDB (
roles/alloydb.client) - akun layanan koneksi
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Batasan
Ekspor AlloyDB hanya mendukung ekspor batch. Anda tidak dapat menggunakan kueri berkelanjutan untuk mengekspor ke AlloyDB.
Data yang diekspor ke AlloyDB ditambahkan secara eksklusif sebagai baris baru. Proses pengeksporan tidak mengubah atau menghapus catatan yang ada dalam AlloyDB. Jika tabel target tidak memiliki batasan
PRIMARY KEYatauUNIQUEyang ditentukan, mengekspor data yang sama beberapa kali akan menghasilkan entri duplikat.Untuk memastikan integritas data, sebaiknya tentukan batasan
PRIMARY KEYatauUNIQUEpada tabel AlloyDB Anda. Tugas ekspor tidak melakukan "upsert", yaitu memperbarui data yang ada jika ada kunci yang cocok dan unik. Jika ada baris masuk yang melanggar batasanPRIMARY KEYatauUNIQUE, seluruh tugas ekspor akan gagal.Sebaiknya jangan jalankan beberapa tugas
EXPORT DATAserentak ke tabel AlloyDB yang sama. Tindakan ini dapat menyebabkan perilaku yang tidak dapat diprediksi, seperti kehilangan data atau kegagalan tugas. Sebaiknya verifikasi bahwa hanya satu tugas ekspor yang menulis ke tabel tertentu dalam satu waktu.Hanya otentikasi nama pengguna dan sandi melalui koneksi BigQuery yang didukung.
Jenis data BigQuery
ARRAY,BYTES,GEOGRAPHY,INTERVAL, danSTRUCTtidak didukung.Jika pernyataan
SELECTBigQuery menghilangkan kolom yang ada di tabel AlloyDB target, kolom tersebut harus mengizinkan nilaiNULLatau memiliki nilai default yang ditentukan di AlloyDB. Jika memiliki batasanNOT NULLdan tidak ada nilai default, ekspor akan gagal.Ekspor ke AlloyDB hanya didukung untuk edisi BigQuery Enterprise atau Enterprise Plus. Edisi Standar BigQuery dan komputasi on-demand tidak didukung. Untuk mengetahui informasi selengkapnya, lihat Fitur administrasi.
Tugas BigQuery, seperti tugas ekstrak ke AlloyDB, memiliki durasi maksimum 6 jam. Untuk ekspor yang sangat besar, sebaiknya bagi ekspor menjadi beberapa tugas yang lebih kecil.
Pertimbangan lokasi
Mengekspor data ke AlloyDB memiliki persyaratan khusus terkait lokasi set data BigQuery dan instance AlloyDB Anda:
Ekspor dalam region yang sama: Instance AlloyDB target harus berada di region yang sama persis dengan set data BigQuery. Google Cloud Misalnya, set data di
us-east1hanya dapat diekspor ke instance AlloyDB dius-east1.Ekspor multi-region:
- Set data di multi-region
UShanya dapat diekspor ke instance AlloyDB yang berada di regionus-central1. - Set data di multi-region
EUhanya dapat diekspor ke instance AlloyDB yang berada di regioneurope-west4.
- Set data di multi-region
Ekspor lintas region selain kombinasi yang disebutkan sebelumnya tidak didukung.
Mengonfigurasi ekspor dengan alloydb_options
Anda dapat menggunakan opsi alloydb_options untuk menentukan skema, tabel, dan koneksi maksimum AlloyDB tujuan. Konfigurasi dinyatakan sebagai string JSON. Hanya parameter table yang diperlukan;
semua parameter lainnya bersifat opsional.
Saat mengonfigurasi ekspor, kolom dalam pernyataan SELECT harus memiliki
alias yang cocok dengan nama kolom dalam tabel
AlloyDB target.
EXPORT DATA WITH CONNECTION `PROJECT_ID.LOCATION.CONNECTION_ID` OPTIONS( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID", alloydb_options="""{ "schema": "SCHEMA_NAME", "table": "TABLE_NAME", "max_parallel_connections":MAX_CONNECTIONS}""" ) AS SELECT * FROM `mydataset.table1`;
Ganti kode berikut:
PROJECT_ID: nama project Google Cloud Anda.LOCATION: lokasi koneksi dan instance target Anda.CONNECTION_ID: nama koneksi BigQuery Anda.CLUSTER_ID: nama cluster AlloyDB Anda.INSTANCE_ID: nama instance AlloyDB target Anda.SCHEMA_NAME(Opsional): nama skema tujuan di AlloyDB. Jika tidak diberikan, skema default yang dikonfigurasi untuk pengguna database akan digunakan.TABLE_NAME: nama tabel tujuan yang ada di AlloyDB, tanpa awalan skema.MAX_CONNECTIONS(Opsional): jumlah maksimum koneksi paralel serentak dari pekerja BigQuery ke instance AlloyDB. Membatasi koneksi dapat mencegah kelebihan beban pada instance target selama ekspor besar.
Ekspor data
Anda dapat menggunakan
pernyataan EXPORT DATA
untuk mengekspor data dari tabel BigQuery ke tabel
AlloyDB.
Contoh berikut mengekspor kolom yang dipilih dari tabel bernama
mydataset.table1 ke tabel AlloyDB bernama my_target_table:
EXPORT DATA WITH CONNECTION `myproject.us-central1.my-alloydb-conn` OPTIONS ( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance", alloydb_options="""{ "schema": "public", "table": "my_target_table" }""" ) AS SELECT col1 AS id, col2 AS name, col3 AS value FROM `mydataset.table1`;
Menyinkronkan tabel untuk diekspor
Untuk salinan tabel lengkap atau pencerminan otomatis tanpa perlu transformasi berbasis SQL, Anda dapat menyinkronkan tabel BigQuery langsung ke AlloyDB. Meskipun pernyataan EXPORT DATA memungkinkan Anda menggunakan kueri SELECT
untuk memproses, membuat alias, atau memfilter data sebelum dipindahkan, Anda dapat menggunakan sinkronisasi tabel untuk migrasi satu per satu tabel BigQuery.
Sinkronisasi tabel tersedia dalam mode berikut:
- Impor satu kali: Membuat salinan tabel BigQuery yang dapat ditulis dan independen dalam AlloyDB.
- Sinkronisasi berkala (pencerminan): Membuat tabel lokal hanya baca di AlloyDB yang otomatis diperbarui dari BigQuery sesuai jadwal yang ditentukan.
Untuk mengetahui informasi selengkapnya, lihat artikel Menyinkronkan data BigQuery ke AlloyDB.
Harga
Saat mengekspor data ke AlloyDB menggunakan pernyataan EXPORT DATA, Anda akan ditagih menggunakan harga komputasi kapasitas BigQuery.
Setelah data diekspor, Anda dikenai biaya penyimpanan data di AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Harga AlloyDB untuk PostgreSQL.