1. 總覽
在第 1 部分中,我們已使用 Knowledge Catalog 和 DataScan,成功將混亂的非結構化 PDF 轉換為 BigQuery 中乾淨、智慧且結構化的表格。現在我們有穩固的資料倉儲。
快速回顧一下,在第 1 部分的實驗室中,我們以虛構的優格連鎖店為例,將 400 個非結構化 PDF 檔案 (包含文字、表格和圖片) 轉換為結構清楚的 BigQuery 資料表,並使用 BigQuery Knowledge Catalog 和 Dataplex 自動推斷資料表之間的關係。
建構項目
在本課程中,我們將設定 AlloyDB for PostgreSQL,並執行神奇的操作:直接將 BigQuery 資料聯合至 AlloyDB。也就是說,我們的交易式應用程式可以即時查詢資料倉儲資料,不必複製或重複任何資料。
開發人員必須在這個階段提出以下問題:
「如果資料已在 BigQuery 中,為何還要加入 AlloyDB?為什麼應用程式不直接對 BigQuery 執行 SELECT 陳述式?」
原因如下:
透過 Lakehouse Federation,您可以使用 AlloyDB 的查詢引擎,在同一個介面中,為應用程式的交易和分析工作負載提供支援。您也可以在 AlloyDB 上具體化或匯入這項資料,以便在應用程式中更快存取,並使用 AlloyDB AI 和資料欄引擎。
您可以將 AlloyDB 做為交易資料庫,同時在 BigQuery 或 BigLake 中儲存大量資料。您的應用程式通常會分別與這兩個系統整合,以便存取這些不同 Google Cloud 服務中的資料。AlloyDB 的 Lakehouse Federation 可讓您使用 AlloyDB 實作的聯合查詢支援 (以外部資料包裝函式形式),透過 AlloyDB 的 SQL 介面存取 BigQuery 和 AlloyDB 資料。
我們不會建構脆弱的 ETL 管道,從 AlloyDB 查詢 BigQuery 資料,而是使用聯合查詢。AlloyDB 會做為統一端點,在需要時順暢地存取 BigQuery。
讓我們開始建構吧!

課程內容
- 如何按一下按鈕,即可設定 AlloyDB 叢集、執行個體和網路
- 如何設定擴充功能,為同盟做好準備
- 如何從 BigQuery 設定身分聯盟至 AlloyDB
- 立即測試
需求條件
2. 事前準備
建立專案
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
- 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
- 您將使用 Cloud Shell,這是 Google Cloud 中執行的指令列環境。按一下 Google Cloud 控制台頂端的「啟用 Cloud Shell」。

- 連至 Cloud Shell 後,請使用下列指令確認驗證已完成,專案也已設為獲派的專案 ID:
gcloud auth list
- 在 Cloud Shell 中執行下列指令,確認 gcloud 指令已瞭解您的專案。
gcloud config list project
- 如要驗證
gcloud auth login
- 如果未設定專案,請使用下列指令來設定:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
- 啟用必要的 API:執行下列指令,啟用所有必要的 API:
gcloud services enable alloydb.googleapis.com
常見錯誤與疑難排解
「幽靈專案」 症候群 | 您執行了 |
帳單 路障 | 您已啟用專案,但忘記帳單帳戶。AlloyDB 是高效能引擎,如果「油箱」(帳單) 空了,就無法啟動。 |
API 傳播 延遲 | 您點選了「啟用 API」,但指令列仍顯示 |
配額 Quags | 如果您使用全新的試用帳戶,可能會達到 AlloyDB 執行個體的區域配額。如果 |
3. 快速回顧第 1 部分的資料
在本節中,您需要確認從非結構化 PDF 擷取的結構化資料是否已匯入 BigQuery。如果你錯過了第 1 部分,或是沒有帳單帳戶,也沒關係,請完成下列步驟:
使用個人 Gmail 帳戶前往 Google Cloud 控制台,然後點選控制台右上角的「啟用 Cloud Shell」按鈕:

