麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

面向流式數據處理的sql查詢計劃生成方法

文檔序號:6362945閱讀:338來源:國知局
專利名稱:面向流式數據處理的sql查詢計劃生成方法
技術領域
本發明涉及計算機應用領域,具體涉及一種面向流式數據處理的SQL查詢計劃生成方法。
背景技術
在基于MapReduce的分布式數據庫系統中,針對SQL查詢計劃生成方法,現有技術根據用戶的SQL查詢命令創建一系列的MapReduce作業,MapReduce作業由有向無環圖組成,以迭代器的形式操作,每個操作符的數據經處理后,再把產生的元組傳給下一個操作符。然而,現有的SQL查詢計劃生成技術存在以下問題1、采用基于規則的優化技術, 不能總是產生高效的查詢計劃;2、不支持連續查詢,不適合流式數據處理的需要;3、缺乏完整的查詢分析處理引擎,解析效率低。

發明內容
本發明的目的在于提供一種面向流式數據處理的SQL查詢計劃生成方法,其能夠根據數據的特點產生最優的SQL查詢分析計劃,處理速度快,解析效率高,特別適用于流式數據處理領域,同時還允許用戶使用SQL自定義數據的格式。
本發明是通過以下技術方案實現的
一種面向流式數據處理的SQL查詢計劃生成方法,其特征在于,包括以下步驟
(1)接收用戶輸入的SQL命令;
(2)判斷SQL命令的語法是否正確;
(3)若SQL命令的語法正確,則對SQL命令執行預處理;
(4)判斷預處理后的SQL命令是否為連續任務;
(5)若SQL命令為連續任務,則將連續任務轉換為流式任務;
(6)對流式任務執行解析和優化,以生成查詢計劃,具體包括以下子步驟
(6-1)接收流式任務,并對流式任務執行語義分析,以判斷流式任務的語義是否正
確;(6-2)若流式任務的語義正確,則利用開源語法分析器解析流式任務,以生成SQL 抽象語法樹;(6-3)根據SQL抽象語法樹生成邏輯計劃樹;(6-4)根據邏輯計劃樹生成查詢計劃;(6-5)評估查詢計劃,以生成最終的查詢計劃;(7)執行查詢計劃。判斷流式任務的語義是否正確包括判斷流式任務的變量定義是否正確,以及判斷其類型是否匹配。子步驟¢-2)包括以下步驟
(6-2-1)開源語法分析器根據SQL語言的語法和語義特點所定義的規則對流式任務進行識別,并將流式任務分解成標志流作為開源語法分析器的輸入;(6-2-2)開源語法分析器利用掃描程序遞歸掃描標志流,以生成SQL抽象語法樹。SQL抽象語法樹是由葉子節點、非葉子節點和邊組成的樹結構,葉子節點與標志流的值相對應,非葉子節點與標志流的語法規則相對應。子步驟¢-3)包括以下步驟(6-3-1)解析SQL抽象語法樹,并將SQL抽象語法樹轉換為多個查詢塊;(6-3-2)根據查詢塊中記錄的SQL抽象語法樹的信息遞歸分析SQL抽象語法樹的子查詢,以得到邏輯計劃樹,遞歸分析包括語義檢查和類型檢查。本方法還包括步驟若SQL命令的語法不正確,則過程結束。本方法還包括步驟若預處理后的SQL命令不是連續任務,則進入步驟(7)。本發明具有以下的優點和有益效果(I)解析效率高本發明針對流式數據處理,提出了一套完整的分布式查詢分析處理引擎。具體來講,這套完整的查詢分析引擎包括預處理部件、解析部件、優化部件和執行部件等。整個查詢分析引擎四個部件協同工作,緊密聯系,顯著提高了 SQL查詢計劃生成的效率,大大縮短了執行時間。(2)采用基于成本的優化策略本發明根據數據的特點和流式數據處理的要求, 計算進行索引和當前存儲數據處理和操作的代價建立最選路徑選擇的規則。根據規則選取最優的待選樹,在選擇了最優的待選樹后,產生執行計劃并返回。


