[發明專利]分布式數據庫中聚合查詢的方法及裝置在審
| 申請號: | 201410364288.0 | 申請日: | 2014-07-28 |
| 公開(公告)號: | CN104123374A | 公開(公告)日: | 2014-10-29 |
| 發明(設計)人: | 唐超;馬麗偉;秦波;王鋒;趙曉平 | 申請(專利權)人: | 北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 胡彬;路凱 |
| 地址: | 100080 北京市海淀區杏石口路6*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 數據庫 聚合 查詢 方法 裝置 | ||
1.一種分布式數據庫中聚合查詢的方法,其特征在于,所述方法包括:
接收客戶端發送來的原始SQL查詢語句;
獲取所述原始SQL查詢語句的查詢列和條件子查詢中的聚合函數;
在所述聚合函數中,將針對多表計算的復雜聚合函數變換為簡單聚合函數;
根據所述簡單聚合函數將所述原始SQL查詢語句更新為新SQL查詢語句;
將所述新SQL查詢語句分發至至少兩個數據庫進行查詢,并接收返回的查詢列的查詢結果;
根據所述查詢結果和所述新SQL查詢語句,計算獲取所述原始SQL查詢語句的查詢結果。
2.根據權利要求1所述的方法,其特征在于,根據所述簡單聚合函數將所述原始SQL查詢語句更新為新SQL查詢語句包括:
將所述簡單聚合函數添加到原始SQL查詢語句中,作為新查詢列,以形成新SQL查詢語句,并記錄新查詢列的位置以及簡單聚合函數與復雜聚合函數的關聯關系;
記錄所述條件子查詢中的聚合函數的條件關系。
3.根據權利要求2所述的方法,其特征在于,根據所述查詢結果和所述新SQL查詢語句,計算獲取所述原始SQL查詢語句的查詢結果包括:
根據所述新查詢列的查詢結果和所述關聯關系,計算復雜聚合函數的查詢結果;
根據所述條件關系和條件子查詢的查詢結果,計算所述原始SQL查詢語句的查詢結果。
4.根據權利要求3所述的方法,其特征在于:
所述復雜聚合函數為AVG函數,所述簡單聚合函數為COUNT函數和SUM函數;
所述條件子查詢為HAVING條件。
5.根據權利要求4所述的方法,其特征在于,所述新SQL查詢語句的形成操作具體包括:
通過解析器對所述原始SQL語句進行解析,以生成語法樹,其中,所述語法樹的節點對應于各查詢列和條件子查詢;
對所述語法樹的查詢列節點和條件子查詢節點進行掃描;
如果存在條件子查詢,則將所述條件子查詢的條件關系添加到過濾列表中;
如果所述查詢列節點和條件子查詢節點中存在聚合函數,則識別聚合函數類型;
如果所述聚合函數為AVG函數,則將所述AVG函數替換為COUNT函數和SUM函數,并將COUNT函數和SUM函數添加為查詢列,且將所述AVG函數、COUNT函數和SUM函數及其查詢列位置記錄到函數列表中,并記錄所述AVG函數與COUNT函數和SUM函數的關聯關系;
如果所述聚合函數為非AVG函數,則將所述AVG函數及其查詢列位置記錄到函數列表中。
6.一種分布式數據庫中聚合查詢的裝置,其特征在于,所述裝置包括:
接收模塊,用于接收客戶端發送來的原始SQL查詢語句;
獲取模塊,用于獲取所述原始SQL查詢語句的查詢列和條件子查詢中的聚合函數;
變換模塊,用于在所述聚合函數中,將針對多表計算的復雜聚合函數變換為簡單聚合函數;
更新模塊,用于根據所述簡單聚合函數將所述原始SQL查詢語句更新為新SQL查詢語句;
分發接收模塊,用于將所述新SQL查詢語句分發至至少兩個數據庫進行查詢,并接收返回的查詢列的查詢結果;
計算模塊,用于根據所述查詢結果和所述新SQL查詢語句,計算獲取所述原始SQL查詢語句的查詢結果。
7.根據權利要求6所述的裝置,其特征在于,所述更新模塊包括:
第一添加子模塊,用于將所述簡單聚合函數添加到原始SQL查詢語句中,作為新查詢列,以形成新SQL查詢語句,并記錄新查詢列的位置以及簡單聚合函數與復雜聚合函數的關聯關系;
第一記錄子模塊,用于記錄所述條件子查詢中的聚合函數的條件關系。
8.根據權利7所述的裝置,其特征在于,所述計算模塊包括:
第一計算子模塊,用于根據所述新查詢列的查詢結果和所述關聯關系,計算復雜聚合函數的查詢結果;
第二計算子模塊,用于根據所述條件關系和條件子查詢的查詢結果,計算所述原始SQL查詢語句的查詢結果。
9.根據權利要求8所述的裝置,其特征在于:
所述復雜聚合函數為AVG函數,所述簡單聚合函數為COUNT函數和SUM函數;
所述條件子查詢為HAVING條件。
10.根據權利要求9所述的裝置,其特征在于,所述新SQL查詢語句的形成模塊具體包括:
解析子模塊,用于通過解析器對所述原始SQL語句進行解析,以生成語法樹,其中,所述語法樹的節點對應于各查詢列和條件子查詢;
掃描子模塊,用于對所述語法樹的查詢列節點和條件子查詢節點進行掃描;
第二添加子模塊,用于如果存在條件子查詢,則將所述條件子查詢的條件關系添加到過濾列表中;
識別子模塊,用于如果所述查詢列節點和條件子查詢節點中存在聚合函數,則識別聚合函數類型;
替換子模塊,用于如果所述聚合函數為AVG函數,則將所述AVG函數替換為COUNT函數和SUM函數,并將COUNT函數和SUM函數添加為查詢列,且將所述AVG函數、COUNT函數和SUM函數及其查詢列位置記錄到函數列表中,并記錄所述AVG函數與COUNT函數和SUM函數的關聯關系;
第二記錄子模塊,用于如果所述聚合函數為非AVG函數,則將所述AVG函數及其查詢列位置記錄到函數列表中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司,未經北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410364288.0/1.html,轉載請聲明來源鉆瓜專利網。





