999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Redis實現HBase二級索引的方法

2016-12-15 02:47:14史金鑫
軟件 2016年11期
關鍵詞:數據庫方法

崔 丹,史金鑫

(1. 北京郵電大學網絡技術研究院,北京市 100876;2. 上海欣方智能系統有限公司北京分公司,北京市 100085)

基于Redis實現HBase二級索引的方法

崔 丹1,史金鑫2

(1. 北京郵電大學網絡技術研究院,北京市 100876;2. 上海欣方智能系統有限公司北京分公司,北京市 100085)

隨著大數據時代的到來,海量數據對傳統數據庫技術提出了存儲和檢索性能的挑戰。HBase是開源NoSQL數據庫,適合于各種非結構化和半結構化的松散數據的存儲和管理,目前已經被很多大型企業用于處理海量數據。它基于rowkey的有序存儲,對rowkey支持毫秒級的快速檢索。然而,隨著HBase應用的不斷深入,單一的通過rowkey檢索數據的方式不再滿足需求,在實際應用中,經常需要根據指定字段,或者幾個字段進行組合檢索。針對該問題,本文提出了一種基于Redis創建HBase 二級索引的方法,使得在實際應用中,支持多條件查詢,提升查詢的效率和性能。

大數據;HBase;二級索引;rowkey;Redis

本文著錄格式:崔丹,史金鑫. 基于Redis實現HBase二級索引的方法[J]. 軟件,2016,37(11):64-67

0 引言

隨著信息技術的發展,網絡己經成為人們交流、娛樂等活動的主要工具,互聯網的內容越來越豐富,數據規模也愈加龐大[1]。一些國內外著名的社交網站Facebook、Twitter、LinkedIn,搜索網站Coogle、Yahoo、Baidu、Sougo,購物網站Amazon、Taobao等大型網站,它們的用戶規模龐大,網絡請求并發性高,需要處理甚至級的數據[2]。大數據時代的到來,對傳統關系型數據庫的存儲和檢索性能提出了挑戰,無法滿足這么大規模數據的高效存儲與高并發讀寫需求。為了解決這個問題,一些公司、研究結構紛紛開發云上的數據庫系統,它們統稱為NoSQL。NoSQL是指用于存儲和處理大規模結構化或非結構化數據,能夠隨著數據規模增大而擴展的數據庫系統[3]。

HBase(Hadoop Database,Hadoop數據庫)是參照Google Bigtable實現的開源NoSQL數據庫,它具有強一致性、高性能隨機寫、面向字段且可動態修改、可水平伸縮的特性,適合于各種非結構化和半結構化的松散數據的存儲和管理,目前已經被很多大型企業用于處理海量數據[4]。然而,它本身還存在著一些問題, 如僅支持主索引結構,不支持跨行事務等,這些問題都嚴重制約著HBase的進一步發展。針對該問題,本文提出了一種基于Redis實現HBase二級索引的方法,對HBase表中涉及條

件過濾的字段和rowkey在Redis中建立索引,通過Redis的多條件查詢快速獲得符合過濾條件的rowkey,之后在HBase中通過獲得的rowkey進行查詢,提升多條件查詢的效率和性能。

1 HBase二級索引技術研究

隨著大數據時代的到來,海量數據的規模超過常規數據庫工具獲取存儲管理和分析能力。大數據具有5V1C的特征:數據量巨大(Volume)、數據類型繁多(Variety)、生成速度快(Velocity)、數據易變化(Variability)、數據真實性(Veracity)、數據復雜性(Complexity)[5]。HBase數據庫在存儲大數據方面性能較好,但是需要進一步優化對海量數據的結構化查詢。由于HBase基于rowkey的有序存儲,對基于rowkey的查詢十分高效,然而進行關系型數據庫那樣可以隨意組合的多條件查詢、查詢總記錄數、分頁查詢等表現不佳。目前,可通過以下兩種方法解決該問題。第一種方法是使用HBase提供的過濾器,該過濾器可以對HBase中的數據在多個維度上進行檢索操作。該方法使用起來簡單,但局限性較大,過濾器直接掃描HBase表,如果數據表范圍很大,會導致查詢速度很慢。第二種方法是實現HBase二級索引,通過查詢二級索引獲得符合條件的rowkey,然后再通過rowkey查詢HBase數據。該方法適用范圍比較廣泛。

