---
# System prepended metadata

title: Google Data Engineering Professional - GCP PDE 考試心得

---

# 《Google Data Engineering Professional - GCP PDE 考試心得》
## 前言
這份筆記是我在準備 GCP Professional Data Engineer 證照時所做的小整理。我的背景是在雲端代理商擔任 AWS 架構師，因工作需求開始接觸 GCP，因此決定挑戰這張證照。雖然之前沒考過 GCP 的任何證照，但透過這次準備也建立起不少知識架構，希望對未來想考這張的朋友有幫助。

### 難度
•	難度大約 介於 AWS Associate 和 Professional 之間，比 AWS DEA 再難一點。
•	題型偏向理解 GCP 的數據處理服務與架構設計選擇。
•	如果你有 AWS 或其他雲端經驗，會很快上手。

### 準備方法
我花了大約 1 個月準備，方式如下：
	1.	前兩週：快速把手邊找到的 ExamTopics 考古題刷 1~2 遍。
	2.	後兩週：每天隨機抽 50 題複習，並記錄錯題與不熟的知識點。
	3.	考前三天：針對錯誤率高的題目重練，理解知識點優先，真的看不懂的就先記下來。
	4.	有爭議的題目不用糾結，太深的情境題不一定有單一正解，保持彈性思維。
