Menyinkronkan data BigQuery dan Iceberg ke AlloyDB

Halaman ini menjelaskan cara menggunakan Federasi Lakehouse untuk AlloyDB for PostgreSQL guna menyinkronkan data dari tabel native BigQuery, tampilan terwujud, tampilan BigQuery, tabel eksternal BigLake (seperti tabel yang dikelola Apache Iceberg), dan tabel eksternal standar. Iceberg adalah format tabel terbuka untuk mengelola dan menukar data.

Halaman ini mengasumsikan bahwa Anda memiliki cluster dan instance utama AlloyDB, serta memiliki set data dan tabel BigQuery. Untuk mengetahui informasi selengkapnya, lihat Membuat set data dan Membuat dan menggunakan tabel.

Sebelum memulai

  1. Pastikan flag bigquery_fdw.enabled dikonfigurasi di instance AlloyDB.
  2. Pahami Jenis data BigQuery dan pemetaan kolom 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

    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 berikut ini:

    • AlloyDB API
    • Compute Engine API
    • Cloud Resource Manager API
    • Service Networking API
    • BigQuery Storage API

    Service Networking API diperlukan jika Anda berencana mengonfigurasi konektivitas jaringan ke AlloyDB menggunakan jaringan VPC yang berada di project yang sama Google Cloud 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 lain.

Peran yang diperlukan

Untuk memberikan akses baca ke Set Data BigQuery bagi akun layanan cluster AlloyDB, Anda memerlukan izin berikut:

  • BigQuery Data Viewer (roles/bigquery.dataViewer) atau peran kustom 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 kustom apa pun dengan izin bigquery.readsessions.create dan bigquery.readsessions.getData. Memberikan kemampuan untuk membuat dan menggunakan sesi baca.

Memberikan akses AlloyDB ke set data BigQuery

Setelah fitur Federasi Lakehouse diaktifkan di cluster AlloyDB, berikan akses akun layanan cluster AlloyDB ke set data BigQuery.

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 Mengelola lokasi instance.

    Output berisi kolom serviceAccountEmail, yang merupakan akun layanan untuk cluster ini. Anda juga dapat menemukan akun layanan di halaman Cluster details.

  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

  1. Buat ekstensi.

    1. 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 .
    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;
    

    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.
  3. Buat pemetaan pengguna dengan menjalankan perintah CREATE USER MAPPING, yang menentukan kredensial yang akan digunakan saat Anda terhubung 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 (
    COLUMNX_NAME DATA_TYPE,
    COLUMNX_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 dalam database 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 cocok dengan huruf besar/kecil kolom BigQuery. Jika nama kolom BigQuery berisi huruf kapital—misalnya, employeeID—ID AlloyDB harus diapit tanda petik ganda—misalnya, "employeeID"—untuk mempertahankan huruf campuran atau huruf kapital.
    • 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. Opsi mode mendukung setelan berikut:

      • query: Gunakan BigQuery API untuk kueri yang kompleks.
      • storage: Gunakan BigQuery Storage API untuk pembacaan massal yang lebih cepat.
      • auto: Otomatis memilih antara mode. Ini adalah defaultnya.

      Untuk mengetahui informasi selengkapnya, lihat Mode eksekusi wrapper data asing BigQuery.

    Setelah tabel asing dibuat, Anda dapat membuat kueri pada tabel ini dengan cara yang sama seperti saat membuat kueri pada tabel mana pun di AlloyDB.

Menyinkronkan data

Untuk menyinkronkan data BigQuery atau data Iceberg BigLake ke AlloyDB, ikuti langkah-langkah berikut:

  1. Identifikasi sumber data yang ada atau buat tabel BigQuery native atau tabel terkelola Iceberg baru.

  2. Gunakan psql untuk membuat local_table dengan menjalankan perintah berikut:

    CREATE TABLE local_table AS (SELECT * from foreign_table);
    

    Perintah ini membuat salinan tabel BigQuery ke tabel AlloyDB lokal dan native.
    Bergantung pada alur kerja aplikasi, Anda dapat mengonfigurasi ekstensi pg_cron PostgreSQL untuk memperbarui tabel AlloyDB secara berkala.

Menyiapkan jadwal untuk menyinkronkan data ke AlloyDB

Untuk menyiapkan jadwal guna menyinkronkan data BigQuery atau data BigLake Iceberg ke AlloyDB, ikuti langkah-langkah berikut:

  1. Konfigurasi ekstensi bigquery_fdw.
  2. Aktifkan ekstensi pg_cron di instance AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Ekstensi database yang didukung.
    1. Tetapkan flag alloydb.enable_pg_cron ke on. Untuk mengetahui informasi selengkapnya, lihat alloydb.enable_pg_cron.
    2. Tetapkan flag cron.database_name ke nama database tempat Anda menginstal ekstensi bigquery_fdw, dan tempat Anda ingin menjalankan kueri SQL untuk sinkronisasi. Untuk mengetahui informasi selengkapnya, lihat Flag database yang didukung.
  3. Untuk memuat ulang salinan lokal tabel asing secara berkala, jalankan perintah berikut di database tempat Anda menginstal ekstensi bigquery_fdw:

    CREATE EXTENSION pg_cron;
    SELECT cron.schedule(JOB_NAME, SCHEDULE, 'CREATE TABLE IF NOT EXISTS local_table_copy AS (SELECT * FROM foreign_table); DROP TABLE IF EXISTS local_table; ALTER TABLE local_table_copy RENAME TO local_table;');
    

    Ganti kode berikut:

    • JOB_NAME: nama tugas.
    • SCHEDULE: jadwal untuk tugas.

    Untuk mengetahui informasi selengkapnya, lihat Apa itu pg_cron?.

Langkah berikutnya