Mengonfigurasi akses AlloyDB ke data real-time di BigQuery

Untuk mengkueri data analisis langsung di BigQuery langsung dari AlloyDB untuk PostgreSQL tanpa menjalankan migrasi ekstrak, transformasi, dan pemuatan (ETL), Anda dapat mengonfigurasi federasi lakehouse. Federasi lakehouse menyatukan database operasional dan data warehouse analisis Anda sehingga Anda dapat mendukung analisis real-time dan aplikasi interaktif tanpa mengelola pipeline data terpisah. Untuk mengetahui informasi selengkapnya, lihat Ringkasan akses ke data real-time.

Dengan integrasi ini, Anda dapat menjalankan kueri di AlloyDB yang mengakses data BigQuery secara real time dan menggabungkan tabel operasional di AlloyDB dengan tabel asing yang mereferensikan set data BigQuery Anda.

Sebelum mengonfigurasi penggabungan lakehouse, Anda memerlukan cluster dan instance utama AlloyDB serta set data dan tabel BigQuery. Untuk mengetahui informasi selengkapnya, lihat Membuat set data dan Membuat dan menggunakan tabel.

Sebelum memulai

  1. Aktifkan flag bigquery_fdw.enabled pada instance AlloyDB untuk PostgreSQL.
  2. Pelajari dan pahami jenis data yang didukung.
  3. Login ke akun Google Cloud Anda. 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.
  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  7. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  10. Aktifkan Cloud API yang diperlukan untuk membuat dan terhubung ke AlloyDB.

    Aktifkan API

  11. Pada langkah Confirm project, klik Next untuk mengonfirmasi nama project yang akan Anda ubah.

  12. 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 dalam project Google Cloud yang sama dengan AlloyDB.

    Compute Engine API dan Cloud Resource Manager API diperlukan jika Anda berencana mengonfigurasi konektivitas jaringan ke AlloyDB menggunakan jaringan VPC yang berada di project Google Cloud yang berbeda.

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.

  • BigQuery Data Viewer (roles/bigquery.dataViewer) atau peran khusus apa pun dengan izin bigquery.tables.get dan bigquery.tables.getData. Jika diberikan pada tabel atau tampilan, peran ini memberikan izin untuk membaca data dan metadata dari tabel atau tampilan.
  • BigQuery Read Session User (roles/bigquery.readSessionUser) atau peran khusus apa pun dengan izin bigquery.readsessions.create dan bigquery.readsessions.getData. Memberikan kemampuan untuk membuat dan menggunakan sesi baca.
  • BigQuery Job User (roles/bigquery.jobUser) atau peran khusus apa pun dengan izin bigquery.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). Jika Anda menyediakan project runtime terpisah, tugas akan dijalankan di project tersebut, bukan di project data. Artinya, Anda harus memberikan peran Job User pada project runtime.

Untuk mengakses tabel BigLake Metastore:

  • BigLake Viewer (roles/biglake.viewer) atau peran khusus apa pun dengan izin biglake.catalogs.get, biglake.namespaces.get, biglake.tables.get, dan biglake.tables.getData. Memberikan izin untuk membaca katalog, namespace, dan tabel BigLake Metastore.
  • Storage Object Viewer (roles/storage.objectViewer) atau peran khusus apa pun dengan izin storage.objects.get. Memberikan izin untuk mengakses tabel eksternal BigQuery dan membaca objek Cloud Storage pokok yang mendukung tabel BigLake dan BigLake Metastore. Harus diberikan di level project atau bucket.

Memberikan akses AlloyDB ke set data BigQuery

Setelah mengaktifkan peran dan izin yang diperlukan untuk federasi lakehouse, Anda harus memberikan akses akun layanan cluster AlloyDB ke set data BigQuery.

Konsol Google Cloud secara otomatis memberikan izin yang diperlukan ke akun layanan cluster saat Anda menghubungkan tabel BigQuery menggunakan AlloyDB Studio.

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 Anda dapat menggunakan Cloud Shell.

  1. Buka gcloud CLI. Jika Anda belum menginstal gcloud CLI, instal dan lakukan inisialisasi gcloud CLI, atau gunakan Cloud Shell.

  2. Jalankan perintah gcloud beta alloydb clusters describe:

    gcloud beta alloydb clusters describe CLUSTER --region=REGION

    Ganti kode berikut:

    • CLUSTER: ID cluster AlloyDB.
    • REGION: lokasi cluster AlloyDB, misalnya, asia-east1, us-east1. Lihat daftar lengkap region di lokasi AlloyDB.

    Output-nya berisi kolom serviceAccountEmail, yang merupakan akun layanan untuk cluster ini. Anda juga dapat menemukan akun layanan di halaman Ringkasan cluster.

  3. 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 permissions
    • Permission bigquery.tables.get denied on table
    • Permission bigquery.tables.getData denied on table

