Federasi Data Zero ETL dari BigQuery ke AlloyDB

1. Ringkasan

Di Bagian 1, kita berhasil mengubah PDF yang tidak terstruktur dan berantakan menjadi tabel yang bersih, cerdas, dan terstruktur di BigQuery menggunakan Knowledge Catalog dan DataScan. Sekarang, kita memiliki data warehouse yang andal.

Jika Anda perlu mengingat kembali, di lab bagian 1, kita mengambil kasus penggunaan waralaba Frozen Yogurt fiktif dan mengonversi 400 file PDF tidak terstrukturnya — yang mencakup teks, tabel, dan gambar — menjadi tabel BigQuery yang terstruktur dengan rapi dengan hubungan yang disimpulkan secara otomatis di antara tabel tersebut menggunakan BigQuery Knowledge Catalog dan Dataplex.

Yang akan Anda build

Dalam sesi ini, kita akan menyiapkan AlloyDB untuk PostgreSQL dan melakukan sesuatu yang ajaib: memfederasikan data BigQuery kita langsung ke AlloyDB. Artinya, aplikasi transaksional kami dapat membuat kueri data warehouse kami secara real-time, tanpa menyalin atau menduplikasi data apa pun.

Sebagai developer, Anda harus mengajukan pertanyaan ini pada tahap ini:

"Jika data sudah ada di BigQuery, mengapa harus menggunakan AlloyDB? Mengapa aplikasi tidak menjalankan pernyataan SELECT secara langsung terhadap BigQuery?"

Berikut alasannya:

Dengan Federasi Lakehouse, Anda dapat menggunakan mesin kueri AlloyDB untuk mendukung workload transaksional dan analitis aplikasi Anda dari dalam antarmuka yang sama. Anda juga dapat mewujudkan atau mengimpor data ini di AlloyDB untuk akses yang lebih cepat untuk digunakan dalam aplikasi Anda, yang memungkinkan Anda menggunakan AlloyDB AI dan columnar engine.

Anda dapat menggunakan AlloyDB sebagai database transaksional dan juga memiliki sejumlah besar data yang berada di BigQuery atau BigLake. Aplikasi Anda biasanya terintegrasi secara independen dengan kedua sistem ini untuk mengakses data di berbagai layanan Google Cloud ini. Penggabungan Lakehouse untuk AlloyDB memungkinkan Anda menggunakan dukungan kueri gabungan AlloyDB yang diterapkan sebagai pembungkus data asing untuk mengakses data BigQuery dan AlloyDB menggunakan antarmuka SQL di AlloyDB.

Daripada membuat pipeline ETL yang tidak fleksibel untuk membuat kueri data BigQuery dari AlloyDB, kita akan menggunakan kueri gabungan. AlloyDB akan bertindak sebagai endpoint terpadu, yang dapat diakses dengan lancar ke BigQuery jika diperlukan.

Mulai membangun.

1a3f48f6d70b16ad.png

Yang akan Anda pelajari

  • Cara menyiapkan Cluster, Instance, dan Jaringan AlloyDB dengan sekali klik tombol
  • Cara menyiapkan ekstensi untuk mempersiapkan federasi
  • Cara menyiapkan federasi dari BigQuery ke AlloyDB
  • Melakukan pengujian

Persyaratan

  • Browser, seperti Chrome atau Firefox.
  • Project Google Cloud yang mengaktifkan penagihan.
  • Pemahaman dasar tentang SQL.

2. Sebelum memulai

Membuat project

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
  1. Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

Gambar tombol Activate Cloud Shell

  1. Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika Anda ingin melakukan autentikasi
gcloud auth login
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
  1. Aktifkan API yang diperlukan: Jalankan perintah ini untuk mengaktifkan semua API yang diperlukan:
gcloud services enable alloydb.googleapis.com

Gotcha & Pemecahan Masalah

Sindrom "Project Hantu"