二級索引方案類似于關系數據庫中的二級索引,為了實現對非rowkey的查詢,需要為每一個索引列構建一個索引表,實現索引列與原有rowkey的映射[6]。目前實現HBase二級索引的方法主要是以下兩種:

第一種方法通過HBase協處理器生成并訪問索引數據,將索引數據單獨存儲為一張表。該方法的缺點是數據表與索引表的數據一致性很難保證,訪問兩張不同的表也會增加遠程調用的次數和IO開銷。

第二種方法是將數據和索引數據存儲在相同的分區里,將索引數據定義為一個單獨的字段族,也是需要通過協處理器來生成并訪問二級索引數據。該方法中,單表的數據容量會急劇增加,對多個字段族進行拆分或合并等操作時可能會造成數據丟失或不一致。

2 基于Redis實現HBase二級索引方法

Redis是一個開源的使用ANSIC語言編寫、支持網絡、可基于內存亦可持久化的日志型、高性能的Key-Value數據庫[7]。根據官方的bench-mark數據,測試完成50個并發執行100000個請求,設置和獲取的值是一個256字節字符串時讀的速度可達到110000次/s,寫的速度可達到81000次/s。它支持存儲的數據類型包括字符串、鏈表、集合、有序集合和哈希類型。通過使用集合和有序集合實現對非rowkey的精確查詢和范圍查詢創建不同的二級索引,以提升多條件查詢的效率和性能。

圖1 基于Redis實現HBase二級索引的組成結構Fig.1 the structure of achieving the HBase secondary index based on Redis

如圖1所示,基于Redis實現HBase二級索引的系統組成主要包括客戶端、數據處理模塊、二級索引模塊。客戶端發出數據更新、查詢、刪除請求,數據處理模塊對請求進行分別處理,進行數據的更新、查詢和刪除,相應地,二級索引模塊根據客戶端的請求進行二級索引的更新、查詢和刪除。基于Redis實現HBase二級索引時,協處理器相當于一個回調函數。協處理器通過配置可以實現作用到HBase中所有表,也可以單獨指定作用到一張表。當用戶操作get/put/delete 數據的時候,HBase的regionserver會在 get/put/delete 方法的時候,回調一個實現協處理器類中的方法,方法中可以獲得你get/put/delete的數據,從而實現構建二級索引的操作。

HBase在對非rowkey進行檢索的過程如圖2所示。將HBase表中涉及條件過濾的字段和rowkey在Redis中建立索引,通過Redis的多條件查詢快速獲得符合過濾條件的rowkey值,再根據獲得的rowkey在HBase中通過rowkey進行查詢,進而提高查詢的效率。

3 HBase二級索引數據結構設計

在實際應用中,對HBase數據的查詢包括兩種,一是基于rowkey條件查詢,此時不需要對HBase表中數據建立二級索引便可獲得較高的查詢速度;二是基于非rowkey的條件查詢,包括精確查詢和范圍查詢,此時可通過Redis的set和sorted set實現

二級索引,進而獲得較高的檢索效率。set和sorted set類型極為相似,它們都是字符串的集合,都不允許重復的成員出現在一個set中。它們之間的主要差別是sorted set中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。然而需要額外指出的是,盡管Sorted-Sets中的成員必須是唯一的,但是score)是可以重復的。

以HBase中數據表為例,如表1,對age建立二級索引:

圖2 基于Redis實現HBase非rowkey查詢過程Fig.2 the process for HBase non-rowkey query based on Redis

表1 HBase數據表Tab.1 a data table of HBase

基于非rowkey的精確條件查詢,建立的二級索引結構為key-value,key為列名_值,value為rowkey。使用Redis的set類型進行存儲,sadd(key,value)添加二級索引,生成的二級索引如表2所示下:

表2 Redis中set存儲二級索引Tab.2 the secondary index stored in Redis set

基于非rowkey的范圍條件查詢,建立的二級索引結構為key-score-value,key為列名,score為列值,value為列值_rowkey。使用redis的sorted set類型進行存儲,方法zadd(key,score,value)添加二級索引,score是按序存儲的。生成的二級索引如下:

表3 Redis中sorted set存儲的二級索引Tab.3 the secondary index stored in Redis sorted set

4 HBase二級索引數據結構設計

本文在Centos 6.5上部署分布式HBase和Redis系統,安裝的軟件版本是JDK1.7.0_55,Hadoop 1.1.2,HBase 0.96.2,Redis 3.2.1。在對HBase建立二級索引之后,分別對HBase系統進行了插入和查詢數據兩方面的性能測試。

