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.
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.Buat reservasi BigQuery Enterprise atau Enterprise Plus.
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 diperlukan untuk 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 ekstrak:
BigQuery User (
roles/bigquery.user) -
Menggunakan koneksi BigQuery:
BigQuery Connection User (
roles/bigquery.connectionUser) -
Terhubung ke instance AlloyDB:
AlloyDB Client (
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 hanya ditambahkan sebagai baris baru. Proses ekspor tidak mengubah atau menghapus data 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 saat data yang ada diupdate 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 terduga, seperti kehilangan data atau kegagalan tugas. Sebaiknya pastikan hanya satu tugas ekspor yang menulis ke tabel tertentu pada satu waktu.Hanya autentikasi 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 kolom tersebut memiliki batasanNOT NULLdan tidak memiliki 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 di 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 Google Cloud project 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 disediakan, 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 instance target kelebihan beban 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`;
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.