圖I是本發明面向流式數據處理的SQL查詢計劃生成方法的流程圖。圖2是本發明方法中步驟(5)的工作示意圖。圖3是本發明方法中步驟(6)的細化流程圖。圖4是SQL抽象語法樹的示意圖。圖5是本發明方法中步驟(7)的工作示意圖。
具體實施例方式以下首先對本發明的技術詞匯進行解釋和說明。連續任務只提交一次,連續在數據庫上運行的任務。連續任務的查詢隨著新數據的到來而不斷地返回查詢結果。流式任務利用數據流特征和滑動窗口機制以時間戳方式排列的查詢任務,查詢結果將轉換成數據流。開源語法分析器一種開放源代碼的語法分析工具,為包括Java,C++,C#,SQL等語言提供了一個通過語法描述來自動構造自定義語言的識別器、編譯器和解釋器的框架。SQL抽象語法樹是SQL語句的抽象語法結構的樹狀表現形式和內存中的數據結構。邏輯計劃樹由關系代數表達式所組成的樹結構,其非葉子節點為關系運算符、葉子節點為關系。
關系操作符數據庫領域定義的專門用于關系運算的操作符,如過濾、選擇、投影、 連接、聚集等。MapReduce :是一種編程模型,用于大規模數據集的并行運算。Hadoop :是一個分布式系統基礎框架。用戶可以在不了解分布式底層細節的情況下,開發分布式程序,充分利用集群的威力高速運算和存儲。XML :一種可擴展的標記語言,可以用來標記數據、定義數據類型。如圖I所示,本發明面向流式數據處理的SQL查詢計劃生成方法包括以下步驟(I)接收用戶輸入的SQL命令同時將所有出現在語句中的標識符的信息填入到標識符轉換表中。(2)判斷SQL命令的語法是否正確根據語法規則對SQL命令進行合法性檢查,形成一個語法正確的查詢任務,若SQL命令的語法不正確,則過程結束,若SQL命令的語法正確,則轉入步驟(3);(3)對SQL命令執行預處理將查詢任務通過網絡傳輸到預處理器中進行語句依賴關系的分析,對查詢任務進行合并、查詢語句進行裁剪和對執行順序進行調整。(4)判斷預處理后的SQL命令是否為連續任務,若SQL命令為連續任務,則轉入步驟(5),若預處理后的SQL命令不是連續任務,則進入步驟(7);(5)將連續任務轉換為流式任務,具體包括以下子步驟(5-1)利用開源語法分析器將連續任務轉換為一顆SQL抽象語法樹;(5-2)將連續任務對應的一顆SQL抽象語法樹分解為若干個子語法樹;(5-3)通過加入時間戳屬性組合子語法樹,通過滑動窗口機制創建流式任務。如圖2所示,任務接收器接收查連續任務,對連續任務進行語句依賴關系的分析, 對連續任務進行合并、查詢語句進行裁剪和對執行順序進行調整,中間結果將暫時保存在共享存儲空間中,并存入到元數據庫中。開源語法分析器根據SQL語法和語義特點利用元數據庫中存儲的信息對所述連續任務進行解析,轉換成SQL抽象語法樹。將連續任務對應的SQL抽象語法樹分解為若干個子語法樹,通過加入時間戳屬性組合子語法樹,通過滑動窗口機制創建流式任務。(6)對流式任務執行解析和優化,以生成查詢計劃,具體包括以下子步驟(如圖3 所示)(6-1)接收流式任務,并對流式任務執行語義分析,以判斷流式任務的語義是否正確判斷流式任務的語義是否正確包括判斷流式任務的變量定義是否正確,以及判斷其類型是否匹配,若流式任務的語義正確,則進入步驟(6-2),否則過程結束;(6-2)利用開源語法分析器解析流式任務,以生成SQL抽象語判斷流式任務法樹, 具體包括(6-2-1)開源語法分析器根據SQL語言的語法和語義特點所定義的規則對流式任務進行識別,并將流式任務分解成標志流作為開源語法分析器的輸入;(6-2-2)開源語法分析器利用掃描程序遞歸掃描標示流,以生成SQL抽象語法樹。 SQL抽象語法樹是由葉子節點、非葉子節點和邊組成的樹結構。葉子節點與標志流的值相對應,非葉子節點對應于標志流的語法規則,圖4示出一個簡單的SQL查詢生成的SQL抽象語法樹實例,所述實例執行下述操作從表Tablel中選擇滿足屬性Fl值為a的元組中屬性Fl的值及統計個數。(6-3)根據SQL抽象語法樹生成邏輯計劃樹,具體包括(6-3-1)解析SQL抽象語法樹,并將SQL抽象語法樹轉換為多個查詢塊;(6-3-2)根據查詢塊中記錄的SQL抽象語法樹的信息遞歸分析SQL抽象語法樹的子查詢,以得到邏輯計劃樹,遞歸分析包括語義檢查和類型檢查;(6-4)根據邏輯計劃樹生成查詢計劃;查詢計劃是由關系操作符組成的有向無環圖;(6-5)評估查詢計劃,以生成最終的查詢計劃在查詢計劃中建立一系列通往同一結果的路徑,為每條路徑評估其執行代價,取出其中代價最小的一條,該條路徑產生最終的查詢計劃。(7)執行查詢計劃遞歸訪問查詢計劃,將所述查詢計劃分解為一系列MapReduce 任務,然后將任務提交給Hadoop集群。Hadoop集群將需要執行的所述MapReduce任務序列化到一個XML格式的文件,由Map或Reduce反序列化出SQL讓各數據庫實例執行,如圖 5所示。
權利要求
1.一種面向流式數據處理的SQL查詢計劃生成方法,其特征在于,包括以下步驟(1)接收用戶輸入的SQL命令;(2)判斷所述SQL命令的語法是否正確;(3)若所述SQL命令的語法正確,則對所述SQL命令執行預處理;(4)判斷預處理后的所述SQL命令是否為連續任務;(5)若所述SQL命令為連續任務,則將所述連續任務轉換為流式任務;(6)對所述流式任務執行解析和優化,以生成查詢計劃,具體包括以下子步驟(6-1)接收所述流式任務,并對所述流式任務執行語義分析,以判斷所述流式任務的語義是否正確;(6-2)若所述流式任務的語義正確,則利用開源語法分析器解析所述流式任務,以生成 SQL抽象語法樹;(6-3)根據所述SQL抽象語法樹生成邏輯計劃樹;(6-4)根據所述邏輯計劃樹生成所述查詢計劃;(6-5)評估查詢計劃,以生成最終的查詢計劃;(7)執行所述查詢計劃。
2.根據權利要求I所述的SQL查詢計劃生成方法,其特征在于,判斷所述流式任務的語義是否正確包括判斷所述流式任務的變量定義是否正確,以及判斷其類型是否匹配。
3.根據權利要求I所述的SQL查詢計劃生成方法,其特征在于,所述子步驟(6-2)包括以下步驟(6-2-1)所述開源語法分析器根據SQL語言的語法和語義特點所定義的規則對所述流式任務進行識別,并將所述流式任務分解成標志流作為所述開源語法分析器的輸入;(6-2-2)所述開源語法分析器利用掃描程序遞歸掃描所述標志流,以生成所述SQL抽象語法樹。
4.根據權利要求3所述的SQL查詢計劃生成方法,其特征在于,所述SQL抽象語法樹是由葉子節點、非葉子節點和邊組成的樹結構;所述葉子節點與所述標志流的值相對應;所述非葉子節點與所述標志流的語法規則相對應。
5.根據權利要求I所述的SQL查詢計劃生成方法,其特征在于,所述子步驟(6-3)包括以下步驟(6-3-1)解析所述SQL抽象語法樹,并將所述SQL抽象語法樹轉換為多個查詢塊; (6-3-2)根據所述查詢塊中記錄的所述SQL抽象語法樹的信息遞歸分析所述SQL抽象語法樹的子查詢,以得到所述邏輯計劃樹,所述遞歸分析包括語義檢查和類型檢查。
6.根據權利要求I所述的SQL查詢計劃生成方法,其特征在于,還包括步驟若所述 SQL命令的語法不正確,則過程結束。
7.根據權利要求I所述的SQL查詢計劃生成方法,其特征在于,還包括步驟若預處理后的所述SQL命令不是連續任務,則進入所述步驟(7)。
全文摘要
本發明公開了一種面向流式數據處理的SQL查詢計劃生成方法,其特征在于,包括以下步驟接收用戶輸入的SQL命令,判斷SQL命令的語法是否正確,若SQL命令的語法正確,則對SQL命令執行預處理,判斷預處理后的SQL命令是否為連續任務,若SQL命令為連續任務,則將連續任務轉換為流式任務,對流式任務執行解析和優化,以生成查詢計劃,(7)執行查詢計劃。本發明能夠根據數據的特點產生最優的SQL查詢分析計劃,處理速度快,解析效率高,特別適用于流式數據處理領域,同時還允許用戶使用SQL自定義數據的格式。
文檔編號G06F17/30GK102609451SQ20121000691
公開日2012年7月25日 申請日期2012年1月11日 優先權日2012年1月11日
發明者劉述曦, 張冬潔, 袁平鵬, 趙峰, 金海 申請人:華中科技大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 沅江市| 耿马| 赫章县| 柳江县| 昭苏县| 庆安县| 友谊县| 巴楚县| 新宁县| 河东区| 屏东市| 丹巴县| 平陆县| 海口市| 任丘市| 鄢陵县| 阜康市| 凉城县| 清新县| 澳门| 宜丰县| 达日县| 大英县| 芷江| 宁化县| 罗甸县| 岫岩| 深泽县| 泰和县| 平武县| 山阳县| 连南| 玛多县| 白河县| 秦安县| 台湾省| 沂水县| 鹤峰县| 虞城县| 闵行区| 凤城市|