1. Ringkasan
Di Bagian 1, kita berhasil mengubah PDF yang kacau dan tidak terstruktur menjadi tabel yang bersih, cerdas, dan terstruktur di BigQuery menggunakan Knowledge Catalog dan DataScan. Sekarang, kita memiliki data warehouse yang kuat.
Jika Anda perlu mengingat kembali, di lab bagian 1, kita mengambil kasus penggunaan waralaba Frozen Yogurt fiktif dan mengonversi 400 file PDF tidak terstruktur miliknya — yang mencakup teks, tabel, dan gambar — menjadi tabel BigQuery yang terstruktur dengan rapi dan memiliki hubungan yang disimpulkan secara otomatis di antara tabel tersebut menggunakan BigQuery Knowledge Catalog dan Dataplex.
Yang akan Anda buat
Dalam sesi ini, kita akan menyiapkan AlloyDB untuk PostgreSQL dan melakukan sesuatu yang luar biasa: menggabungkan data BigQuery kita langsung ke AlloyDB. Artinya, aplikasi transaksional kita dapat membuat kueri data warehouse secara real-time, tanpa menyalin atau menduplikasi data tersebut.
Anda sebagai developer harus mengajukan pertanyaan ini pada tahap ini:
"Jika data sudah ada di BigQuery, mengapa kita perlu menggunakan AlloyDB? Mengapa aplikasi tidak menjalankan pernyataan SELECT langsung terhadap BigQuery?"
Berikut alasannya:
Dengan Lakehouse Federation, 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 data dalam jumlah besar 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. Lakehouse Federation untuk AlloyDB memungkinkan Anda menggunakan dukungan kueri gabungan AlloyDB yang diimplementasikan sebagai wrapper data asing untuk mengakses data BigQuery dan AlloyDB menggunakan antarmuka SQL di AlloyDB.
Daripada membuat pipeline ETL yang rapuh untuk membuat kueri data BigQuery dari AlloyDB, kita akan menggunakan kueri gabungan. AlloyDB akan bertindak sebagai endpoint terpadu, yang dapat mengakses BigQuery dengan lancar saat diperlukan.
Mari kita mulai membangun.

Yang akan Anda pelajari
- Cara menyiapkan Cluster, Instance, dan Jaringan AlloyDB dengan sekali klik
- Cara menyiapkan ekstensi untuk mempersiapkan gabungan
- 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 diaktifkan di project.
- Anda akan menggunakan Cloud Shell, lingkungan command line yang dijalankan di Google Cloud. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

- Setelah terhubung ke Cloud Shell, Anda dapat memeriksa apakah 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
Hal yang perlu diperhatikan &Pemecahan Masalah
Sindrom "Project Hantu" | Anda menjalankan |
Hambatan Penagihan | Anda mengaktifkan project, tetapi lupa akun penagihan. AlloyDB adalah mesin berperforma tinggi; mesin ini tidak akan dimulai jika "tangki bahan bakar" (penagihan) kosong. |
Penundaan Penyebaran API | Anda mengklik "Aktifkan API", tetapi command line masih menampilkan |
Kuota yang Membingungkan | Jika Anda menggunakan akun uji coba 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 tidak mengikuti bagian 1 atau jika Anda tidak memiliki Akun Penagihan, tidak masalah, Anda dapat menyelesaikan langkah-langkah berikut dan mulai:
Buka Konsol Google Cloud dari akun Gmail pribadi Anda dan klik Tombol Aktifkan Cloud Shell di pojok kanan atas konsol:

Kemudian, ikuti langkah-langkah di bagian tidak punya akun penagihan di bawah:
Langkah-langkah untuk terus mencoba data tanpa akun penagihan:
- Anda dapat memperoleh 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 repo 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 kita memiliki data di BigQuery, mari kita lanjutkan ke langkah berikutnya.
4. Menyiapkan Cluster, Instance, dan Jaringan AlloyDB
Ada aplikasi memulai 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 sekali klik:
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 Grant Access.
- Tempelkan alamat Akun Layanan AlloyDB ke kolom New principals.
- Tetapkan peran berikut:
- BigQuery Data Viewer (roles/bigquery.dataViewer): Memungkinkan pembacaan data.
- BigQuery User (roles/bigquery.user): Memungkinkan menjalankan kueri.
- (Opsional, tetapi direkomendasikan) BigQuery Read Session User (roles/bigquery.readSessionUser): Mengoptimalkan pembacaan set data besar melalui Storage Read API.
6. Menghubungkan ke AlloyDB dan Mengaktifkan Ekstensi BigQuery
Sekarang kita akan menghubungkan ke instance AlloyDB baru untuk mengonfigurasi ekstensi gabungan. Kita akan menggunakan AlloyDB Studio untuk hal ini.
- Dari halaman Ringkasan Cluster (konsol AlloyDB), klik "Edit Primary" di instance utama Anda dan scroll ke bawah hingga "Advanced Configuration Options".
- Buka bagian "Flags", dan aktifkan 2 flag ke "On" seperti yang ditunjukkan di bawah:
3. Klik tombol Update instance dan proses update akan memerlukan waktu 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, buka panel Explorer di sebelah kiri dan scroll ke bawah ke tabel BigQuery:

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

- Pilih setiap tabel satu per satu untuk menghubungkan semua data Anda ke AlloyDB. Hal ini dilakukan agar kita 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 "Tabel Asing" 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 gabungan di AlloyDB
Mari kita verifikasi bahwa kita dapat membuat kueri set data BigQuery analitis yang besar langsung dari database PostgreSQL transaksional kita.
Masih di AlloyDB Studio, mari kita jalankan kueri untuk mengetahui alergen apa saja yang ada di "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.
Tindakan ini akan membersihkan cluster beserta instance-nya.
9. Selamat atas Unified Data Layer Anda
Pikirkan apa yang baru saja kita capai:
- Aplikasi transaksional kita (yang berjalan di AlloyDB) dapat menangani sesi pengguna yang cepat dan serentak.
- Saat memerlukan data analitis yang besar atau konteks historis (seperti detail pemasok atau pemetaan bahan yang kompleks), aplikasi ini akan membuat kueri froyo_dataschema BigQuery.
- Nihil ETL. Tidak ada pipeline data yang rusak. Tidak ada database yang tidak sinkron. Kita menyimpan data sekali (di BQ) dan melakukan komputasi saat kita membutuhkannya.
Sekarang fondasi data kita — baik analitis maupun transaksional — sangat kuat dan saling terhubung, kita siap untuk bagian yang menyenangkan.
Di Bagian 3, kita akan membuat Aplikasi Multi-Agen yang berada di atas arsitektur ini untuk menjalankan operasi bisnis Froyo.