本文使用插入語句進行測試,分別在插入語句條數為1 W、10 W和100 W的時候進行測試,并針對列足否有索引的情況分別進行測試。為了減少測試誤差,采用多次測試然后取平均值的方法進行測試。插入性能的測試結果如表4所示:

表4 HBase的插入性能測試結果Tab.4 the results of testing for HBase insert performance

根據測試結果可知,在實現二級索引的情況下,插入數據需要耗費更多的時間。這是因為,在HBase中插入數據后,還需要觸發協處理器創建相應的二級索引存入Redis。在有索引和無索引的時插入數據,會隨著入庫數據的條數增加而增加。這兩種情況下在HBase插入操作都是根據rowkey進行插入的,而數據表是按照rowkey順序分布式存儲的,因此在需要建立二級索引的情況下多花費的時間即為寫入Redis的時間。

本文使用查詢語句對HBase查詢性能進行測試,分別在查詢語句條數為1 W、10 W和100 W進行測試。查詢性能的測試結果如表5所示:

表5 HBase的查詢性能測試結果Tab.5 the results of testing for HBase select performance

根據測試結果可知,在實現二級索引的情況下,HBase查詢性能極大提升。這是因為HBase在執行基于rowkey的查詢時,查詢速率很高,而在建立二級索引的情況,系統會將對非rowkey的查詢,通過查詢Redis中的二級索引獲得符合條件的rowkey,再通過rowkey在HBase中獲得數據集,間接地將基于非rowkey的查詢轉化為基于rowkey的查詢,獲得較高的查詢效率。

本文對上述所有測試結果進行綜合分析,得出如下結論。釆用二級索引能夠極大提高數據査詢的效率,實現海量數據旳實時查詢。通過二級索引進行數據查詢、更新和刪除操作時,都是先對索引表按rowkey查詢取得索引數據,再根據HBase表的rowkey進行相應操作。按照rowkey順序進行存儲,根據rowkey進行查詢操作的效率很高。

5 結論

本文提出了一種基于Redis實現HBase二級索引的方法,當客戶端向HBase中寫數據時,觸發協處理器,根據當前表的索引規則在Redis中創建二級索引。在創建二級索引的過程中使用了數據庫連接池,減少了由于不斷創建新連接的開銷,實現快速構建二級索引。在該方法中,實現了多表對應一個協處理器的機制;可對索引字段進行靈活配置,以滿足精確查詢和范圍查詢的需求;實現基于內存數據庫的二級索引存儲機制,將HBase數據表生成的二級索引存儲在Redis內存數據庫。當客戶端發出查詢請求時,可以快速查詢二級索引,大幅提升訪問效率。

[1] 李國杰, 程學旗. 大數據研究: 未來科技及經濟社會發展的重大戰略領域——大數據的研究現狀與科學思考[J]. 中國科學院院刊, 2012, 27(6): 647-657. LI G J, CHENG X Q, XUE W W. Big Data Research: Major Strategic Fields for Future Technology and Economic and Social Development-Research Status and Scientific Thinking of Big Data[J]. Chinese Academy of Sciences, 2012, 27(6): 647-657. (in Chinese)

[2] 王珊, 王會舉, 覃雄派等. 架構大數據: 挑戰、現狀與展望[J]. 計算機學報, 2011, 34(10): 1741-1752. WANG S, WANG H J, QIN X P, et al. Architectural Big Data: Challenges, Status Quo and Prospects[J]. Chinese Journal of Computers, 2011, 34(10): 1741-1752. (in Chinese)

[3] 盧益陽. NoSQL數據管理系統綜述[J]. 企業科技與發展, 2011, (17): 31-33. LU Y Y. A Survey of NoSQL Data Management System[J]. Enterprise Science Technology and Development, 2011, (17): 31-33. (in Chinese)

[4] 卓海藝. 基于HBase的海量數據實時查詢系統設計與實現[D]. 北京:北京郵電大學,2013. ZHUO H Y. Design and Implementation of Real - time Query System Based on HBase for Massive Data[D]. Beijing: Beijing University of Posts and Telecommunications, 2013. (in Chinese)

[5] 孟小峰, 慈祥. 大數據管理: 概念、技術與挑戰[J]. 計算機研究與發展, 2013, 50(1): 146-169. MENG X F, CI X. Big Data Management: Concepts, Technologies and Challenges[J]. Computer Research and Development, 2013, 50(1): 146-169. (in Chinese)

