本發明專利技術公開了一種基于MapDB構建的HBase數據檢索方法,包括如下步驟:a)通過數據接口操作MapDB數據庫進行數據讀寫操作;b)在數據寫入HBase之前,先對數據進行格式化,生成Hbase的RowKey作為一級索引,并對數據分割相應字段,將用于查詢的字段及其對應的RowKey寫入MapDB數據庫中作為二級索引;c)接著再將數據在MapDB數據庫中按照HBase的表及列進行分類存儲;d)采用二級索引查詢HBase時,先通過查詢字段在MapDB中獲取對應的RowKey集合,再通過HBase提供的get方法進行數據查詢。本發明專利技術能夠方便地采用二級索引查詢Hbase,快速匹配數據,大大提高查詢性能。
【技術實現步驟摘要】
本專利技術涉及一種數據庫多字段查詢方法,尤其涉及一種基于MapDB構建的HBase數據檢索方法。
技術介紹
HBase是一個分布式的、面向列的開源數據庫,它是利用HadoopHDFS作為其文件存儲系統。隨著HBase在性能和穩定性持續改善,HBase逐漸成為在大數據NoSQL領域的標準之一。在Hadoop之上提供了類似于Bigtable的能力,是Apache的Hadoop項目的子項目,其不同于一般的關系數據庫而是一個適合于非結構化數據存儲的數據庫,另一個不同之處是HBase是基于列的而不是基于行的模式,以表的形式存儲數據,表由行和列組成,列劃分為若干個列族(rowfamily),如下表所示。與nosql數據庫一樣,rowkey是用來檢索記錄的主鍵。訪問HBasetable中的行,只有三種方式:1、通過單個RowKey訪問;2、通過RowKey的range;3、全表掃描。RowKey行鍵(Rowkey)可以是任意字符串(最大長度是64KB,實際應用中長度一般為10-100bytes),在HBase內部,rowkey保存為字節數組。目前HBase主要應用在結構化和半結構化的大數據存儲上,其在插入和讀取上都具有極高的性能表現,這與它的數據組織方式有著密切的關系,在邏輯上,HBase的表數據按RowKey進行字典排序,RowKey實際上是數據表的一級索引(PrimaryIndex),由于HBase本身沒有二級索引(SecondaryIndex)機制,基于索引檢索數據只能單純地依靠RowKey,為了能支持多條件查詢,開發者需要將所有可能作為查詢條件的字段一一拼接到RowKey中,這是HBase開發中極為常見的做法,但是無論怎樣設計,單一RowKey固有的局限性決定了它不可能有效地支持多條件查詢。通常來說,RowKey只能針對條件中含有其首字段的查詢給予令人滿意的性能支持,在查詢其他字段時,表現就差強人意了,在極端情況下某些字段的查詢性能可能會退化為全表掃描的水平,這是因為字段在RowKey中的地位是不等價的,它們在RowKey中的排位決定了它們被檢索時的性能表現,排序越靠前的字段在查詢中越具有優勢,特別是首位字段具有特別的先發優勢,如果查詢中包含首位字段,檢索時就可以通過首位字段的值確定RowKey的前綴部分,從而大幅度地收窄檢索區間,如果不包含則只能在全體數據的RowKey上逐一查找,由此可以想見兩者在性能上的差距。由上可見,如何在確保非侵入的前提下,以高性能為首要目標,通過建立二級多列索引實現了對復雜條件查詢的支持,成為HBase最受關注的研究方向。
技術實現思路
本專利技術所要解決的技術問題是提供一種基于MapDB構建的HBase數據檢索方法,能夠方便地采用二級索引查詢Hbase,快速匹配數據,大大提高查詢性能。本專利技術為解決上述技術問題而采用的技術方案是提供一種基于MapDB構建的HBase數據檢索方法,包括如下步驟:a)通過數據接口操作MapDB數據庫進行數據讀寫操作;b)在數據寫入HBase之前,先對數據進行格式化,生成Hbase的RowKey作為一級索引,并對數據分割相應字段,將用于查詢的字段及其對應的RowKey寫入MapDB數據庫中作為二級索引;c)接著再將數據在MapDB數據庫中按照HBase的表及列進行分類存儲;d)采用二級索引查詢HBase時,先通過查詢字段在MapDB中獲取對應的RowKey集合,再通過HBase提供的get方法進行數據查詢。上述的基于MapDB構建的HBase數據檢索方法,其中,所述步驟a)通過遠程rmi接口操作MapDB數據庫進行數據讀寫操作,所述遠程rmi接口調用為采用java編程語言開發的實現遠程對象之間無縫調用的數據接口。上述的基于MapDB構建的HBase數據檢索方法,其中,所述步驟b)在寫入HBase數據之前,每條入庫數據均生成一個RowKey以及至少一個用于查詢的字段,并將用于查詢的字段通過rmi接口調用MapDB,將字段值及rowkey寫入到MapDB中。上述的基于MapDB構建的HBase數據檢索方法,其中,所述MapDB采用哈希表HashMap存儲字段值及其對應的Hbase的RowKey,并將數據按照不同的業務存儲到不同的MapDB中。上述的基于MapDB構建的HBase數據檢索方法,其中,所述步驟c)中MapDB數據庫采用HBase的表名作為獲取HashMap的key值,采用HBase列作為HashMap中的鍵,并在HashMap里面存儲RowKey集合。上述的基于MapDB構建的HBase數據檢索方法,其中,所述MapDB采用文件存放方式將數據寫入到本地磁盤進行持久化,并在JVM關閉時關閉文件流。上述的基于MapDB構建的HBase數據檢索方法,其中,所述步驟d)通過HBase的客戶端進行條件查詢時,先通過rmi調用MapDB進行查詢獲取RowKey,再通過HBase提供的get方法獲取數據。上述的基于MapDB構建的HBase數據檢索方法,其中,所述步驟b)中每條入庫數據格式化生成RowKey后,按照分隔符進行分割,并將用于后續查詢的字段及字段值拼接進來,寫入List集合中;所述步驟c)調用MapDB的寫入接口將RowKey、HBase表名及List集合傳遞過去,寫入MapDB數據庫中;所述步驟d)采用二級索引進行數據查詢時,將查詢條件按照入庫時的拼接方式將字段及字段值進行拼接,寫入List集合中,并遠程rmi接口調用MapDB的查詢接口將HBase表名及List集合傳遞過去,獲取相應的RowKey集合,返回結果為List<String>集合,并通過字節流的方式返回到HBase的客戶端,所述HBase的客戶端采用HTable的get方法,直接將整個List<String>集合作為參數進行數據檢索。上述的基于MapDB構建的HBase數據檢索方法,其中,所述HBase的客戶端接收到MapDB服務器返回的RowKey集合后,判斷RowKey集合是否存在數據,不存在的則直接返回;如果RowKey集合中存在數據,首先遍歷該RowKey集合獲取所有的RowKey,構造GET對象并寫入到該RowKey集合中,然后通過HBase的批量GET方法獲取HBase數據。上述的基于MapDB構建的HBase數據檢索方法,其中,還包括查詢HBase時,如果查詢字段中包含一級索引RowKey中的首位字段,則直接通過Scan設置StartKey和EndKey參數后進行數據查詢。本專利技術對比現有技術有如下的有益效果:本專利技術提供的基于MapDB構建的HBase數據檢索方法,在數據寫入HBase之前,先對數據進行格式化并分割相應字段,將用于查詢的字段及其對應的RowKey寫入MapDB數據庫中作為二級索引,從而能夠方便地采用二級索引查詢Hbase,快速匹配數據,大大提高查詢性能。附圖說明圖1為本專利技術基于MapDB構建的HBase數據檢索流程示意圖;圖2為本專利技術使用的MapDB數據庫的結構導圖;圖3為本專利技術數據寫入HBase的流程圖;圖4為本專利技術HBase數據查詢的流程圖。具體實施方式下面結合附圖和實施例對本專利技術作進一步的描述。圖1為本專利技術基于MapDB本文檔來自技高網...

