亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

查詢引擎(sql)

2023-10-07 09:52:43
15
0

什么是查詢引擎

可以把他理解成一個網關,對于數據庫來說它叫查詢引擎,對于對象存儲來說,它就是一個rgw(ceph),作用都是將用戶的查詢語句轉化成存儲引擎能處理的調用;

datafusion

不同的數據庫實現了不同細節的查詢引擎,但是大致相似,正因此,出現了datafusion,旨在統一查詢引擎,減少重復造輪子,我們以datafusion做基礎來介紹sql查詢引擎需要哪些能力,如果對細節有興趣可以看duckdb的實現,非常完美和標準化;

語法解析

簡單的關鍵詞匹配,將其轉換成抽象語法樹,比如select * from table1;

匹配到第一個單詞是select,那么產生一個掃表(scan table)的節點,這個節點的參數是:projection: *, table_name: table1,

注:projection就是投影,可理解為在一個大集中取子集就是投影;

這是一個簡單的查詢語句,產生只有一個節點的抽象語法樹

創建邏輯計劃

所以邏輯計劃,可以理解為一個接口,這個計劃規定要做什么,但是不規定怎么做

語義解析

剛剛的語法解析只是簡單的關鍵字匹配,然后生成的邏輯計劃,但是對于同一個關鍵字,在不同的語義下可以產生不同的邏輯計劃,比如,projection中是否含有索引,如果有那就生產基于索引的掃表,如果沒有,就產生全量的掃表,二者的實現會不一樣,

邏輯計劃優化

根據制定的優化規則進行優化,最常見的就是謂詞下推,讓計算更靠近數據源,減少數據的傳輸;

創建物理計劃

物理計劃就是邏輯計劃的具體實現,比如一個掃表操作,邏輯計劃只是指明掃表這個目的,那么物理計劃就是掃表的具體細節,比如:任務應該發送到哪個存儲節點,limit,projection,謂詞處理這些

0條評論
作者已關閉評論
Mr. 油
92文章數
0粉絲數
Mr. 油
92 文章 | 0 粉絲
原創

查詢引擎(sql)

2023-10-07 09:52:43
15
0

什么是查詢引擎

可以把他理解成一個網關,對于數據庫來說它叫查詢引擎,對于對象存儲來說,它就是一個rgw(ceph),作用都是將用戶的查詢語句轉化成存儲引擎能處理的調用;

datafusion

不同的數據庫實現了不同細節的查詢引擎,但是大致相似,正因此,出現了datafusion,旨在統一查詢引擎,減少重復造輪子,我們以datafusion做基礎來介紹sql查詢引擎需要哪些能力,如果對細節有興趣可以看duckdb的實現,非常完美和標準化;

語法解析

簡單的關鍵詞匹配,將其轉換成抽象語法樹,比如select * from table1;

匹配到第一個單詞是select,那么產生一個掃表(scan table)的節點,這個節點的參數是:projection: *, table_name: table1,

注:projection就是投影,可理解為在一個大集中取子集就是投影;

這是一個簡單的查詢語句,產生只有一個節點的抽象語法樹

創建邏輯計劃

所以邏輯計劃,可以理解為一個接口,這個計劃規定要做什么,但是不規定怎么做

語義解析

剛剛的語法解析只是簡單的關鍵字匹配,然后生成的邏輯計劃,但是對于同一個關鍵字,在不同的語義下可以產生不同的邏輯計劃,比如,projection中是否含有索引,如果有那就生產基于索引的掃表,如果沒有,就產生全量的掃表,二者的實現會不一樣,

邏輯計劃優化

根據制定的優化規則進行優化,最常見的就是謂詞下推,讓計算更靠近數據源,減少數據的傳輸;

創建物理計劃

物理計劃就是邏輯計劃的具體實現,比如一個掃表操作,邏輯計劃只是指明掃表這個目的,那么物理計劃就是掃表的具體細節,比如:任務應該發送到哪個存儲節點,limit,projection,謂詞處理這些

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0