iT邦幫忙

2025 iThome 鐵人賽

DAY 1
1

前言

去年底因為想學習資料庫原理和 Rust 這門語言而接觸 Apache DataFusion ,到現在陸陸續續也有了些小小的貢獻,不過始終對該專案還是懵懂無知,因此便萌生參賽的想法,希望可以在逼迫自己寫文章的同時更深入了解 DataFusion 的全貌。

什麼是查詢引擎?

在介紹 DataFusion 之前,讓我們先聊聊什麼是查詢引擎(Query Engine)吧。本質上查詢引擎是一個資料處理的管道,可以將使用者對資料提出的問題轉換成機器看得懂的處理流程,最後返回使用者想知道的資料答案。舉例來說,想像你有一個包含數百萬筆訂單資料的檔案,當你你想知道「上個月來自台北的訂單總金額是多少?」查詢引擎就負責將上述問題拆解並轉換成以下步驟:

  1. 解析查詢:理解你的問題(通常用 SQL 語言表達)
  2. 優化執行:找出最快的計算方式
  3. 讀取資料:從檔案或資料庫讀取需要的資料
  4. 計算結果:進行過濾、排序、聚合等運算
  5. 回傳答案:將結果以表格形式呈現

以往查詢引擎大多是傳統資料庫系統的一部分,但隨著 Data Lakehouse 架構和 AI/ML 的興起,資料格式和處理的靈活性也日益受到重視。因此查詢引擎的元件化也讓現代企業可以像樂高一樣自由的組合適合的儲存格式、查詢引擎和儲存來源等。

Apache DataFusion 是什麼?

對查詢引擎有了基礎的認識後,接著就進入本篇文章的重點 — Apache Datafusion。2017 由創始人 Andy Grove 開始的個人專案,2019 年捐贈給 Apache Arrow,並在2024年正式成為 Apache 的獨立專案。

作為一個高效可擴展的查詢引擎,DataFusion 有以下幾個核心特性:

  • 高性能: 透過向量化執行、多執行緒並行和串流處理來提升查詢速度。是 2024 年 ClickBench 讀取 parquet 檔案最快的查詢引擎
  • 豐富格式支援: 內建支援 CSV, Parquet, JSON, 和 Avro 等檔案格式,也支援直接從雲端物件儲存取,包括 AWS S3, Azure Blob Storage, 和 Google Cloud Storage
  • 完整 SQL 功能: 相容大部分PostgreSQL 語法,也提供類似 Panda 的 DataFrame API
  • 極強可擴展性: 支援自訂函數、運算子、資料源等等

有鑑於 Andy Grove 的願景:

Without DataFusion, highly performant vectorized query engines would remain the domain of a few large companies and world-class research institutions. With DataFusion, we can all build on top of a shared foundation, and focus on what makes our projects unique

希望高效能的查詢引擎不再是大公司壟斷的技術,一般中小企業、新創公司的開發者也能使用 DataFusion 打造符合自己特色的資料庫、查詢系統或 ETL 。

誰在使用 DataFusion?

大型企業

  • Apple:開發 DataFusion Comet,讓 Spark 查詢速度提升 2.4 倍
  • InfluxData:時間序列資料庫 InfluxDB 3.0 的核心

開源生態

目前已有多個開源專案基於 DataFusion:

  • 資料庫系統:GlareDB(分散式 SQL)、CnosDB(時序資料庫)
  • 數據湖技術:Delta-rs(Delta Lake 的 Rust 版本)
  • 分析平台:Cube Store(OLAP 儲存引擎)
  • AI 基礎設施:Spice.ai(智慧數據平台)

Python 生態系

DataFusion Python 也提供完整的 Python 支援:

  • 與 Pandas、PyArrow 無縫整合
  • 支援 SQL 和 DataFrame API
  • Dask SQL、DataFusion Ballista 等專案的基礎

學習路線

接下來的 29 天,我們將循序漸進地學習:

第 1 週 - 基礎入門

  • 環境建置、第一個查詢
  • 理解 SQL 和 DataFrame API
  • 掌握各種資料格式處理

第 2 週 - 架構深入

  • 查詢優化器如何工作
  • 執行引擎的內部機制
  • 並發和串流處理

第 3 週 - 進階開發

  • 建立自定義函數和資料源
  • 擴展查詢優化規則
  • 整合其他系統

第 4-5 週 - 實戰應用

  • 效能調優技巧
  • 生產環境最佳實務
  • 完整專案實作

呼~終於趕工完成了關於 DataFusion 的基礎介紹,明天我們將深入探討 DataFusion 的心臟 Apache Arrow

參考資料


下一篇
Day 02 - DataFusion 記憶體格式介紹 - Apache Arrow
系列文
DataFusion 闖關攻略:30 天學習 Rust 查詢引擎之旅3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
reborn7875
iT邦新手 5 級 ‧ 2025-09-16 15:33:15

這個主題好棒喔!之前有聽過 datafusion 的主題,但好像偏冷門嗎?

我要留言

立即登入留言