Anda menjalankan gcloud config set project, tetapi sebenarnya Anda melihat project lain di UI Konsol. Periksa project ID di dropdown kiri atas.

Penghalang Penagihan

Anda mengaktifkan project, tetapi lupa akun penagihan. AlloyDB adalah mesin berperforma tinggi; mesin ini tidak akan dimulai jika "tangki bahan bakar" (penagihan) kosong.

Keterlambatan Penyebaran API

Anda mengklik "Aktifkan API", tetapi command line masih menampilkan Service Not Enabled. Tunggu 60 detik. Cloud memerlukan waktu sejenak untuk mengaktifkan neuronnya.

Quags Kuota

Jika menggunakan akun uji coba yang baru, Anda mungkin mencapai kuota regional untuk instance AlloyDB. Jika us-central1 gagal, coba us-east1.

3. Ringkasan singkat data dari Bagian 1

Di bagian ini, Anda harus memastikan bahwa data terstruktur yang kita ekstrak dari PDF tidak terstruktur tersedia di BigQuery. Jika Anda belum membaca bagian 1 atau tidak memiliki Akun Penagihan, tidak masalah, Anda dapat menyelesaikan langkah-langkah berikut dan memulai:

Buka Konsol Google Cloud dari akun Gmail pribadi Anda, lalu klik Tombol Activate Cloud Shell di pojok kanan atas konsol:

91567e2f55467574.png

Kemudian, ikuti langkah-langkah di bagian tanpa akun penagihan di bawah:

Sekarang setelah memiliki data di BigQuery, mari kita lanjutkan ke langkah berikutnya.

4. Menyiapkan Cluster, Instance, dan Jaringan AlloyDB

Ada aplikasi mulai cepat berbasis web yang akan membantu Anda menyiapkan Cluster, Instance, dan dependensi lainnya di AlloyDB. Anda dapat mengikuti langkah 2–4 di lab ini untuk menyiapkannya dengan mengklik tombol:

https://codelabs.developers.google.com/quick-alloydb-setup

Setelah cluster dibuat, buka halaman Cluster Overview dan salin detail akun layanan dari sana.

7cd9d04e06c826d8.png

5. Penyiapan Izin

Memberikan Izin BigQuery ke Akun Layanan ini

  1. Buka IAM & Admin > IAM.
  2. Klik Beri Akses.
  3. Tempelkan alamat Akun Layanan AlloyDB ke kolom New principals.
  4. Tetapkan peran berikut:
  • BigQuery Data Viewer (roles/bigquery.dataViewer): Memungkinkan membaca data.
  • Pengguna BigQuery (roles/bigquery.user): Mengizinkan menjalankan kueri.
  • (Opsional, tetapi direkomendasikan) Pengguna Sesi Baca BigQuery (roles/bigquery.readSessionUser): Mengoptimalkan pembacaan set data besar melalui Storage Read API.

6. Menghubungkan ke AlloyDB dan Mengaktifkan Ekstensi BigQuery

Sekarang kita terhubung ke instance AlloyDB baru untuk mengonfigurasi ekstensi federasi. Kita akan menggunakan AlloyDB Studio untuk melakukannya.

  1. Dari halaman Cluster Overview (konsol AlloyDB), klik AlloyDB Studio.

1dd78902dc2b4f39.png

  1. Hubungkan dengan database, nama pengguna, dan sandi yang Anda konfigurasi pada saat langkah Penyiapan Cepat AlloyDB.
  2. Setelah terhubung, di tab Query Editor di sisi kanan, masukkan pernyataan berikut dan JALANKAN satu per satu:
CREATE EXTENSION IF NOT EXISTS  bigquery_fdw;

CREATE SERVER bigquery_server FOREIGN DATA WRAPPER bigquery_fdw;

CREATE USER MAPPING FOR postgres SERVER bigquery_server;
  1. Setelah berhasil dilakukan, buka panel explorer di sebelah kiri dan scroll ke bawah ke tabel BigQuery:

