iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

深入 SQL 查詢引擎:30 天用 Rust 與 Apache DataFusion 解構資料處理流程 系列

資料工程不只是 ETL 與搬運資料。一段 SQL 從送出到產生結果,背後還包含資料讀取、查詢規劃、最佳化與運算。

本系列將使用 Rust 與 Apache DataFusion,透過 30 天實作拆解 SQL 查詢的執行流程。內容涵蓋 CSV、JSON、Parquet、Apache Arrow、Logical Plan、Physical Plan、欄位裁剪與條件下推,並實作多表查詢、自訂函數、簡易 ETL、錯誤處理及測試。

最終將完成一套本機資料分析工具,讓使用者載入不同格式的資料、執行 SQL、查看查詢計畫並輸出結果,從實作中理解現代查詢引擎如何運作。

參賽天數 18 天 | 共 18 篇文章 | 5 人訂閱 訂閱系列文 RSS系列文 團隊源來適愛開緣
DAY 11

Day 11|SQL 不只是字串:Query Engine 如何理解 SQL?

先來回答昨天讀者的問題 昨天有讀者問: 規劃和執行兩階段,是先規劃後執行嗎?還是獨立的兩塊? 答案是: 先規劃,後執行。 兩者不是獨立的兩條流程,而是同一...

2026-08-27 ‧ 由 郁庭 Cady 分享
DAY 12

Day 12|Logical Plan:SQL 的第一張執行藍圖

Logical Plan 是 SQL 的第一張執行藍圖。 它不會立刻讀取檔案,也不會直接產生查詢結果,而是先把 SQL 拆成一棵由多個 Logical Oper...

2026-08-28 ‧ 由 郁庭 Cady 分享
DAY 13

Day 13|用 EXPLAIN 偷看 SQL 背後的 Query Plan

上一篇介紹了 Logical Plan,知道 SQL 會被轉換成一棵由 TableScan、Filter、Aggregate 與 Projection 組成的操...

2026-08-29 ‧ 由 郁庭 Cady 分享
DAY 14

Day 14|Physical Plan:從「想怎麼查」到「真的怎麼執行」

上一篇使用 EXPLAIN 觀察了 SQL 的 Logical Plan。 Logical Plan 描述的是: 這段查詢想完成什麼? 今天再往下一層,介紹...

2026-08-30 ‧ 由 郁庭 Cady 分享
DAY 15

Day 15|完整追蹤一段 SQL 的生命週期

先回應讀者的問題:Schema 和 Physical Plan 的關係 有讀者提問:Physical Planner 建立資料來源運算子時,Schema 到底扮...

2026-08-31 ‧ 由 郁庭 Cady 分享
DAY 16

Day 16|Query Optimizer 到底在最佳化什麼?

前幾天我們看到,一段 SQL 會先被轉換成 Logical Plan,再交給 Physical Planner 產生實際執行計畫。 但在這兩個階段之間,還有一個...

2026-09-01 ‧ 由 郁庭 Cady 分享
DAY 17

Day 17|Projection Pushdown:只讀真正需要的欄位

上一篇介紹了 Query Optimizer 的目的,今天深入其中一項常見最佳化: Projection Pushdown 它的核心概念是: 查詢只需要哪些...

2026-09-02 ‧ 由 郁庭 Cady 分享
DAY 18

Day 18|Filter Pushdown:越早過濾資料越好

上一篇介紹了 Projection Pushdown,讓資料來源盡量只讀取查詢需要的欄位。 今天介紹另一個重要的最佳化: Filter Pushdown 它的...

2026-09-03 ‧ 由 郁庭 Cady 分享