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 Froyo 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 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 stabil untuk membuat kueri data BigQuery dari AlloyDB, kita akan menggunakan kueri gabungan. AlloyDB akan bertindak sebagai endpoint terpadu, yang dapat menjangkau BigQuery dengan lancar jika diperlukan.
Mulai membangun.

Yang akan Anda pelajari
- Cara menyiapkan Cluster, Instance, dan Jaringan AlloyDB dengan sekali klik tombol
- Cara menyiapkan ekstensi untuk mempersiapkan federasi
- Cara menyiapkan gabungan dari BigQuery ke AlloyDB
- Melakukan pengujian
Persyaratan
2. Sebelum memulai
Membuat project
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

- 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
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika Anda ingin melakukan autentikasi
gcloud auth login
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
- Aktifkan API yang diperlukan: Jalankan perintah ini untuk mengaktifkan semua API yang diperlukan:
gcloud services enable alloydb.googleapis.com
Masalah Umum & Pemecahan Masalah
Sindrom "Project Hantu" | Anda menjalankan |
Penghalang Penagihan | Anda telah mengaktifkan project, tetapi lupa menambahkan akun penagihan. AlloyDB adalah mesin berperforma tinggi; AlloyDB tidak akan dimulai jika "tangki bahan bakar" (penagihan) kosong. |
Keterlambatan Penyebaran API | Anda mengklik "Aktifkan API", tetapi command line masih menampilkan |
Quags Kuota | Jika menggunakan akun uji coba yang baru, Anda mungkin mencapai kuota regional untuk instance AlloyDB. Jika |
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 melewatkan 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:

Kemudian, ikuti langkah-langkah di bagian tanpa akun penagihan di bawah:
Langkah-langkah untuk terus mengakses data tanpa akun penagihan:
- Anda bisa mendapatkan file csv data (Data BigQuery) dari link repo github di atas.
- Pertama, buat Set Data BigQuery dengan menjalankan perintah di bawah dari Terminal Cloud Shell:
bq mk --location us-central1 --dataset froyo_data
- Selanjutnya, download 8 file data (file csv) dari repositori github ke direktori kerja Anda dengan menjalankan perintah berikut satu per satu:
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.allergen.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.consistsof.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.containsallergen.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.froyo_data_materialized.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.ingredient.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.product.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.suppliedby.csv
wget https://raw.githubusercontent.com/AbiramiSukumaran/raw-data-to-gold/refs/heads/main/data/froyo_data.supplier.csv
- Jalankan perintah berikut satu per satu untuk membuat tabel ini dengan data di set data yang baru Anda buat
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.allergen ./froyo_data.allergen.csv allergen_name:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.consistsof ./froyo_data.consistsof.csv product_id:STRING,ingredient_id:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.containsallergen ./froyo_data.containsallergen.csv ingredient_id:STRING,allergen_name:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.froyo_data_materialized ./froyo_data.froyo_data_materialized.csv allergen:STRING,containsallergen:STRING,ingredient:STRING,product:STRING,suppliedby:STRING,supplier:STRING,ref:STRING,md5_hash:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.ingredient ./froyo_data.ingredient.csv ingredient_id:STRING,ingredient_name:STRING,purity:STRING,moisture_content:STRING,ph_range:STRING,specific_gravity_range:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.product ./froyo_data.product.csv product_id:STRING,product_name:STRING,category:STRING,stability:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.suppliedby ./froyo_data.suppliedby.csv ingredient_id:STRING,supplier_id:STRING
bq load --autodetect --source_format=CSV --skip_leading_rows=1 --allow_quoted_newlines --quote="" froyo_data.supplier ./froyo_data.supplier.csv supplier_id:STRING,supplier_name:STRING,production_site_id:STRING,facility_grade:STRING
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 Ringkasan Cluster dan salin detail akun layanan dari sana.

5. Penyiapan Izin
Memberikan Izin BigQuery ke Akun Layanan ini
- Buka IAM & Admin > IAM.
- Klik Berikan Akses.
- Tempel alamat Akun Layanan AlloyDB ke kolom New principals.
- 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.
- Dari halaman Cluster Overview (konsol AlloyDB), klik "Edit Primary" di instance utama Anda, lalu scroll ke bawah hingga "Advanced Configuration Options".
- Buka bagian "Flags", lalu aktifkan 2 flag ke "On" seperti yang ditunjukkan di bawah:
3. Klik tombol **Update instance** dan update akan selesai dalam beberapa menit. 4. Dari halaman Ringkasan Cluster (konsol AlloyDB), klik AlloyDB Studio. 
- Hubungkan dengan database, nama pengguna, dan sandi yang Anda konfigurasi pada saat langkah Penyiapan Cepat AlloyDB.
- 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;
- Setelah berhasil dilakukan, buka panel penjelajah di sebelah kiri dan scroll ke bawah ke tabel BigQuery:

- Klik 3 titik, lalu klik "Hubungkan Tabel BigQuery".
- 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.

- 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 alih-alih 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 langsung dari database PostgreSQL transaksional kita.
Masih di AlloyDB Studio, mari jalankan kueri untuk mengetahui alergen yang ada dalam "Midnight Swirl" (pertanyaan yang sama 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 sama persis seperti yang Anda lihat di BigQuery.

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:
- Aplikasi transaksional kami (yang berjalan di AlloyDB) dapat menangani sesi pengguna yang cepat dan serentak.
- Saat memerlukan data analitis yang berat atau konteks historis (seperti detail pemasok atau pemetaan bahan yang kompleks), model ini akan membuat kueri froyo_dataschema BigQuery.
- 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.
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.