efe4f8be930824aa.png

  1. Klik 3 titik, lalu klik "Hubungkan Tabel BigQuery".
  2. Di pop-up Hubungkan Tabel BigQuery yang terbuka, pilih project_id dan nama set data BigQuery (dibuat di bagian 1) yang datanya ingin Anda kueri di database AlloyDB.

1cc345197b0fbddf.png

  1. Pilih setiap tabel satu per satu untuk menghubungkan semua data Anda ke AlloyDB. Hal ini dilakukan agar kami dapat memvalidasi jenis kolom untuk memastikan kolom tersebut didukung di AlloyDB.

Jika Anda ingin melakukan hal yang sama dengan SQL, bukan melalui pendekatan tunjuk dan klik:

CREATE FOREIGN TABLE <<TABLE_NAME>> (
      "cas_number" VARCHAR, "ingredient_name" VARCHAR, "max_moisture_percentage" DOUBLE PRECISION, "ph_range" VARCHAR, "purity_percentage" DOUBLE PRECISION, "shelf_life_months" BIGINT, "specific_gravity_range" VARCHAR
    ) SERVER "bigquery_server" OPTIONS (
      project '<<PROJECT_ID>>',
      dataset 'froyo_data',
      table '<<BQ_TABLE_NAME>>'
    );

Keajaiban!!!

Kita baru saja membuat "Foreign Tables" di AlloyDB. Tabel ini terlihat dan berfungsi seperti tabel PostgreSQL normal, tetapi tidak menyimpan data apa pun. Saat Anda membuat kueri, AlloyDB akan langsung meneruskan kueri ke BigQuery, mengambil hasilnya, dan menampilkannya kepada Anda.

7. Menguji federasi di AlloyDB

Mari kita verifikasi bahwa kita dapat mengkueri set data BigQuery analitis yang besar secara langsung dari database PostgreSQL transaksional kita.

Masih di AlloyDB Studio, mari jalankan kueri untuk mengetahui alergen apa saja yang ada dalam "Midnight Swirl" (pertanyaan yang sama seperti yang kita ajukan di Bagian 1, tetapi kali ini diajukan dari AlloyDB):

SELECT
    p.product_name,
    i.ingredient_name,
    a.allergen_name
FROM
    consistsof c
INNER JOIN product p
    ON c.product_id = p.product_id
INNER JOIN ingredient i
    ON c.ingredient_id = i.ingredient_name
LEFT OUTER JOIN containsallergen a
    ON i.ingredient_id = a.ingredient_id
WHERE
    UPPER(p.product_name) LIKE '%MIDNIGHT%SWIRL%'
    AND a.allergen_name IS NOT NULL;

Boom. Anda akan melihat hasil yang persis sama seperti yang Anda lihat di BigQuery.

7d0be18295c5dfbd.png

8. Pembersihan

Setelah lab ini selesai, jangan lupa untuk menghapus cluster dan instance AlloyDB.

Perintah ini akan membersihkan cluster beserta instance-nya.

9. Selamat atas Lapisan Data Terpadu Anda

Pikirkan apa yang baru saja kita capai:

  1. Aplikasi transaksional kami (yang berjalan di AlloyDB) dapat menangani sesi pengguna yang cepat dan serentak.
  2. Jika memerlukan data analitis yang berat atau konteks historis (seperti detail pemasok atau pemetaan bahan yang kompleks), maka akan membuat kueri froyo_dataschema BigQuery.
  3. Zero ETL. Tidak ada pipeline data yang rusak. Tidak ada database yang tidak disinkronkan. Kami menyimpan sekali (di BQ) dan melakukan komputasi di tempat yang kami butuhkan.

Sekarang setelah fondasi data kita — baik analitis maupun transaksional — sangat kuat dan saling terhubung, kita siap untuk bagian yang menyenangkan.

Di Bagian 3, kita akan membangun Aplikasi Multi-Agen yang berada di atas arsitektur ini untuk menjalankan operasi bisnis Froyo.