[6] 馬友忠, 孟小峰. 云數據管理索引技術研究[J]. 軟件學報, 2015, 26(1): 145-166. MA Y Z, MENG X F. Research on Cloud Data Management Index Technology[J]. Journal of Software, 2015, 26(1): 145-166. (in Chinese)

[7] 曾超宇, 李金香. Redis在高速緩存系統中的應用[J]. 微型機與應用, 2013, 32(12): 11-13. ZENG C Y, LI J X. Application of Redis in Caching System[J]. Microcomputer and Its Applications, 2013, 32(12): 11-13. (in Chinese)

Implementation of HBase Secondary Index Based on Redis

CUI Dan1, SHI Jin-xin2
(1. Network Technology Research Institute, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2. Shanghai Cintel Intelligent System Co., Ltd. Beijing Branch, Beijing 100085, China)

With the arrival of the big data era, these massive data challenges traditional storage and retrieval performance for traditional database technologies. HBase is open source NoSQL database, suitable for a variety of unstructured and semi-structured data storage and management of the loose, and has been used by many large enterprises to deal with massive data. It is based on the rowkey of the orderly storage, supporting millisecond-level rapid retrieval based on rowkey. However, with the deepening of HBase applications, a single rowkey retrieval of data by no longer meet the needs of more applications. The practical applications often need to specify the field, or a combination of several fields to retrieve. To solve this problem, this paper proposes a method of creating HBase secondary index based on Redis, which can support multi-conditional query and improve query efficiency and performance in practical application.【Key words】: Bid data; HBase; Secondary index; Rowkey; Redis

TP311

A

10.3969/j.issn.1003-6970.2016.11.015

崔丹(1990-),女,碩士研究生,主要研究方向為數據庫集群中間件負載均衡技術

猜你喜歡
數據庫方法
學習方法
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 97在线观看视频免费| A级毛片高清免费视频就| 国产成人亚洲毛片| 99久久精品久久久久久婷婷| 小说区 亚洲 自拍 另类| 老司机午夜精品网站在线观看| 日韩在线影院| 欧美69视频在线| 国产99精品视频| 99ri精品视频在线观看播放| 日韩第八页| 精品成人一区二区| 亚洲第一极品精品无码| 视频国产精品丝袜第一页| 久久香蕉国产线看观看亚洲片| 四虎影视库国产精品一区| 欧美成人A视频| 曰AV在线无码| 国产激情无码一区二区免费| 孕妇高潮太爽了在线观看免费| 草逼视频国产| 亚洲午夜天堂| 国产福利一区在线| 色综合久久无码网| 久久综合五月婷婷| 日韩精品久久久久久久电影蜜臀| 91年精品国产福利线观看久久| 男女男精品视频| 99re免费视频| 青草国产在线视频| 好紧好深好大乳无码中文字幕| 成人在线第一页| 色噜噜久久| 在线综合亚洲欧美网站| 欧美一区二区三区不卡免费| 欧美福利在线观看| 丁香亚洲综合五月天婷婷| 亚洲色图综合在线| 亚洲精品卡2卡3卡4卡5卡区| 久久不卡国产精品无码| 成人国产三级在线播放| 精品国产中文一级毛片在线看| 中文无码伦av中文字幕| 99免费视频观看| 国产在线拍偷自揄观看视频网站| 一本综合久久| 久久精品电影| 国产精品性| 91在线日韩在线播放| 青草视频久久| 欧美特黄一免在线观看| 国产欧美日韩免费| 国产精品女同一区三区五区| 国产一级毛片yw| 狠狠色婷婷丁香综合久久韩国| 国产麻豆精品在线观看| 亚洲色图欧美在线| 国产亚洲精久久久久久无码AV| 欧美日韩国产精品综合| 91久久精品日日躁夜夜躁欧美| 91精品国产91久无码网站| 日本福利视频网站| 婷婷在线网站| 55夜色66夜色国产精品视频| 人妻少妇久久久久久97人妻| 91外围女在线观看| 久草网视频在线| 国产成人综合在线观看| 无码AV动漫| 欧美日韩午夜| 亚洲香蕉在线| 精品少妇人妻无码久久| 免费激情网站| 午夜免费小视频| 久久久久中文字幕精品视频| 国产成人精品在线1区| 日韩欧美中文在线| 青青青国产在线播放| 麻豆AV网站免费进入| 欧美一级在线看| 自拍偷拍欧美日韩| 国产欧美在线观看视频|