[發明專利]基于分布式數據庫的查詢方法及裝置有效
| 申請號: | 201910853314.9 | 申請日: | 2019-09-10 |
| 公開(公告)號: | CN110489446B | 公開(公告)日: | 2022-05-24 |
| 發明(設計)人: | 董隆超;孔令雷;周偉;張嬌嬌 | 申請(專利權)人: | 北京東方國信科技股份有限公司 |
| 主分類號: | G06F16/2453 | 分類號: | G06F16/2453;G06F16/27 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 張睿 |
| 地址: | 100102 北京市朝*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 分布式 數據庫 查詢 方法 裝置 | ||
本發明實施例提供一種基于分布式數據庫的查詢方法及裝置。其中,方法包括:對于包括若干個標量子查詢的原始SQL查詢語句,根據原始SQL查詢語句的解析樹,生成每一標量子查詢對應的子執行計劃和輔助執行代碼;將各標量子查詢對應的子執行計劃和輔助執行代碼,分別發送至相應的參與節點;獲取包含標量子查詢的各外層SQL語句的執行結果,根據包含標量子查詢的各外層SQL語句的執行結果,獲取原始SQL查詢語句的執行結果。本發明實施例提供的基于分布式數據庫的查詢方法及裝置,通過將各標量子查詢對應的子執行計劃和輔助執行代碼發送至參與節點,將主節點的標量子查詢的查詢結果的替換分散到各參與節點,能簡化查詢步驟、提高查詢效率。
技術領域
本發明涉及數據庫技術領域,更具體地,涉及一種基于分布式數據庫的查詢方法及裝置。
背景技術
結構化查詢語言(SQL,Structured Query Language),是一種特殊的編程語言。結構化查詢語言用于存儲數據以及查詢、更新、管理數據庫系統。
子查詢,是指在SQL語句中的一種嵌套在另一個查詢中的查詢。該另一個查詢被稱為原始SQL查詢。子查詢可以根據原始SQL查詢的表中的內容動態調整子查詢本身的執行。這種技術讓SQL語言更靈活和更有表達力。
子查詢返回一個集合。這個集合可以用在from/with語句中,也可以作為操作符的操作數,比如in/exists操作符/關鍵字。子查詢返回的結果只包含一行數據,并且這行數據只有一列,則這個子查詢為標量子查詢。如果結果集為空,這個返回值當成null處理。標量子查詢可以在標量上下文中進行替換。
例如:原始SQL查詢語句Select x from t1 where x(select max(y)from t2)中,因為有max函數存在,子查詢select max(y)from t2只返回一條數據,因此,select max(y)from t2為標量子查詢。子查詢select max(y)from t2返回t2表中的最大值t_max,然后原始SQL查詢語句可以被替換成select x from t1 where xt_max。
在原始SQL查詢中存在標量子查詢時,現有基于分布式數據庫的查詢方法是,主節點針對每一個標量子查詢,對原始SQL查詢進行解析生成執行計劃,將執行計劃下發至執行該標量子查詢的節點;執行該標量子查詢的節點接收執行計劃之后,執行該標量子查詢,并向主節點返回查詢的結果;主節點獲得各標量子查詢的結果并進行替換之后,再執行原始SQL查詢,將原始SQL查詢的執行計劃的各子計劃下發至對應的參與節點,各參與節點向主節點返回執行結果;主節點根據各參與節點返回的執行結果,獲得原始SQL查詢的結果。
如果原始SQL查詢中包含個數較多的標量子查詢,例如原始SQL查詢為select(select id from ta)from tb where(select name from tc)=“oracle”and case when(select tele_fee from td)20 then(select mobile_fee from te)else(select mes_fee from tf)end(select 50%*salary from tg),該原始SQL查詢包括了6個標量子查詢,主節點需要大量、重復性的執行語義的解析、執行計劃的生成、查詢結果的替換,執行的步驟比較復雜,導致查詢的效率比較低。
發明內容
本發明實施例提供一種基于分布式數據庫的查詢方法及裝置,用以解決或者至少部分地解決現有技術查詢的效率低的缺陷。
第一方面,本發明實施例提供一種基于分布式數據庫的查詢方法,包括:
對于包括若干個標量子查詢的原始SQL查詢語句,根據所述原始SQL查詢語句的解析樹,生成每一所述標量子查詢對應的子執行計劃和輔助執行代碼;
將各所述標量子查詢對應的子執行計劃和輔助執行代碼,分別發送至相應的參與節點;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京東方國信科技股份有限公司,未經北京東方國信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910853314.9/2.html,轉載請聲明來源鉆瓜專利網。





