[發明專利]HBase二級索引存儲和查詢系統及其查詢方法在審
| 申請號: | 201510633271.5 | 申請日: | 2015-09-29 |
| 公開(公告)號: | CN105205162A | 公開(公告)日: | 2015-12-30 |
| 發明(設計)人: | 王勇強;趙智峰;周帥鋒;曹俊亮;李佳寧;韋蓉;劉宇 | 申請(專利權)人: | 烽火通信科技股份有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 常州佰業騰飛專利代理事務所(普通合伙) 32231 | 代理人: | 翁斌 |
| 地址: | 213000 江蘇省南*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | hbase 二級 索引 存儲 查詢 系統 及其 方法 | ||
技術領域
本發明涉及數據處理技術領域,尤其涉及HBase二級索引存儲和查詢系統及其查詢方法。
背景技術
隨著大數據技術的發展和應用,HBase逐漸成為業界廣泛使用的NoSQL分布式存儲系統,它具有高可靠、面向列、開源等特點,已被Facebook、阿里巴巴等公司成功用于生產系統。如何對HBase進行高效的二級索引存儲、查詢是業界研究的熱點,目前被廣泛使用的方案架構如圖3所示,該方案主要包含三個模塊:HBase存儲模塊、查詢處理模塊、查詢執行引擎三部分。HBase存儲模塊負責原始數據和索引數據的存儲,具有分布式、大容量、快速響應的特點,類似的海量存儲系統也都可以用于作為存儲模塊,例如HyperTable(一種以C語言開發的分布式列存儲結構的大容量數據存儲系統),從存儲的角度看,現有方案是將數據表存儲于低速存儲介質(如SATA盤)用于存儲完整數據;對數據表的不同索引分別形成索引表,存儲于SATA硬盤,并且索引表按照業務需求冗余過濾列。查詢處理模塊收到客戶端下發的查詢請求,從查詢請求中獲取查詢條件,檢查查詢條件是否含有非法條件、錯誤條件等。如果查詢條件合法,則將該查詢條件發給查詢執行引擎;如果查詢條件非法,則將錯誤信息返回給客戶端。查詢執行引擎收到合法的查詢條件時,根據合法的查詢條件找出可查的數據表或索引表,然后將合法的查詢條件轉換為HBase可處理的查詢請求,執行查詢。
現有的二級索引存儲、查詢方案需要在數據表的每個索引表中冗余過濾列,數據冗余較大;進行查詢時,如果索引表未包含查詢條件中所有的過濾條件,則該索引表不可查,如果所有的索引表都不可查,則需要使用查詢條件構造過濾器,對數據表進行全表掃描,效率極低。
發明內容
本發明的目的是克服現有技術存在的缺陷,提供一種提高查詢效率的HBase二級索引存儲和查詢系統及其查詢方法。
實現本發明目的的技術方案是:HBase二級索引存儲和查詢系統,包括客戶端、查詢處理模塊、查詢執行引擎模塊和HBase存儲模塊,查詢處理模塊收到客戶端下發的查詢請求,查詢處理模塊從查詢請求中獲取查詢條件,查詢處理模塊將合法的查詢條件發送給查詢執行引擎模塊,查詢執行引擎模塊匹配查詢條件,從HBase存儲模塊中找出滿足要求的數據,HBase存儲模塊分別存儲索引表和數據表,索引表存儲在SATA硬盤上,數據表存儲在SSD固態硬盤上。
作為本發明的優化方案,查詢執行引擎模塊包括匹配模塊和查詢模塊,匹配模塊用于找出合法的查詢條件需要查詢的索引表或數據表,查詢模塊用于在匹配模塊匹配成功后,將合法的查詢條件轉換為HBase存儲模塊可以處理的查詢條件并執行查詢過程。
一種利用HBase二級索引存儲和查詢系統進行查詢的方法,包括如下步驟:
1)查詢處理模塊接收客戶端下發的查詢請求;
2)查詢處理模塊從查詢請求中獲取查詢條件,查詢處理模塊將合法的查詢條件發送給查詢執行引擎模塊進行處理;
3)查詢執行引擎模塊將合法的查詢條件與索引表的rowkey匹配,判斷是否能匹配到索引表;
4)查詢執行引擎模塊匹配到索引表,然后查詢執行引擎模塊判斷索引表中是否包含與合法的查詢條件對應的所有的過濾條件;
5)索引表中未包含與合法的查詢條件對應的所有的過濾條件,使用索引表的列構造過濾器,對索引表進行scan,得到數據表的rowkey;
6)使用合法的查詢條件構造過濾器,使用步驟5)得到的rowkey對數據表進行精確get;
7)返回查詢結果給客戶端。
作為本發明的優化方案,索引表中包含與合法的查詢條件對應的所有的過濾條件,使用合法的查詢條件構造過濾器,對索引表進行scan,獲取數據表的rowkey,使用得到的rowkey對數據表進行精確get。
本發明具有積極的效果:(1)本發明將數據表存儲在SSD固態硬盤,相較于傳統的SATA硬盤,數據讀寫速度快,大大的提高了查詢效率;
(2)現有方案中,當查詢條件和索引表的rowkey匹配,但是索引表未包含全部的過濾條件時,需要對數據表進行全表掃描,效率較低,本發明優化了匹配邏輯,當出現這樣的情況時,可以使用索引表中包含的過濾列條件作為過濾器,對索引表進行scan,得到數據表的rowkey;再使用查詢條件作為過濾器,使用rowkey對數據表進行精確get,得到查詢結果,減少了對數據表的全表掃描,大大提高了查詢效率。
附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于烽火通信科技股份有限公司,未經烽火通信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510633271.5/2.html,轉載請聲明來源鉆瓜專利網。