![IMG_0655](https://hackmd.io/_uploads/By-2ANiPxl.png)
**👆自己做的錯題本** 

### 考試當天經驗
•	題數：共 50 題
•	語言：英文版
•	時間：最多考兩個小時，這次約 30 分鐘寫完
•	題型：大多是單選題，僅 2~3 題是多選
•	題目長度：不會太長，多是簡單情境題問你最佳解法
•	唯一不習慣的是字體很小，需要注意閱讀疲勞

### 小結建議
如果你有 AWS 或其他雲經驗，這張 GCP 證照可以作為擴展知識版圖的好機會。關鍵是把考古題寫熟、錯題整理清楚，配合每日練習與理解架構設計原則，基本上可以輕鬆通過！

![IMG_0654](https://hackmd.io/_uploads/BJE5eSiDee.jpg)


下面是我準備時的小小筆記，用來整理常錯的題目與不熟悉的服務，效果很好，也幫助我理清知識盲點，這邊就提供給大家參考。



## 📒 GCP 服務 
### 📙如何按照情境選擇GCP資料庫

![image](https://hackmd.io/_uploads/BJUp5NY4ex.png)

[SOURCE](https://medium.com/data-scientists-playground/google-data-engineer-%E8%AD%89%E7%85%A7%E5%88%86%E4%BA%AB-88f0dbf7c01b)
👆從前輩文章中找到的圖，蠻實用的，這張圖可以簡潔的告訴你選擇資料庫的情境與條件

### 📙 BigQuery (BQ)
這是一個GCP上的資料倉儲服務，對應的是AWS redshift，可以吸收多種資料源並用SQL語法管理，同時在銜接上後續ML和BI上也非常方便。可以說是GCP在資料處理議題上最重要的服務之一

#### 📘 內建小工具
* `BigQuery Streaming Inserts`：是一種可以即時將資料寫入 BigQuery 表格的功能。它不像傳統的批次上傳（batch load）需要等幾分鐘或幾小時，可以在幾秒內讓資料可查詢。
* `BigQuery 的 AEAD 加密`是 透過內建 AEAD.ENCRYPT 與 AEAD.DECRYPT 函數使用金鑰安全地在表內加密與解密資料，以支援欄位級保護。
* `BigQuery snapshot` 為表內部快照，僅在同一區域內生效。
* `BigQuery Omni` 可在 AWS、Azure 上直接查詢資料，利用 Google Cloud 控制面並在當地區域運行計算，以減少跨雲資料移動。
* `ML.EVALUATE Clause` 用於評估機器學習模型的效能
* `TRANSFORM Clause` 則用於在推論前進行資料前處理與轉換。
* `Turbo Replication` 可在幾分鐘內自動將資料從主要地區同步到跨地區的備份，滿足嚴格的 RPO（恢復點目標）需求。
* `BigQuery Time Travel ` 可查詢表格在過去某時間點的狀態（預設最多 7 天）
* `BigQuery Reservations` 是一種讓你預先購買處理資源（slots）來執行查詢，以實現固定費率、可預測成本的 BigQuery 計費模式替代方案。
#### 📘 可串聯的其他服務
* `Analytics Hub` 是 BigQuery 的資料分享平台，讓組織可安全且高效地在 BigQuery 中分享及交換分析資料集。
* `Dataform` 是一個讓你在 BigQuery 等資料倉儲上，**以 SQL 管理、排程及監控 ELT pipeline** 與資料品質驗證的工具。
* `Datastream` 是全代管資料複製CDC服務，支援從資料庫（如 MySQL/PostgreSQL）串流同步資料到 BigQuery 或 Cloud Storage，不會對 Cloud SQL 資料庫造成查詢負載。
* `Connected Sheets` 是 Google Sheets + BigQuery 的整合工具

#### 📘 其他考點
* BigQuery 是 `append-only` 儲存系統，最佳寫入方式是 `INSERT`，並不適合頻繁使用 UPDATE 或 MERGE → 成本高、效能差
* `Wildcard Tables`：允許你一次查詢多個表，只要它們名字有共同前綴
* BQ不適合ACID架構，在GCP上適合的有`cloud spanner`、`cloud SQL`
* 雖然 BigQuery 是理想的分析引擎，但不適合高頻 API 查詢因為會慢且昂貴。一般推薦的做法會是`冷數據用 BigQuery，熱資料走 SQL`
* `Ad-hoc queries` 是使用者即時撰寫並執行的臨時查詢，通常用於探索或快速分析資料，而非預先排定或自動化執行。
* BigQuery 為分析型資料倉儲，設計偏向`去正規化 (denormalization)`，以提升查詢速度、減少 join 成本。

### 📙 Dataflow
Google Cloud Dataflow 是一個**全託管**的資料處理服務，基於 Apache Beam 架構，支援**批次與串流資料處理**，並能以相同的程式碼邏輯處理兩者。

#### :blue_book: 相關考點
* `fromQuery` 操作允許直接將 **BigQuery SQL 查詢結果** 作為資料來源，輸出為一個 PCollection。
* `PCollections` 是一種**不可變的分散式資料集**，用來在資料處理管線的各階段之間傳遞資料。
* `Flatten 轉換操作` 可將多個 PCollection 合併為一個，方便統一處理。
* 使用 `-drain` 旗標可讓串流處理流程**優雅地關閉**，會處理所有尚未完成的資料後才終止。
* `Dataflow Prime` 是進階功能，提供 **Right Fitting** 機制，自動選擇最適合的 VM 類型以優化效能與成本。
* `Limited-data-loss` 模式允許在**有限資料遺失風險下繼續執行資料管線** ；`Force-data-loss` 模式則是優先考量完成管線任務，即使可能會**遺失部分資料**。
* `Reshuffle` 是一個特殊的轉換（Transform），用途是 打斷資料處理階段（fusion），使資料能在不同的工作節點間重新分配，以提升處理彈性與效能。
* `DoFn` 是在 Apache Beam 中用來定義單一處理元件的抽象介面，Dataflow pipeline 執行後，`DoFn` 會在 worker 上執行以處理資料元素。
* `Dataflow network tag` 是 Google Cloud 建議用於 Dataflow worker VM 的標籤，以便透過防火牆規則精準控制 Dataflow worker 間互相通信所需的網路存取權限（如 TCP 12345-12346），實現安全且符合最佳實務的網路管理。
* 在 Dataflow 的 DoFn 中加入 `exception handling block`，表示你在處理每筆資料時使用 try/except 區塊捕捉錯誤，避免整個 pipeline 因單筆異常而失敗

#### :blue_book: 針對stream資料處理
* Dataflow 提供原生 Kafka 資料來源支援**，可直接從 Kafka 擷取串流資料。
* `Watermarks` 是用來表示事件時間（event time）進度的指標，能夠協助偵測延遲抵達的資料。
* 在處理無界（unbounded）資料的串流管線中，必須使用 **Windowing**，將資料依時間區段分片（例如每小時一批）。預設為 Global Window（無限制累積）。
#### :blue_book: Window（視窗）
在資料處理的機制中，Window 是用來將資料根據「事件時間」切分成一段段時間範圍（視窗）的機制，以便對流式資料進行分段統計或聚合。
它能將無界（Unbounded）資料流轉換為有界的可處理區塊，使每段時間的資料可以各自統計、計算與觸發輸出。
| 視窗類型                        | 功能                          | 補充說明                                              |
| --------------------------- | ------------------------------ | ------------------------------------------------- |
| **Global Window**           | 所有資料都被當作一個不分時間的單一視窗來處理。        | 預設視窗策略，無時間分段，需搭配 trigger 才會產生輸出。                  |
| **Fixed (Tumbling) Window** | 每隔固定時間切出不重疊的視窗來統計資料。           | 例如每 5 分鐘產出一個結果（5:00-5:05、5:05-5:10...）            |
| **Sliding Window**          | 每隔一段時間產出一個視窗，視窗可重疊，資料可能落入多個視窗。 | 例如每 1 分鐘統計最近 5 分鐘的資料。                             |
| **Hopping Window**          | 以固定的間隔移動視窗，視窗大小與跳躍間隔可不同，會部分重疊。 | 滑動類似 Sliding，但定義較嚴謹（常與 Sliding 混用）                |
| **Session Window**          | 當資料流有間隔一段時間沒出現時，就結束一個視窗。       | 適合追蹤使用者行為的 session，例如「15 分鐘內無操作就視為一個 Session 結束」。 |

![image](https://hackmd.io/_uploads/r1a8cZRUll.png)
👆**表格圖解**
### 📙 Bigtable v.s. Datastore
| 特性                     | Cloud Bigtable                                                                 | Cloud Datastore                                                      |
|--------------------------|-------------------------------------------------------------------------------|---------------------------------------------------------------------|
| 資料庫類型               | 高性能、橫向擴展的 NoSQL 資料庫                                               | 可擴展的 NoSQL 文件資料庫                                            |
| 資料儲存方式             | 儲存數十億筆列（rows），PB 等級資料                                           | 每筆資料以文件（document）存在，儲存在集合（collection）中           |
| 適用場景                 | 大規模、高吞吐量、低延遲的時間序列或交易型數據儲存；IoT、點擊流分析            | 需要強交易一致性的應用，如 POS 系統                                  |
| ACID            | 有限支援                                                                         | 支援                                                               |
| 適合用途                 | 低延遲 NoSQL，時間序列、IoT、點擊流分析                                       | 強交易一致性需求，如 POS 系統                                       |

### 📙 Dataproc vs Dataprep vs Dataflow
| **項目**   | **Cloud Dataproc**                           | **Cloud Dataprep**        | **Cloud Dataflow**                  |
| -------- | -------------------------------------------- | ------------------------- | ----------------------------------- |
| **定位**   | 託管型 Hadoop / Spark / Hive 叢集服務               | **No-Code**資料清理與準備工具             | 可程式化批次與串流資料處理                       |
| **使用方式** | 自行管理叢集，提交 Spark / Hadoop / Hive Job          | GUI 拖拉產生轉換 Recipe         | 撰寫 Apache Beam/Python/Java pipeline |
| **適用對象** | 大數據工程師（Spark / Hadoop 經驗者）                   | 分析師 / 無程式背景資料清理           | 資料工程師                               |
| **資料規模** | 大 (TB-PB) 、Batch                             | 小~中規模探索與清洗              | 大規模Batch+Streaming                        |
| **支援模式** | 批次（Spark Streaming 可處理串流）                    | 批次                        | 批次 + 實時串流                           |
| **擴充性**  | 高，但需要管理叢集資源與費用                               | 中，視 Dataflow 運算資源而定       | 高，完全 serverless                     |
| **使用場景** | - 現有 Spark / Hadoop 作業遷移<br>- Hive/Presto 報表 | - 無程式碼快速清洗資料<br>- 互動式資料探索 | - 建立穩定 ETL 管線<br>- 實時串流運算與窗口處理      |

* `Dataproc Metastore (DPMS)` 是 Google Cloud 上的全代管 Hive Metastore，讓 Spark、Hive、Presto 等服務能共用表格與分區 metadata，簡化在雲端管理資料湖的 schema 與目錄管理。
* `ParDo` 是 Apache Beam 的核心轉換，用於對 PCollection 中每個元素套用自訂處理邏輯，支援彈性拆分、條件邏輯與 side outputs。

### 📙 Big Lake
#### :blue_book: 基本介紹
BigLake 是 Google Cloud 上的 統一儲存表格層，可同時支援在 Cloud Storage、BigQuery、或外部儲存中的資料進行統一查詢與控管。

* 為跨格式與跨儲存系統設計的表格層（支援 BigQuery、Cloud Storage、Spark 同時處理）
* 統一的表格層，支援跨儲存（GCS/BQ）與跨引擎查詢（BQ/Spark/Trino）
* 儲存格式：Parquet / ORC / Avro（強調非結構化結構化皆可）
#### :blue_book: 與BQ差別
* BigQuery：是 完整的數據倉儲系統，所有資料需先載入進去，擁有最佳效能、完整治理能力。
* BigLake：是一種 延伸功能，讓你可以像用 BigQuery 一樣查詢 GCS 中的資料，但資料不必載入，且可透過 BigQuery 的權限與治理系統控管。

### 📙 Google Cloud Datalab
* Google Cloud Datalab 是一個互動式的開發工具，基於 Jupyter Notebook，讓使用者能在 Google Cloud 上進行資料探索、視覺化與機器學習實驗。
* 支援與 BigQuery、Cloud Storage、TensorFlow 等 GCP 服務整合，讓資料科學家與工程師能快速撰寫 Python 程式、進行資料分析與模型訓練。不過，Datalab 現已逐步被 Vertex AI Notebook 等更現代的工具取代。



### 📙 Google Cloud Dataproc 
是一項由 Google 提供的全託管型服務，可讓你在 Google Cloud 上快速部署、管理和擴展 Apache Hadoop、Spark、Hive 和其他大數據工具。
* 簡化了傳統Cluster的建立與維運，只需數分鐘即可啟動一個完整的處理Cluster
* 支援使用 Cloud Storage 做為主要儲存空間，避免 HDFS 的容量限制。
* Dataproc 適合處理像是 ETL、資料轉換、機器學習訓練與資料分析等工作，且具備彈性計費、與 BigQuery、Cloud Composer 等服務整合良好，是雲端環境中處理分散式大數據工作的高效選擇。
* 

### 📙 Cloud Composer
Cloud Composer 是 Google Cloud 上用來「排程與管理資料處理工作流程」的工具，底層是用 Apache Airflow 打造的。簡單說，它就像「智慧排程大師」，幫你 自動依照時間或條件，定時執行 ETL、資料清洗、機器學習訓練等流程。
* 雲端排程工具：Cloud Composer 用來自動排程與執行資料處理工作流程，不用手動每天跑流程。
* 底層是 Airflow：用 DAG（流程圖）定義先做什麼再做什麼，方便管理多步驟資料流程。
* 自動化工作流程：例如每天自動跑資料清洗、匯入 BigQuery、跑分析、寄報表。
* 視覺化監控：可在網頁介面看執行進度、錯誤重跑，不怕流程漏跑。
* 整合 Google 生態：和 BigQuery、Cloud Storage、Dataflow 等服務無縫串接，提升資料工程效率。
* Cloud Composer 是用於編排多步驟工作流程（如 ETL pipeline）的託管 Airflow，而 Cloud Scheduler 是類似 cron 的時間驅動排程服務，用於觸發單一任務或 HTTP/Pub/Sub 呼叫。
*  Cloud Composer 是託管型服務，不需要或不應直接部署容器到其 GKE cluster
*  Cloud Composer 2 支援 Airflow REST API，用來觸發 DAG、查詢狀態等
*  因為 Composer 在 private VPC，需透過 Private Service Connect (PSC) 暴露 web server API 端點給 VPC 內部



### 📙Cloud Spanner vs BigQuery vs Cloud SQL 對比速記表
| 項目             | BigQuery                       | Cloud Spanner                | Cloud SQL                      |
|------------------|--------------------------------|-----------------------------|--------------------------------|
| 定位             | 分析型 OLAP 資料倉儲           | 全球分布式 OLTP DB          | 區域型 OLTP RDBMS              |
| 主要用途         | 大數據分析、BI 報表            | 全球高一致交易、事務型應用  | 中小型交易應用                 |
| 擴充性           | 幾乎無限水平擴充               | 橫向擴充（高寫入/讀取吞吐） | 垂直擴充為主，橫向有限          |
| SQL 支援         | ANSI SQL                       | ANSI SQL                    | 完整 SQL (Postgres, MySQL)     |
| 適合工作負載     | TB~PB 分析查詢                 | 高寫入速率、全球交易        | 網站後端 DB                    |
| 地理分布         | 儲存地區選擇後固定              | 全球多區域自動同步          | 區域限定                        |
| 延遲             | 秒級至分鐘級                   | 毫秒級                      | 毫秒級                         |
| 常見使用情境     | 分析 IoT/應用產生的大數據      | 全球金融/遊戲交易系統       | CMS、ERP、電商中小型站點        |

* Cloud SQL 適合處理 OLTP 即時交易寫入，但不適合高吞吐量串流資料 ingestion，建議串流使用 Pub/Sub + BigQuery 或 Bigtable。
* 出現跨區域(Global)的應用情境更偏向用`cloud spanner` 而不是 `cloud SQL`
* `Cloud SQL` 不支援 `cascading replicas`，通常在 `PostgreSQL` 開源環境中用




### 📙 Dataplex
Dataplex 是 Google Cloud 的資料湖管理與治理平台，用於統一管理跨 Cloud Storage、BigQuery 等資料資產，提供治理、自動分類、資料品質監控、資料目錄與安全存取控制，協助企業打造可治理的資料湖和 Data Mesh。
* 1️⃣ Lake (虛擬湖)
    * Dataplex 中最高層管理單位。
    * 通常對應一個 Domain 或 Data Product。
* 2️⃣ Zone (分區)
    * Lake 內的邏輯分層：
    * Landing Zone：原始進來的原始資料。
    * Raw Zone：輕微清洗的資料。
    * Curated Zone：已加工整理好的資料可供分析。
    * 可套用不同的治理規則和資料品質規則。
* 3️⃣ Asset (資產)
    * Zone 中掛載的實際資源，如：
    * Cloud Storage Bucket 路徑
    * BigQuery Dataset
    * 資料存放的實體位置。

### 📙 Cloud Vision v.s. Looker Studio
| 工具                | 功能類型    | 適合對象         | 主要用途             |
| ----------------- | ------- | ------------ | ---------------- |
| **Cloud Vision**  | AI 圖片分析 | 開發者、AI 應用    | 圖像辨識、OCR、標籤、安全審查 |
| **Looker Studio** | 資料視覺化   | 商業分析師、非技術使用者 | 建立報表、儀表板、視覺化資料探索 |

### 📙 其他GCP服務
* Google Cloud Pub/Sub: 一個即時訊息傳遞服務，讓資料可以從發送端可靠地傳遞到接收端，即使兩邊不在同一時間運作也沒問題。  
* Google Cloud Logging（原 Stackdriver Logging）: 集中管理與分析 GCP 各服務的日誌，能即時搜尋、監控與觸發警示，是 DevOps 團隊追蹤系統行為的好幫手。  
* Google App Engine Application: 一個全託管、無需管理伺服器的應用平台，開發者只需專注寫程式，系統自動處理擴展、流量與安全。  
* Google Data Studio 360: 一個資料視覺化工具，可整合多個資料來源製作互動式報表與儀表板，幫助企業做出更快的資料決策。  
* User vs. Service Account: User 是給人用來登入管理資源的帳號，而 Service Account 則是給系統與程式用來自動執行任務的帳號，方便權限控管與自動化操作。  
* Analytics Hub: BigQuery 的資料分享平台，允許第三方查詢你的資料集而不需複製資料，維持效能同時降低儲存成本。  

### 📙 Cloud Data Loss Prevention (Cloud DLP)

Google Cloud Data Loss Prevention (Cloud DLP) 是一項強大的**資料保護與敏感資料辨識服務**，可用於**發現、分類、遮罩、加密、刪除或轉換敏感資料**，如個資 (PII)、信用卡、政府識別號碼等。
#### 使用方式：
* **API (即時分析)**：適用於 Web app / API server 資料檢查與處理。，可處理文字、JSON、資料欄位等。
* **DLP Job (批次掃描)**：支援 GCS、BigQuery、Datastore **批次掃描**。適用於資料湖、倉儲掃描敏感資料的分類與稽核。
* **與 Dataflow 結合**：搭配 Apache Beam，可處理大型串流或批次資料。

`支援 FPE（format-preserving encryption）：加密後長得像原始資料（例如：9 位數字仍是 9 位數） (可還原加密）`
#### 敏感資料處理：

* **🔍 資料偵測**：自動掃描資料並偵測內建資訊類型 (infoTypes)，例如：姓名、電子郵件、電話、信用卡、SSN 等。
* **🕵️ 敏感度評分**： 根據偵測到的敏感資料，提供風險指標 (likelihood score)
* **🎭 遮罩 (Redaction)**：例如把 `123-45-6789` 變成 `***-**-6789`。
* 🔐 加密 / FPE (格式保留加密)：加密資料，同時保留格式，方便資料在系統中繼續使用。



### 📙 -- GCP相關的零碎考點
*  Google Cloud Pub/Sub 中「acknowledgement deadline」是指 subscriber 必須在此時間內回覆 ack（確認收到）的時間限制。
* pub/sub中 dead-letter queue 僅捕捉「未被 ack」且超過最大重試的訊息；如果遇到ack錯誤的情境，在部署前建立 snapshot再使用 Seek 操作回到 snapshot 時間點是較推薦的做法。
* Pub/Sub 的 pull 是由訂閱者主動拉資料，push 則是由 Pub/Sub 自動把訊息送到指定的 endpoint。而 Push 使用 HTTP 並行發送，無法保證訊息處理順序
*  壓縮（如 Avro） 通常BigQuery 不會直接讓查詢變更快。
    *  BQ 查詢效能主要取決於：
        1. 列式儲存設計（Columnar Storage）
        2. 分區與分桶設計（Partitioning / Clustering）
        3. 掃描資料量（bytes scanned）
    * 壓縮檔案（如 Avro）的優點在於：
        1. 減少上傳時所需頻寬和儲存空間
        2. 上傳至 BQ 時較有效率（因為支援列式壓縮格式)
`Avro file`：一種支援資料壓縮與 schema 嵌入的二進位列式儲存格式，適合大數據管線高效傳輸與儲存。
* Cloud Composer 用於管理和自動化複雜的工作流程，Cloud Scheduler 則用於定時觸發單一任務或作業。
* Storage Transfer Service 是 透過網路將資料從雲端或 HTTP 移轉到 Cloud Storage 的線上服務，而 Transfer Appliance 是 透過實體設備離線搬移大量資料到 Google Cloud 的硬體解決方案。
* `Cloud Storage FUSE` 是一種工具，讓你可以將 Google Cloud Storage bucket 掛載成類似本地磁碟的檔案系統，用傳統檔案操作方式（如 cp, ls）讀寫雲端資料。
* gsutil（適合大型檔案搬遷，直接到 Cloud Storage）； Storage Transfer Service，但針對來源是其他雲或 HTTP URL 比較有優勢。
* Cloud Interconnect 是 從本地資料中心到 Google Cloud 的專線連接服務，可提供穩定且低延遲的私有網路通道。
* Cloud Deployment Manager 是 Google Cloud 的基礎設施即程式碼（IaC）服務，用於以 YAML/模板方式自動化建立和管理 GCP 資源。
* Firebase Cloud Messaging 是 Google 提供的免費推播服務，可讓你向 iOS、Android 和 Web 應用即時傳送通知與資料訊息。
* **VPC Service Control**: Google Cloud 的資料邊界保護機制，用來防止敏感資料被未授權的專案或外部來源存取，即使 IAM 設定錯誤也能防止資料外洩。

```
╔════════════════════════════════════╗
║       **VPC Service Controls**     ║  ← 安全「邊界 perimeter」
║ ╔═══════════════╗   ╔════════════╗ ║
║ ║   Project A   ║   ║  Project B ║ ║
║ ║  [Pub/Sub]    ║   ║  [Compute] ║ ║
║ ║  [BigQuery]   ║   ║            ║ ║
║ ╚═══════════════╝   ╚════════════╝ ║
╚════════════════════════════════════╝
    ↑       ↑
    │       └───── 外部專案、使用者、API CALL
    │
     ✅ **只有 Project A 內部服務能互相存取**
     ❌ **Project B、外部無法 API 調用、跨專案讀取資料**
```
* `Google Cloud network tag` 是用來套用防火牆規則或路由規則的自訂標籤，可指定給特定 VM 實例，實現精細化網路控管。
* GCS的四種類型：Standard 適合頻繁存取，Nearline 適合每月存取，Coldline 適合每季存取，Archive 則適合備份與幾乎不取用的長期保存資料。
* `Private Google Access` ：允許 無外部 IP 的 VM 在 VPC 中存取 Google APIs 和服務（例如：BigQuery、Cloud Storage），而無需透過公網。
* `PSC (Private Service Connect)` 是 Google Cloud 的私有連線機制，允許在 VPC 內安全地存取 Google APIs 或第三方服務，而不經由公共網路。
* `Data Fusion` 是 Google Cloud 上的可視化資料整合工具，可讓你透過拖拉介面輕鬆設計 ETL/ELT 資料管線，無需撰寫程式碼。

## 📒 資料處理觀念
### 📙 資料科學相關名詞
* Side-outputs 就是讓同一個流程可以同時輸出多條不同用途的資料流 ; Side-inputs 就是讓處理流程在處理每筆資料時，同時讀取額外的小資料（例如參考表、參數值）。
* TABLE_DATE_RANGE() 是 Legacy SQL 專用的函數，用來查詢一段時間內命名為 date-suffixed 的多個表
```sql=
SELECT *
FROM TABLE_DATE_RANGE([project.dataset.app_events_], 
                      TIMESTAMP('2025-05-23'), 
                      TIMESTAMP('2025-06-22'))
```
* Global Unique Identifier (GUID 全域唯一識別碼）是一種用來唯一識別資料物件的字串識別碼，通常以 128 位元的格式存在，例如 3f2504e0-4f89-11d3-9a0c-0305e82c3301。GUID 被廣泛應用於分散式系統中，因為它能確保即使不同系統、不同地點產生的識別碼也不會重複
*  **熱點集中**：固定row key(A01、A02)會導致bigtable大量讀取或寫入操作都集中在單一Node造成負載過高，效能下降。因此應該分散在不同節點(A#A01、F#A02)


### 📙分區的適用場景
#### 1. 時間分區（DATE/TIMESTAMP）
- 最常用於事件資料、日誌、交易紀錄等。
- 適合查詢「最近 7 天」、「最近 30 天」、「過去 1 年」等時間範圍的場景。
#### 2. 整數範圍分區（Integer Range Partitioning）
- 適用於以數值 ID（如 user_id、region_code）進行範圍查詢的需求。
- 例如：經常查詢 ID 在 1000–2000 之間的資料。
#### 3. 載入時間分區（Ingestion-time Partitioning）
- 當沒有可用欄位可作為分區時，使用資料載入到 BigQuery 的時間作為分區依據。

* Partition 是根據「1個」欄位將資料表拆分成多個分區以減少掃描資料量，適合按時間或範圍查詢；Clustering 則是在分區內根據「多個」常被過濾的欄位進行排序，以進一步加速查詢和減少掃描成本。


### 📙 Data Mech
資料網格（Data Mesh）是一種架構方法，旨在解決集中式數據架構（如數據倉庫和數據湖）在擴展性和數據管理方面遇到的挑戰。 它強調將數據所有權和管理權下放給各個業務領域，並鼓勵建立自助式數據基礎設施，讓各個領域的團隊能夠獨立地訪問和使用數據，從而提高數據的可用性和價值。 

### 📙 資料處理其他考點
* `Avro` 是一種由 Apache 開發的資料序列化格式(BigQuery適合用)，廣泛應用於大數據處理框架（如 Apache Hadoop、Spark、Google Dataflow）。它支援結構化資料的高效編碼與內嵌 schema（模式）定義，讓資料傳輸與儲存既節省空間，又保有結構資訊。(可隨時間修改欄位定義）
* `tape archive (TAR) file.` ：TAR 是一種檔案打包格式，用來將多個檔案集合成一個單一檔案，方便傳輸或備份，內容本身未壓縮但可再結合 gzip 等壓縮工具使用。
* 在 `Bigtable` 或類似 NoSQL 資料庫中：
    * rowkey 是用來唯一識別每一列資料的鍵
    * column data 是資料欄位的名稱與值組合，
    * data point 通常指的是每筆實際儲存的觀測或測量資料。
    ```bash
    sensorA-0001#20250724T060000Z 
    #由 裝置 ID（sensorA-0001） 與 ISO 8601 時間戳（20250724T060000Z）
    ```

### 📙 -- 資料處理其他觀念
* `Pig` 是為處理複雜 ETL 工作設計的高階平台，執行在 Hadoop 上
* 需要自主管理、長期保留與完整控制用 Kafka，需要無維運、自動擴充與快速上線用 Pub/Sub。
* `retain-acked-messages` 是 Pub/Sub 訂閱設定，用來指定即使訊息已被確認（acked），仍保留訊息供日後查詢或重播。
* `ParDo transform` 可在 pipeline 中平行處理每個元素進行轉換，而 SideInput 是讓 ParDo 在處理時能讀取額外的輔助靜態資料作參考。
* `JDBC driver` 是 Java Database Connectivity 的驅動程式，用於在 Java 應用中透過標準 SQL 與資料庫進行連線與互動。
* `Crypto-deletion`（加密刪除）：不是直接刪除資料，而是透過銷毀加密金鑰使資料無法被還原解密，以達到「刪除效果」
* `TPT` 是 Teradata 的高效資料匯入匯出工具，可支援並行作業以加速資料在 Teradata 與其他系統之間的搬移。
* `Pseudonym（偽名化）`是將敏感資料（如姓名、Email）轉換為不可辨識但可重複對應的代碼，以保護隱私同時保留資料的可關聯性（如可做 JOIN）。
* `Normalization（正規化）` 是資料庫設計的基本原則，目的是：消除資料重複、改善查詢效率、提升彈性與資料一致性
* 資料處理瓶頸問題：
* 
| 資源瓶頸類型                  | 解法                       |
| ----------------------- | ------------------------ |
| 磁碟 I/O 慢（shuffle、spill） | 使用 PD/HDFS 儲存中繼資料，增加磁碟大小 |
| 網路 I/O 慢（GCS 或跨區）       | 增加 vCPU，改用高網速機型（如 N2、C2） |
* `DDL`是資料定義語言（Data Definition Language）的縮寫，是SQL語言中的一部分，用於定義資料庫結構和物件，例如建立、修改或刪除資料表、檢視、索引等。
* `Stale reads` 是指使用「過去某個時間點的資料快照」，來提升效能與降低延遲。優點是速度快，但缺點是：資料可能不是最新的
* `Batch the job into ten-second increments.`表示將工作資料在管線中每 10 秒收集成一批再處理，以減少服務呼叫頻率並降低系統壓力。

![image](https://hackmd.io/_uploads/ryMVPvNDel.png)
[**SOURCE**](https://blog.algomaster.io/p/sharding-vs-partitioning)
👆**Partitioning跟Sharding的差別**
* `reverse timestamp` 表示 讓最新資料排在前面 
* `Partitioned table` 是在**同一張表中依特定欄位自動分區**以提升查詢效率，而 `sharded table` 則是依時間等規則**手動建立多張表**（如 `table_20240722`），管理與查詢更複雜。
* Sharded tables 是按照日期或規則分成多張獨立資料表； single partitioned table 是一張表中根據欄位（如日期）分區，更利於查詢與管理大型時間序列資料
* `Cascading replica` 是指從一個 read replica 再建立另一個 read replica，而不是直接從 primary 複製，形成多層複製鏈。

### 📙 串流資料處理

#### 📘 Apache Kafka 
* Apache Kafka 是一個 分散式、高吞吐量、可擴展的事件串流平台，
用於：
    * 即時接收、儲存、發布和處理大量串流資料（如日誌、事件、交易流）
    * 作為 事件驅動架構和串流資料管線的核心組件
* 廣泛應用於 即時分析、監控、事件驅動微服務
* 📗：一個電商網站可以使用 Kafka 收集用戶點擊事件、訂單資料等即時推送到分析平台進行即時推薦或監控。

##### 📘 相關服務
* `Kafka I/O` 是 Apache Beam / Dataflow 的一個內建連接器，可讓 Dataflow 直接從 Apache Kafka 讀取（consume）或寫入（produce）資料流，實現流式處理與管線串接。


## 📒 ML & Big Data相關概念
### 📙 GCP 在這個AI/ML的相關服務
#### 📘 Dialogflow
Dialogflow 是 Google Cloud 提供的 對話式 AI 平台，用於構建 聊天機器人 (Chatbot) 和 語音助理 (Voice Assistant)，可解析使用者自然語言輸入（文字或語音）並根據使用者意圖提供回應或觸發後端動作。
* 自然語言理解 (NLU)： 解析使用者輸入文字或語音，提取 意圖 (Intent) 與 參數 (Entities)。
* 多語言支援： 支援超過 20 種語言與方言。
* 多平台整合：可直接部署至 Google Assistant、LINE、Facebook Messenger、Telegram、網站嵌入 等。

#### 📘 Vertex AI 
是 Google Cloud 的機器學習平台，專門設計來訓練與部署基於 TensorFlow、PyTorch、XGBoost 等框架 的模型，並整合了 AutoML、Jupyter Notebook、模型管理與 MLOps 功能。

* 並不支援直接執行 Spark ML pipeline

#### 📘 HDFS (Hadoop Distributed File System) (大數據相關)
* HDFS 是 Hadoop 分散式檔案系統，專為：
    * 儲存與管理超大型資料集（PB 級）
    * 在多台伺服器上分散儲存資料
    * 與 Hadoop MapReduce / Spark 等大數據運算框架搭配運作
* 適合 批次處理資料（Batch Processing） 場景，如 ETL、統計分析
* 📗：一家電信公司每天收集數十億條通話記錄，會將資料存放在 HDFS 上，再利用 Hadoop/Spark 進行批次統計分析和報表生成。
* Standard Persistent Disk 提供較低成本與穩定效能，適合順序 I/O；SSD Persistent Disk 則提供更高 IOPS 和低延遲，適合高效能、隨機存取工作負載。


#### 📘 其他
* `Cloud Vision AutoML (AutoML Vision) `可直接上傳 有標記資料 進行模型訓練，無需撰寫程式即可建立客製化影像分類模型。
* `Cloud Vision API` 提供通用的影像分析（標籤偵測、物件偵測、文字辨識）
* `Cloud TPUs `是 Google 為加速 TensorFlow 等深度學習訓練與推論設計的專用硬體，而 GPU 則是可通用於各類運算加速（深度學習、影像處理等），支援 TensorFlow 完整運作，包括 GPU 與 CPU 混合計算
* 可將 Spark 處理後的資料匯出（例如 CSV 或 TFRecord）
* 可以使用 Vertex AI 訓練 TensorFlow / PyTorch 模型


### 📙 AI/ML/BigData零碎觀念
* `強化學習（Reinforcement Learning）`：透過「不斷與環境互動」來學習哪種行動能帶來最大獎勵，類似訓練動物或玩遊戲。
* `Synthetic feature` 是從現有特徵中經過轉換、組合或計算而產生的衍生特徵，用來提高機器學習模型的表現。
* `Spark MLlib` 是 Apache Spark 提供的分散式機器學習函式庫，支援分類、回歸、群集、降維等模型訓練與預測。
* `HiveQL` 類似 SQL，設計目的是讓使用者以類 SQL 方式查詢大數據
* `Entity Analysis` ：能從一段文字中擷取出具體的實體（Entity）：如人物、地點、組織、主題、產品等
* `L1` 與` L2 正規化`是防止模型過度記憶訓練資料（過擬合）的方法。L1 正規化會讓部分參數變成0，用於做特徵篩選；而 L2 正規化則是讓參數變小但不會變成零，平均分散權重大小。簡單來說，L1 幫你挑出關鍵特徵，L2 讓每個特徵都保持適當影響力。
* `Multi-cluster routing（多叢集路由）` 是指讓資料請求可以自動分配到多個叢集（cluster）處理，以提升服務穩定性與可用性的技術
* `One-hot encoding`：將分類變數轉換為多個二進位欄位，當資料屬於該類別時該欄為 1，否則為 0，用於讓模型能處理文字類別資料。
* `過擬合（Overfitting）`：模型在Train資料表現很好，但在新資料表現差，因為學到了太多訓練資料中的雜訊；`欠擬合（Underfitting）`：模型在訓練資料和新資料上表現都不好，因為模型太簡單無法捕捉資料中的重要模式。
* Overfitting（過擬合）：訓練誤差 << 測試誤差；Underfitting（欠擬合）：訓練誤差 ≈ 測試誤差且都很高
* `Train-serving skew`： 訓練資料與預測時使用資料的特徵處理不一致，導致模型表現不佳。
* `Feedforward Neural Network（前饋神經網路）`：資料只向前流動，沒有記憶過去的輸入；`Recurrent Neural Network（RNN，循環神經網路）`：資料會循環流動，有記憶性，可處理時間序列或有順序關係的資料。
* 大數據處理是為了清理、轉換與分析大量資料以快速取用洞見，支持即時決策與機器學習應用，而非儲存資料。
* Snapshot 是資料在相同地區（region）內的邏輯快照。若地區發生故障，snapshot 資料仍會無法存取 → 不符合容災需求


## 📒 零碎知識點
* `BigQuery` 本身不保證去重（除非透過特定查詢處理）
* `BigQuery`是一個分析型資料倉儲服務，不適合做即時交易處理（OLTP）
* 把資料拆分到不同的 table 或 dataset，有助於設計細粒度權限（例如 Dataset A 是 HR 用，Dataset B 是 Finance 用）
* `SFTP`：SFTP（Secure File Transfer Protocol）是一種透過 SSH 加密通道安全傳輸檔案的協定，常用於將資料安全地從本地端傳送到遠端伺服器。 
* `S3-compatible storage endpoint`：S3-compatible storage endpoint 是一種模仿 AWS S3 API 的儲存服務介面，可讓工具或應用程式使用相同協定存取非 AWS 儲存系統。
*  `ACID`：資料庫交易處理的四大特性：原子性（Atomicity）、一致性（Consistency）、隔離性（Isolation）、持久性（Durability），用來確保資料處理的可靠性與正確性。
*  `Data skew` 指的是資料分佈極度不平均的情況，常導致某些工作節點負載過重、處理效率下降。
 *  Table 是實際儲存資料的實體，而 view 是查詢語句的虛擬結果集，不儲存資料，只是查詢邏輯的封裝。
* ` Materialized View` 是具備快取查詢結果的實體化視圖，查詢速度快；View 則是每次查詢都即時執行原始 SQL，沒有快取，速度較慢。
* `ANSI SQL` 是由美國國家標準協會制定的結構化查詢語言標準，用來查詢與操作關聯式資料庫，是許多 SQL 實作的共同基礎。
* `Flat-rate pricing` 模式：是專為解決「on-demand slots 不足」而設計的，允許你購買固定數量的 專用查詢槽（slots）
* `Data Studio` 預設會啟用「快取 (Caching)」來加快查詢速度與減少 BigQuery 查詢成本。預設快取時間：最多 1 小時
*  `LAG()` 在當前資料列中 取得同一分組內「前 N 筆資料」的欄位值 ; `ROW_NUMBER()`在當前資料列中 計算同一分組內依排序順序產生的「流水號」
*  `Interactive BQ Queries`（互動式查詢）：執行時會立即排入 BigQuery 排程並馬上開始執行Batch BQ Queries（批次查詢）：將查詢排入佇列，系統會在 24 小時內自動執行
*  在 `BigQuery` 中，「專用查詢槽（slots）」可以想像成資料庫的工作席位，每個 slot 就像一個負責計算的工人，會幫你處理查詢計算的工作。`2K concurrent on-demand slots`是指 BigQuery 在按量計價（on-demand）模式下，當你送出查詢，BQ 會盡量幫你在後台分配最多 2000 個計算資源同時幫你拆解計算。
* `Forceful decommissioning` 是立即中斷並下線資源不管進行中的工作，而 Graceful decommissioning 則會讓當前進程完成後再下線資源以避免中斷服務。
* `Cloud EKM` 可讓金鑰僅儲存在 on-prem HSM，透過 API 與 Google Cloud（如 BigQuery）整合進行加解密，實現資料加密控制不出雲。




## Reference
* https://medium.com/data-scientists-playground/-data-engineer-%E8%AD%89%E7%85%A7%E5%88%86%E4%BA%AB-88f0dbf7c01b
* https://medium.com/data-scientists-playground/google-professional-data-engineer-%E8%AD%89%E7%85%A7%E5%BF%83%E5%BE%97-225d80ad09fc
* https://vocus.cc/article/66e7b4d1fd89780001b2594d
* https://dongdonggcp.com/2024/10/01/how-to-pass-gcp-data-engineer-certification-test/
* https://medium.com/@ghoshsiddharth25/ultimate-guide-to-clear-the-google-cloud-professional-data-engineer-certification-exam-december-f4e8dbd1272f
