iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Rust

DataFusion 闖關攻略:30 天學習 Rust 查詢引擎之旅 系列

Apache DataFusion 是使用 Rust 開發的高效能可擴展查詢引擎,在 2024 年成為 ClickBench 基準測試中最快的單節點查詢引擎。

30 天學習路徑將從基礎環境建置、第一個查詢開始,循序漸進深入架構解析、StringView 優化原理,最後探索自定義擴展、生產部署等進階主題。透過深入原始碼分析,將完整解構從 LogicalPlan 到 ExecutionPlan 的轉換流程,理解現代查詢引擎的設計精髓。

參賽天數 27 天 | 共 30 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文 團隊動鼠做
DAY 21

Day 21: Join 算子 Part 1 - Hash Join 原理

前言 在前兩天的文章中,我們探討了聚合算子的兩種策略:Hash Aggregation 與 Sort-based Aggregation 並觀察 DataFus...

2025-10-05 ‧ 由 a834567 分享
DAY 22

Day 22: Join 算子 Part 2 - Sort-Merge Join 和策略選擇

前言 在昨天的文章中,我們探討了 Hash Join 的原理和實現,學習到 Hash Join 透過兩階段模型(Build Phase 和 Probe Phas...

2025-10-06 ‧ 由 a834567 分享
DAY 23

Day 23: 數據源整合 Part 1 - TableProvider 機制

前言 在 Day 14 我們初步認識了 TableProvider 作為數據源抽象的概念,Day 17 也看到了它在謂詞下推中的實際應用。今天我們將深入探討 T...

2025-10-07 ‧ 由 a834567 分享
DAY 24

Day 24: 數據源整合 Part 2 - Parquet 讀取的實作

前言 昨天我們探討了 TableProvider 機制,了解了 Partition Pruning 和多層次優化的概念。今天我們將深入 Parquet 讀取的實...

2025-10-08 ‧ 由 a834567 分享
DAY 25

Day 25: Window Functions - 視窗函數執行機制深度解析

前言 在 Day 6 中,我們已經學習了視窗函數的基本概念、OVER 子句語法(PARTITION BY、ORDER BY、Frame)以及常見函數(ROW_N...

2025-10-09 ‧ 由 a834567 分享
DAY 26

Day 26: 並行執行與分區策略 - DataFusion 的性能倍增器

前言 在 Day 14 的文章中,我們初步認識了分區(Partitioning)的概念,了解 DataFusion 支援 RoundRobin、Hash 等分區...

2025-10-10 ‧ 由 a834567 分享
DAY 27

Day 27: 記憶體管理與 Spilling - 在有限資源下處理大量數據

前言 在 Day 25 學習並行執行與分區策略時,我們多次提到了記憶體的重要性。當時我們了解到,如果 target_partitions 設定過高,每個分區可用...

2025-10-11 ‧ 由 a834567 分享
DAY 27

Day 28: StringView 深入解析 - Apache Arrow 字串處理的革命性改進

前言 回顧 Day 2 的內容可以知道 DataFusion 建構在 Apache Arrow 之上。而 Arrow 後續推出新的數據類型 StringView...

2025-10-13 ‧ 由 a834567 分享
DAY 27

Day 29: 統計資訊收集與 Cost-Based Optimization - 讓優化器更聰明地做決策

前言 在 Day 27,我們探討了 StringView 如何提升字串處理效能。這是一種「靜態」的優化——透過更好的數據表示來加速操作。今天,我們將探討另一個層...

2025-10-13 ‧ 由 a834567 分享
DAY 27

Day 30: 如何貢獻 DataFusion - 從使用者到貢獻者

前言 經過近一個月的學習,從實戰入門到深入原始碼,我們已經對 DataFusion 有了相當深入的理解。 Apache DataFusion 是一個由全球貢獻者...

2025-10-14 ‧ 由 a834567 分享