• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    HBase二級索引查詢引擎實現(xiàn)探討

    2018-10-21 09:40:30黃煒耀
    科技風 2018年32期

    黃煒耀

    摘 要:本文主要對如何基于HBase構(gòu)建二級索引查詢引擎進行研究探討。首先分析說明了HBase查詢靈活性上存在的問題,接著簡單介紹二級索引的含義,從而引入本文討論的主題,最后給出較詳細的查詢引擎總體架構(gòu)圖及各核心功能模塊的實現(xiàn)方案。

    關(guān)鍵詞:二級索引;查詢引擎;HBase

    HBase是一個分布式、列式數(shù)據(jù)庫,因其具有高擴展性、高并發(fā)性、穩(wěn)定性以及數(shù)據(jù)高安全性等優(yōu)點,而被大多數(shù)分布式系統(tǒng)所使用。但其數(shù)據(jù)查詢支持上較關(guān)系型數(shù)據(jù)庫就要弱很多,只能通過完整的Rowkey進行g(shù)et或按前綴模糊scan的方式進行,必要時再輔助以SingleColumnValueFilter、RowFilter、ValueFilter方式進一步對數(shù)據(jù)進行過濾。為了保證數(shù)據(jù)查詢的效率,表設計時必須慎重考慮Rowkey的設計,但隨著業(yè)務需求的變化,原先的Rowkey信息往往不能滿足需要,此時只能通過降低查詢性能或重新設計Rowkey并對歷史數(shù)據(jù)重新導入以滿足需求。接下來我們將要介紹的二級索引查詢引擎,可以減小業(yè)務需求變化時引起Rowkey設計方案過時引起的查詢問題。

    1 二級索引查詢引擎

    1.1 什么是二級索引

    關(guān)系型數(shù)據(jù)庫表的索引分為兩類:主索引(聚集索引)和二級索引(非聚集索引)。主索引一般對應的是主鍵,而系統(tǒng)可以根據(jù)需要建立多個二級索引,輔助與提升查詢性能。基于HBase實現(xiàn)的二級索引主數(shù)據(jù)Rowkey相當于主索引,而我們擴展出來的索引數(shù)據(jù)既是二級索引,借助二級索引可以實現(xiàn)查詢條件非Rowkey組成部分的查詢需求與提升查詢性能。

    1.2 Coprocessor介紹

    一個功能再強大的系統(tǒng)都不能滿足其所有使用者的一切需求。而Coprocessor就是HBase專門為用戶提供擴展功能的一個途徑。借助Coprocessor,用戶可以根據(jù)自己實際需求定制出適合自己的功能,并借助HBase現(xiàn)有的框架體系實現(xiàn)高效運行。

    Coprocessor功能在0.92版本中引入,其支持兩種協(xié)處理器:EndPoint和Observer。

    1.2.1EndPoint

    類似于關(guān)系型數(shù)據(jù)庫的存儲過程,使用者通過開發(fā)對應的客戶端、服務端即可,通過在RegionServer上高效執(zhí)行本地計算操作。

    1.2.2Observer

    類似于關(guān)系型數(shù)據(jù)庫的觸發(fā)器,用戶通過它可以在服務端實現(xiàn)動作攔截進行特殊處理。

    1.3 二級索引查詢引擎

    引擎架構(gòu)圖

    從引擎架構(gòu)圖可以看出,客戶端通過原生的HTable類將數(shù)據(jù)put至RegionServer(以下簡稱RS),接著RS端Coprocessor的Observer功能對put/delete指令進行攔截,通過索引構(gòu)造器生成事先配置的索引數(shù)據(jù);查詢則通過EndPoint來實現(xiàn),客戶端通過自定義API設置好查詢條件,并提交到RS端,服務端首先分析客戶端提交的條件信息,通過查詢決策器選擇最優(yōu)的索引進行查詢。下面我們對關(guān)鍵模塊功能實現(xiàn)方案進行分析:

    1.3.1Rowkey設計

    二級索引的實現(xiàn)方案中,Region除了保留客戶端put上來的主數(shù)據(jù)外,還需保留索引數(shù)據(jù)與主數(shù)據(jù)的對應關(guān)系,為了提升性能需要保證索引數(shù)據(jù)、主數(shù)據(jù)在同Region中,避免出現(xiàn)跨Region讀寫,因此索引數(shù)據(jù)可以參考以下規(guī)則設計:

    Region.startKey.indexName.indexValue.MainRowkey

    1.3.2索引構(gòu)造器

    解析業(yè)務數(shù)據(jù),根據(jù)預先加載的索引信息,從業(yè)務數(shù)據(jù)中提取索引字段值,并依次生成索引數(shù)據(jù)。

    1.3.3查詢決策器

    根據(jù)預先加載的索引信息,從業(yè)務數(shù)據(jù)中提取索引字段,并分析查詢條件,根據(jù)策略從已有的索引信息匹配最優(yōu)的查詢索引,如,某表存在以下兩組索引:

    indexName1:fieldA

    indexName2:fieldA.fieldB

    客戶端提交上來的查詢條件為:fieldA=xxx and fieldB=yyyy and fieldC>=zzz…

    此時查詢決策器根據(jù)最優(yōu)策略選擇indexName2索引進行查詢。

    1.3.4索引查詢

    通過二級索引獲取主數(shù)據(jù)的過程相較傳統(tǒng)的關(guān)系型數(shù)據(jù)庫并沒有多少區(qū)別,首先根據(jù)二級索引字段值找到索引數(shù)據(jù),再通過索引數(shù)據(jù)獲取主數(shù)據(jù)內(nèi)容。

    1.3.5全表掃描

    對于設置了二級索引功能屬性的表,Region保留有索引、主數(shù)據(jù),實際運用過程中索引記錄數(shù)將超過主數(shù)據(jù),為了提升遍歷業(yè)務數(shù)據(jù)的效率,須提提供只遍歷主數(shù)據(jù)的功能。

    2 結(jié)語

    本文首先對HBase的功能進行簡單描述后,重點分析說明HBase在查詢靈活性上存在的問題,從而進入HBase二級索查詢引擎的主題。接著較詳細地說明Coprocessor核心功能與類型,最后給出查詢引擎的架構(gòu)圖以及各核心功能的實現(xiàn)方案。HBase做為Apache重要的子項目之一,目前比較穩(wěn)定,并且已有的功能可以滿足大多數(shù)系統(tǒng)的需求,借助Coprocessor用戶可以像本文所描述的二級查詢引擎一樣實現(xiàn)屬于自己的功能。

    參考文獻:

    [1][美]喬治.HBase權(quán)威指南.出版社:人民郵電出版社.

    [2][美]迪米達克.HBase實戰(zhàn).出版社:人民郵電出版社.

    鸡西市| 隆安县| 东台市| 龙口市| 连南| 北碚区| 富裕县| 临夏市| 乐山市| 芜湖县| 蚌埠市| 岑巩县| 枣庄市| 阿勒泰市| 张掖市| 德安县| 那坡县| 县级市| 花垣县| 珲春市| 长泰县| 通道| 修文县| 凉城县| 二连浩特市| 兴业县| 遵化市| 买车| 阿巴嘎旗| 施甸县| 仪陇县| 绍兴市| 开原市| 平凉市| 襄城县| 新化县| 平远县| 库尔勒市| 四会市| 岑巩县| 雷山县|