Mengonfigurasi ekstensi

Untuk mengonfigurasi ekstensi, ikuti langkah-langkah berikut:

Konsol

  1. Buka halaman Clusters.

    Buka Cluster

  2. Klik ID cluster yang ingin Anda gunakan.

  3. Di menu navigasi, klik AlloyDB Studio.

  4. Login ke database Anda.

  5. Di panel Explorer, luaskan skema yang relevan.

  6. Klik menu Tindakan di samping Tabel BigQuery, lalu klik Hubungkan tabel BigQuery.

  7. Di panel Connect Tabel BigQuery, pilih project sumber, set data sumber, dan tabel.

  8. Tabel Review and select columns menampilkan kolom dari tabel yang dipilih. Pilih kolom yang ingin Anda petakan.

  9. Di kolom Table name, masukkan nama untuk tabel asing.

  10. Opsional: Klik View SQL Command untuk melihat perintah yang dihasilkan.

  11. Klik Hubungkan tabel. Dialog akan menampilkan progres. Setelah prosesnya selesai, Anda dapat mengkueri tabel seperti mengkueri tabel apa pun di AlloyDB.

psql

  1. Buat ekstensi.

    1. Hubungkan ke instance AlloyDB menggunakan klien psql dengan mengikuti petunjuk di bagian Menghubungkan klien psql ke instance. Atau, Anda dapat menggunakan AlloyDB Studio. Untuk mengetahui informasi selengkapnya, lihat Mengelola data menggunakan konsol Google Cloud .
    2. Jalankan perintah berikut:

      CREATE EXTENSION bigquery_fdw;
      
  2. Buat server asing untuk menentukan parameter koneksi untuk set data BigQuery jarak jauh.

    CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw
      OPTIONS (runtime_project 'RUNTIME_PROJECT_ID');
    

    Ganti kode berikut:

    • BIGQUERY_SERVER_NAME: ID unik untuk server asing. Tentukan ini sekali dalam database tertentu. Anda dapat mengganti BIGQUERY_SERVER_NAME dengan nama server Anda.
    • RUNTIME_PROJECT_ID: optional. ID project Google Cloud yang memproses kueri dan mengakumulasi biaya komputasi. Jika Anda menghilangkan ID ini, kueri akan ditagih ke project yang menyimpan data.
  3. 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.
  4. 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',
      runtime_project 'RUNTIME_PROJECT_ID'
    );
    

    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 di tabel sumber BigQuery. X menunjukkan bahwa tabel dapat dibuat dengan beberapa kolom. Nama juga harus sama persis dengan huruf besar/kecil 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. Saat Anda menentukan DATA_TYPE untuk setiap kolom di tabel asing, pastikan jenisnya kompatibel dengan PostgreSQL. Untuk mengetahui informasi selengkapnya tentang cara jenis BigQuery dikonversi, lihat Pemetaan jenis data.
    • 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.
    • RUNTIME_PROJECT_ID: optional. ID project Google Cloudyang akan ditagih untuk eksekusi kueri. Menetapkan ini di level tabel akan menggantikan project runtime yang ditentukan di level server.

    Setelah tabel asing dibuat, Anda dapat mengkueri tabel ini dengan cara yang sama seperti mengkueri tabel apa pun di AlloyDB.

Pemetaan jenis data

Gunakan tabel berikut untuk mempelajari pemetaan jenis data antara BigQuery dan AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Pertimbangan jenis data untuk kueri gabungan.

Tabel berikut mencantumkan pemetaan jenis data antara BigQuery dan AlloyDB.

Jenis data tabel BigQuery Jenis data tabel asing PostgreSQL yang direkomendasikan

BOOLEAN

BOOLEAN

INTEGER (INT64)

BIGINT

FLOAT (FLOAT64)

DOUBLE PRECISION

STRING

VARCHAR

NUMERIC

NUMERIC(38, 9)

NUMERIC(P[, S])

NUMERIC(P, S)

BIGNUMERIC

NUMERIC(77, 38)

BIGNUMERIC(P[, S])

NUMERIC(P, S)

DATE

DATE

TIMESTAMP

TIMESTAMPTZ

TIME

TIME

JSON

JSONB

BYTES

BYTEA

GEOGRAPHY

GEOGRAPHY(POINT), ...

Untuk mengetahui informasi selengkapnya, lihat PostGIS_Geography.

DATETIME

TIMESTAMP

ARRAY

VECTOR(N)

N adalah dimensi vektor. Anda harus menetapkan flag bigquery_fdw.enable_vector_downcasting dalam sesi. Karena jenis VECTOR di AlloyDB menggunakan jenis float4, Anda mungkin mengalami kehilangan presisi dalam konversi ini.

Untuk mengetahui informasi selengkapnya, lihat ekstensi pgvector.

Langkah berikutnya