然後按照下方「沒有帳單帳戶」一節的步驟操作:
現在資料已匯入 BigQuery,接下來請繼續下一個步驟。
4. 設定 AlloyDB 叢集、執行個體和網路
您可以使用網頁版快速入門應用程式,設定 AlloyDB 叢集、執行個體和其他依附元件。您可以按照本實驗室的步驟 2 到 4 操作,按一下按鈕即可完成設定:
https://codelabs.developers.google.com/quick-alloydb-setup
建立叢集後,請前往「叢集總覽」頁面,並從該處複製服務帳戶詳細資料。

5. 設定權限
授予這個服務帳戶 BigQuery 權限
- 依序前往「IAM 與管理」>「身分與存取權管理」。
- 按一下「授予存取權」。
- 將 AlloyDB 服務帳戶地址貼到「新增主體」欄位。
- 指派下列角色:
- BigQuery 資料檢視者 (roles/bigquery.dataViewer):可讀取資料。
- BigQuery 使用者 (roles/bigquery.user):可執行查詢。
- (選用,但建議使用) BigQuery 讀取工作階段使用者 (roles/bigquery.readSessionUser):透過 Storage Read API 讀取大型資料集時,可提升效率。
6. 連線至 AlloyDB 並啟用 BigQuery 擴充功能
現在,我們要連線至新的 AlloyDB 執行個體,設定同盟擴充功能。我們將使用 AlloyDB Studio 執行這項操作。
- 在叢集總覽頁面 (AlloyDB 控制台) 中,按一下「AlloyDB Studio」。

- 使用您在 AlloyDB 快速設定步驟中設定的資料庫、使用者名稱和密碼進行連線。
- 連線後,在右側的「查詢編輯器」分頁中輸入下列陳述式,然後逐一執行:
CREATE EXTENSION IF NOT EXISTS bigquery_fdw;
CREATE SERVER bigquery_server FOREIGN DATA WRAPPER bigquery_fdw;
CREATE USER MAPPING FOR postgres SERVER bigquery_server;
- 完成後,請前往左側的檔案總管窗格,然後向下捲動至 BigQuery 資料表:

- 按一下 3 點圖示,然後按一下「連結 BigQuery 資料表」。
- 在開啟的「連結 BigQuery 資料表」彈出式視窗中,選取專案 ID 和 BigQuery 資料集名稱 (在第 1 部分中建立),您要從中查詢 AlloyDB 資料庫中的資料。

- 逐一選取每個資料表,將所有資料連結至 AlloyDB。這是為了驗證資料欄類型,確保 AlloyDB 支援這些類型。
如要使用 SQL 執行相同操作,而非透過點選方式:
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>>'
);
魔法!
我們剛在 AlloyDB 中建立「外部資料表」。這些資料表的外觀和行為與一般 PostgreSQL 資料表相同,但不會儲存任何資料。當您查詢這些資料時,AlloyDB 會立即將查詢傳遞至 BigQuery、擷取結果,然後傳回給您。
7. 在 AlloyDB 中測試同盟
讓我們確認是否能直接從交易型 PostgreSQL 資料庫查詢龐大的 BigQuery 分析資料集。
在 AlloyDB Studio 中,執行查詢來找出「Midnight Swirl」的過敏原 (與第 1 部分提出的問題相同,但這次是透過 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. 您應該會看到與 BigQuery 中完全相同的結果。

8. 清理
完成本實驗室後,請務必刪除 AlloyDB 叢集和執行個體。
這項作業應會清理叢集及其執行個體。
9. 恭喜您採用統一資料層!
請回想我們剛才完成的作業:
- 我們的交易應用程式 (在 AlloyDB 上執行) 可處理快速的並行使用者工作階段。
- 需要大量分析資料或歷來脈絡 (例如供應商詳細資料或複雜的成分對應) 時,就會查詢 BigQuery froyo_dataschema。
- 零 ETL。沒有資料管道中斷。沒有不同步的資料庫。我們在 BQ 中儲存一次,並在需要時進行運算。
現在分析和交易資料的基礎已穩固且相互連結,我們可以開始進行有趣的部分。
在第 3 部分,我們將建構位於這個架構頂端的 Multi-Agent Application,以執行 Froyo 業務營運!