Halaman ini menjelaskan cara menggunakan Lakehouse Federation untuk mengakses data yang disimpan atau dapat diakses menggunakan BigQuery dari antarmuka AlloyDB untuk PostgreSQL.
Foreign data wrapper mendukung berbagai resource BigQuery, yang memungkinkan Anda membuat kueri berikut:
- Tabel native dan tampilan terwujud
- Tampilan BigQuery(tampilan logis)
- Tabel eksternal BigLake, termasuk tabel terkelola Apache Iceberg
- Tabel eksternal standar
Dengan menggunakan integrasi ini, Anda dapat memperlakukan set data BigQuery sebagai tabel lokal dalam lingkungan PostgreSQL untuk melakukan analisis lintas mesin. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Lakehouse Federation di AlloyDB.
Halaman ini mengasumsikan bahwa Anda memiliki cluster AlloyDB dan instance utama, serta memiliki set data dan tabel BigQuery. Untuk mengetahui informasi selengkapnya, lihat Membuat set data dan Membuat dan menggunakan tabel.
Sebelum memulai
- Pastikan flag
bigquery_fdw.enableddikonfigurasi di instance AlloyDB untuk PostgreSQL. - Pelajari Jenis data BigQuery dan pemetaan kolom yang didukung.
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Aktifkan Cloud API yang diperlukan untuk membuat dan terhubung ke AlloyDB untuk PostgreSQL.
Pada langkah Confirm project, klik Next untuk mengonfirmasi nama project yang akan Anda ubah.
Pada langkah Enable APIs, klik Enable untuk mengaktifkan hal berikut:
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
- BigQuery API
Service Networking API diperlukan jika Anda berencana mengonfigurasi konektivitas jaringan ke AlloyDB menggunakan jaringan VPC yang berada di project yang sama dengan AlloyDB. Google Cloud
Compute Engine API dan Cloud Resource Manager API diperlukan jika Anda berencana mengonfigurasi konektivitas jaringan ke AlloyDB menggunakan jaringan VPC yang berada di project yang berbeda. Google Cloud
Peran yang diperlukan
Untuk memberikan akses baca ke Set Data BigQuery ke akun layanan cluster AlloyDB, Anda memerlukan izin berikut. Untuk mengetahui informasi selengkapnya, lihat Memberikan akses AlloyDB ke set data BigQuery.
- Pelihat Data BigQuery
(
roles/bigquery.dataViewer) atau peran khusus apa pun dengan izinbigquery.tables.getdanbigquery.tables.getData. Jika diberikan pada tabel atau tampilan, peran ini memberikan izin untuk membaca data dan metadata dari tabel atau tampilan. - Pengguna Sesi Baca BigQuery
(
roles/bigquery.readSessionUser) atau peran khusus apa pun dengan izinbigquery.readsessions.createdanbigquery.readsessions.getData. Memberikan kemampuan untuk membuat dan menggunakan sesi baca. - Pengguna Tugas BigQuery (
roles/bigquery.jobUser) atau peran khusus apa pun dengan izinbigquery.jobs.create. Memberikan izin untuk menjalankan tugas, termasuk kueri, dalam project menggunakan BigQuery API. Peran ini hanya dapat diberikan pada resource Resource Manager (project, folder, dan organisasi). - Storage Object Viewer (
roles/storage.objectViewer) atau peran khusus apa pun dengan izinstorage.objects.get. Memberikan izin untuk mengakses tabel eksternal BigQuery. Harus diberikan di tingkat project atau bucket.
Memberikan akses AlloyDB ke set data BigQuery
Setelah fitur Lakehouse Federation diaktifkan di cluster AlloyDB, Anda harus memberikan akses akun layanan cluster AlloyDB ke set data BigQuery.
konsol otomatis memberikan izin yang diperlukan ke akun layanan cluster saat Anda menghubungkan tabel BigQuery menggunakan AlloyDB Studio. Google Cloud
Untuk memberikan akses menggunakan gcloud CLI, ikuti langkah-langkah berikut:
gcloud
Untuk menggunakan gcloud CLI, Anda dapat menginstal dan melakukan inisialisasi Google Cloud CLI, atau menggunakan Cloud Shell.
Buka gcloud CLI. Jika Anda belum menginstal gcloud CLI, instal dan lakukan inisialisasi gcloud CLI, atau gunakan Cloud Shell.
Jalankan perintah:
gcloud beta alloydb clusters describegcloud beta alloydb clusters describe CLUSTER --region=REGIONGanti kode berikut:
CLUSTER: ID cluster AlloyDB.REGION: lokasi cluster AlloyDB, misalnya,asia-east1,us-east1. Lihat daftar lengkap region di Mengelola lokasi instance.
Output berisi kolom
serviceAccountEmail, yang merupakan akun layanan untuk cluster ini. Anda juga dapat menemukan akun layanan di halaman Cluster overview.Berikan izin yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses ke resource dengan IAM.
Jika akun layanan cluster tidak memiliki izin yang diperlukan, error berikut akan muncul saat kueri dijalankan terhadap tabel BigQuery:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
Mengonfigurasi ekstensi
Untuk mengonfigurasi ekstensi, ikuti langkah-langkah berikut:
Konsol
Buka halaman Clusters.
Klik ID cluster yang ingin Anda gunakan.
Di Navigation menu, klik AlloyDB Studio.
Login ke database Anda.
Di panel Explorer, luaskan skema yang relevan.
Klik menu Actions di samping BigQuery Tables , lalu klik Connect BigQuery table.
Di panel Connect BigQuery table, pilih project sumber, set data sumber, dan tabel.
Tabel Review and select columns menampilkan kolom dari tabel yang dipilih. Pilih kolom yang ingin Anda petakan.
Di kolom Table name, masukkan nama untuk tabel asing.
Opsional: Klik View SQL Command untuk melihat perintah yang dihasilkan.
Klik Connect table. Dialog akan menampilkan progres. Setelah proses selesai, Anda dapat membuat kueri tabel seperti membuat kueri tabel apa pun di AlloyDB.
psql
Buat ekstensi.
- Hubungkan ke instance AlloyDB menggunakan klien psql dengan mengikuti petunjuk di Menghubungkan klien psql ke instance. Atau, Anda dapat menggunakan AlloyDB Studio. Untuk mengetahui informasi selengkapnya, lihat Mengelola data Anda menggunakan konsol. Google Cloud
Jalankan perintah berikut:
CREATE EXTENSION bigquery_fdw;
Buat server asing untuk menentukan parameter koneksi untuk set data BigQuery jarak jauh.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;Ganti kode berikut:
BIGQUERY_SERVER_NAME: ID unik untuk server asing. Tentukan ID ini sekali dalam database tertentu. Anda dapat menggantiBIGQUERY_SERVER_NAMEdengan nama server Anda.
Buat pemetaan pengguna dengan menjalankan perintah
CREATE USER MAPPING, yang memetakan pengguna PostgreSQL lokal yang ingin Anda hubungkan ke server asing.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;Ganti kode berikut:
USERNAME: nama pengguna database atau pengguna IAM yang mengakses tabel asing.BIGQUERY_SERVER_NAME: ID unik untuk server asing yang Anda buat.
Tentukan tabel asing yang sesuai dengan tabel yang ingin Anda akses di BigQuery menggunakan perintah
CREATE FOREIGN TABLE. Perintah ini memungkinkan Anda menentukan struktur tabel jarak jauh. Tabel asing dapat memiliki semua atau sebagian kolom dalam tabel sumber di BigQuery.CREATE FOREIGN TABLE TABLENAME ( COLUMN1_NAME DATA_TYPE, COLUMN2_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME [, mode EXECUTION_MODE]);Ganti kode berikut:
TABLENAME: nama tabel asing di database AlloyDB lokal.COLUMNX_NAME: nama kolom AlloyDB. Nama kolom harus sama persis dengan nama kolom yang sesuai dalam tabel sumber BigQuery.Xmenunjukkan bahwa tabel dapat dibuat dengan beberapa kolom. Nama juga harus cocok dengan huruf besar/kecil yang tepat dari kolom BigQuery. Jika nama kolom BigQuery berisi huruf besar (misalnya,employeeID), ID AlloyDB harus diapit tanda kutip ganda (misalnya,"employeeID") untuk mempertahankan huruf campuran atau huruf besar.DATA_TYPE: jenis data kolom.BIGQUERY_SERVER_NAME: ID unik untuk server asing yang Anda buat.BIGQUERY_PROJECT_ID: ID project tempat set data BigQuery berada.BIGQUERY_DATASET_NAME: nama set data BigQuery untuk tabel.BIGQUERY_TABLE_NAME: nama tabel BigQuery.EXECUTION_MODE: Opsional. Opsimodedapat berupaqueryuntuk menggunakan BigQuery API untuk kueri kompleks,storageuntuk menggunakan BigQuery Storage API untuk pembacaan massal yang lebih cepat, atauautountuk memilih mode secara otomatis;autoadalah nilai default. Untuk mengetahui informasi selengkapnya, lihat Mode eksekusi foreign data wrapper BigQuery.
Setelah tabel asing dibuat, Anda dapat membuat kueri tabel ini dengan cara yang sama seperti membuat kueri tabel apa pun di AlloyDB.
Mode eksekusi foreign data wrapper BigQuery
Mode eksekusi menentukan cara AlloyDB untuk PostgreSQL berinteraksi dengan BigQuery untuk mengambil data. Foreign data wrapper BigQuery mendukung dua mode eksekusi: query dan storage. Memilih mode yang tepat sangat penting karena setiap mode memiliki karakteristik performa dan harga yang terpisah. Lihat
Harga BigQuery untuk mengetahui informasi selengkapnya.
Mode Kueri
Mode ini menggunakan BigQuery API untuk mengambil
data dari BigQuery. Mode ini menggunakan mesin komputasi BigQuery untuk menjalankan kueri kompleks dengan mendorong filter dan agregasi. Artinya, klausa WHERE, klausa GROUP BY, dan agregasi dijalankan di BigQuery sebelum mengirim data kembali ke PostgreSQL. Mode ini juga mendukung pembuatan kueri tampilan BigQuery dan tabel eksternal.
Karena API ini menyediakan respons baris terstruktur dan diberi nomor halaman yang cocok untuk kumpulan hasil kecil, membaca set data besar memiliki batasan throughput dan latensi yang lebih tinggi dibandingkan dengan alternatif streaming BigQuery Storage API.
Mode Penyimpanan
Mode ini menggunakan BigQuery Storage API untuk mengambil data dari BigQuery. Mode ini memungkinkan pembacaan dengan throughput tinggi dengan mengirim data terstruktur melalui kabel dalam format serialisasi biner. Mode ini lebih disukai untuk memindai tabel besar di BigQuery.
Namun, mode ini memiliki beberapa batasan. Tidak semua operasi SQL kompleks dapat didorong ke BigQuery Storage API. Misalnya, agregasi tidak dapat didorong ke BigQuery dan harus dijalankan di AlloyDB. Mode ini juga tidak mendukung pembuatan kueri tampilan BigQuery dan tabel eksternal.
Mode Otomatis
Mode default ditetapkan ke auto jika Anda tidak menetapkan mode dalam perintah CREATE FOREIGN TABLE.
Saat Anda menggunakan mode auto, AlloyDB akan memilih API yang mendasarinya untuk menyeimbangkan performa dan memaksimalkan operasi SQL yang didorong ke BigQuery.
Langkah berikutnya
- Menyinkronkan data BigQuery dan Iceberg ke AlloyDB.
- Pelajari tentang jenis data BigQuery dan pemetaan kolom yang didukung.