【技術保護點】
一種基于MapDB構建的HBase數據檢索方法,其特征在于,包括如下步驟:a)通過數據接口操作MapDB數據庫進行數據讀寫操作;b)在數據寫入HBase之前,先對數據進行格式化,生成Hbase的RowKey作為一級索引,并對數據分割相應字段,將用于查詢的字段及其對應的RowKey寫入MapDB數據庫中作為二級索引;c)接著再將數據在MapDB數據庫中按照HBase的表及列進行分類存儲;d)采用二級索引查詢HBase時,先通過查詢字段在MapDB中獲取對應的RowKey集合,再通過HBase提供的get方法進行數據查詢。
【技術特征摘要】
1.一種基于MapDB構建的HBase數據檢索方法,其特征在于,包括如下步驟:a)通過數據接口操作MapDB數據庫進行數據讀寫操作;b)在數據寫入HBase之前,先對數據進行格式化,生成Hbase的RowKey作為一級索引,并對數據分割相應字段,將用于查詢的字段及其對應的RowKey寫入MapDB數據庫中作為二級索引;c)接著再將數據在MapDB數據庫中按照HBase的表及列進行分類存儲;d)采用二級索引查詢HBase時,先通過查詢字段在MapDB中獲取對應的RowKey集合,再通過HBase提供的get方法進行數據查詢。2.如權利要求1所述的基于MapDB構建的HBase數據檢索方法,其特征在于,所述步驟a)通過遠程rmi接口操作MapDB數據庫進行數據讀寫操作,所述遠程rmi接口調用為采用java編程語言開發的實現遠程對象之間無縫調用的數據接口。3.如權利要求1所述的基于MapDB構建的HBase數據檢索方法,其特征在于,所述步驟b)在寫入HBase數據之前,每條入庫數據均生成一個RowKey以及至少一個用于查詢的字段,并將用于查詢的字段通過rmi接口調用MapDB,將字段值及rowkey寫入到MapDB中。4.如權利要求3所述的基于MapDB構建的HBase數據檢索方法,其特征在于,所述MapDB采用哈希表HashMap存儲字段值及其對應的Hbase的RowKey,并將數據按照不同的業務存儲到不同的MapDB中。5.如權利要求4所述的基于MapDB構建的HBase數據檢索方法,其特征在于,所述步驟c)中MapDB數據庫采用HBase的表名作為獲取HashMap的key值,采用HBase列作為HashMap中的鍵,并在HashMap里面存儲RowKey集合。6.如權利要求5所述的基于MapDB構建的HBase數據檢索方法,其特征在于,所述MapDB采用文件存放方式將數據寫入到本地磁盤進行持久化,...
【專利技術屬性】
技術研發人員:梁猛,李永強,任姣姣,
申請(專利權)人:梁猛,李永強,任姣姣,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。