[發明專利]集群數據庫系統環境下的數據查詢解析方法在審
| 申請號: | 201310274920.8 | 申請日: | 2013-07-02 |
| 公開(公告)號: | CN103310011A | 公開(公告)日: | 2013-09-18 |
| 發明(設計)人: | 李晉鋼;宋懷明;苗艷超;劉新春;邵宗有 | 申請(專利權)人: | 曙光信息產業(北京)有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京德恒律治知識產權代理有限公司 11409 | 代理人: | 章社杲;孫征 |
| 地址: | 100193 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 集群 數據庫 系統 環境 數據 查詢 解析 方法 | ||
技術領域
本發明涉及數據處理技術領域,更具體地,涉及一種集群數據庫系統環境下的數據查詢解析方法。
背景技術
集群數據庫系統通常由采用無共享結構(Shared-nothing)互聯的多個數據庫節點構成,并且,數據以分布式方式存儲在各數據庫節點中。
通常在集群數據庫系統中,查詢語句經過解析(可包括詞法分析,語法分析和語義分解和優化),分解成查詢執行任務,提交給數據庫節點執行查詢以獲得查詢結果。現有一種執行查詢的方法是嵌套查詢,例如,在一個SELECT語句的WHERE子句、FROM子句或HAVING子句中嵌套另一個SELECT語句的查詢稱為嵌套查詢(又稱子查詢)。現有的嵌套查詢會在多個數據表和數據庫節點進行查詢和交換,通常會導致復雜的查詢算法,從而嚴重影響查詢效率。
因此,需要一種改進的嵌套查詢執行方式以實現集群數據庫系統環境下的數據查詢。
發明內容
為解決現有技術存在的問題,本發明提供了一種集群數據庫系統環境下的數據查詢解析方法,包括:
接收到來自客戶端的為第一結構化查詢語言SQL語句的查詢請求后,對所述第一SQL語句進行語法解析,使得語法解析后的第一SQL語句為以SelectStmt結構體表示的語法樹,其中,所述SelectStmt結構體包括Select鏈表、From鏈表、Where鏈表、Groupby鏈表、Having鏈表、Orderby鏈表和Union鏈表;
對所述語法樹進行分析并構建相應的查詢任務樹;
根據預確定的優化規則對所述查詢任務樹進行優化并生成查詢任務流;其中:
所述查詢任務樹包括由多層級構成的多個查詢任務節點,同一層級包括一個或多個查詢任務節點,其中,一個查詢任務節點對應一個查詢任務,以及,同一層級的多個查詢任務節點生成為相互間并行執行的查詢任務。
在可選實施例中,對所述語法樹進行分析并構建相應的查詢任務樹包括:在判斷出第一查詢任務節點小數據表嵌套子查詢時,提取所述第一查詢任務節點中小數據表嵌套子查詢語法樹并構建為所述第一查詢任務節點下的子節點,將查詢結果集分發類型標記為ALL。
在可選實施例中,對所述語法樹進行分析并構建相應的查詢任務樹包括:在判斷出第二查詢任務節點含大數據表嵌套子查詢時,提取所述第二查詢任務節點中大數據表嵌套子查詢語法樹并構建為所述第二查詢任務節點下的子節點,將查詢結果集分發類型標記為HASH。
在可選實施例中,根據預定的優化規則對所述查詢任務樹進行優化并生成查詢任務流,包括:判斷未處理的查詢任務節點中是否有嵌套查詢;在判斷為是時,依次判斷所述Select鏈表、From鏈表、Where鏈表、Having鏈表和Union鏈表中是否有嵌套查詢;以及,對判斷出有嵌套查詢的鏈表構建對應的子查詢任務樹,并將所構建的子查詢任務樹插入到查詢任務隊列中,以及設定將與所述子查詢任務樹對應的子查詢結果更新到該有嵌套查詢的鏈表的查詢結果組中。
在可選實施例中,所述預定的優化規則包括以下之一或任意組合:
每一個查詢任務或子查詢任務針對預設的一組數據庫節點進行查詢,其中,每一數據大表在該組數據庫節點中的各數據庫節點的分布規則相同,每一數據小表在該組數據庫節點中的各數據庫節點上設置有數據副本;
將過濾后的查詢要求下發給子查詢任務節點;
屬于一個數據表的子查詢結果集采用統一的別名。
在可選實施例中,對判斷出有嵌套查詢的鏈表構建對應的子查詢任務樹,并將所構建的子查詢任務樹插入到查詢任務隊列中,以及設定將與所述子查詢任務樹對應的子查詢結果更新到該有嵌套查詢的鏈表的查詢結果組中,包括:
判斷所述嵌套查詢是否與外部數據表關聯,
在判斷出有關聯時,構建子查詢任務樹節點,作為外部數據表查詢任務樹節點下的子節點,以及根據所述外部數據表的屬性標注該查詢結果集分發類型;
在判斷出無關聯時,構建子查詢任務樹節點,作為外部數據表查詢任務樹節點下的子節點,以及將該查詢結果集分發類型標注為賦值方式ASSIGN。
在可選實施例中,設定將與所述子查詢任務樹對應的子查詢結果更新到該有嵌套查詢的鏈表的查詢結果組中,包括:
在對子查詢結果集采用統一的別名時,將所述子查詢結果集的第一屬性信息更新到相對應的后續查詢子任務中,其中,所述子查詢結果集的第一屬性信息包括子查詢結果集列以及子查詢結果集別名。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于曙光信息產業(北京)有限公司,未經曙光信息產業(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310274920.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:服務搜索方法、系統和搜索服務器
- 下一篇:文檔加載方法及系統





