HBase二级索引的设计方法及查询方法与流程

文档序号:13287880阅读:1095来源:国知局
技术领域本发明涉及Hbase技术领域,尤其涉及HBase二级索引的设计方法及查询方法。

背景技术:
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop能够对大量数据进行分布式处理,并具有高可靠性、高扩展性、高效性、高容错性、低成本等优点。HBase是一个分布式的、面向列的开源数据库,是Apache的Hadoop项目的子项目。它不同于一般的关系型数据库,是一个适合于非结构化数据存储的数据库。HBase是建立在Hadoop之上的,用户通过行键和主键的范围来检索数据,能够为海量的数据提供高性能的数据维护及查询服务。但是,HBase也存在不足之处,它只能支持基于主键的快速查询,而不支持基于值的快速查询。

技术实现要素:
针对现有的技术存在的上述问题,现提供HBase二级索引的设计方法及查询方法的技术方案,具体如下:HBase二级索引的设计方法,其中,所述设计方法包括:步骤S1,根据一数据源文件的数据量对HBase中的一数据表进行预分区,得到特定数量的区域;步骤S2,将每个所述区域划分为主数据区和关联于所述主数据区的索引区;步骤S3,在所述索引区中添加一不包含任何列限定符的索引列簇,所述索引列簇的行键设为区域起始行键|索引列|索引键|索引值。优选的,在所述步骤S3之后还包括:步骤S4,将所述数据源文件的数据以一预设存储模式存储于所述特定数量的所述区域的所述主数据区中。优选的,所述预设存储模式包括:对所述主数据区的一列簇的一行键添加一随机产生的Hash前缀;以及对所述索引区的所述列簇的所述行键添加所述Hash前缀。优选的,所述步骤S1中,所述数据表被均匀划分成所述特定数量的所述区域。优选的,所述步骤S1中,所述特定数量中的第一个所述区域的起始行键和最后一个所述区域的终止行键均设为空字节。本发明还提供HBase二级索引的查询方法,其中,所述查询方法包括:步骤A1,根据一包含索引列和索引键的查询条件遍历一数据表的所有区域,得到对应于所述查询条件的区域;步骤A2,根据所述查询条件,在所述区域中选择一与所述区域同一起始行键的行键区间;步骤A3,根据所述起始行键、所述查询条件的所述索引列和所述索引键扫描所述行键区间,得到所述行键区间内的索引区的索引列簇的行键;步骤A4,根据所述行键的索引值,在对应于所述索引区的主数据区的索引列簇中进行检索,得到对应于所述查询条件的查询结果。优选的,所述步骤A3中,通过一终端协处理器构造一对应于所述行键区间的扫描器扫描所述行键区间。优选的,所述终端协处理器所使用的通信协议为Protobuf协议。上述技术方案的有益效果:提供HBase二级索引的设计方法及查询方法,解决了HBase只能进行基于行键的查询而不能进行基于值的查询的巨大不足,不仅支持基于行键的快速查询,还支持基于值的快速查询,大大提升了用户的使用体验。附图说明图1为本发明的较佳的实施例中,HBase二级索引的设计方法流程示意图;图2为本发明的较佳的实施例中,HBase二级索引的查询方法流程示意图;图3为本发明的较佳的实施例中,空气质量监测数据及索引存储模式示意图;图4为本发明的较佳的实施例中,对数据表进行预分区后得到的区域示意图;图5为本发明的较佳的实施例中,区域的索引区和主数据区的数据逻辑示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。本发明的较佳的实施例中,基于现有技术中存在的上述问题,提供HBase二级索引的设计方法,其流程如图1所示,设计方法包括:步骤S1,根据一数据源文件的数据量对HBase中的一数据表进行预分区,得到特定数量的区域;可通过createTable函数进行预分区;步骤S2,将每个区域划分为主数据区和关联于主数据区的索引区;步骤S3,在索引区中添加一不包含任何列限定符的索引列簇,索引列簇的行键设为区域起始行键|索引列|索引键|索引值。本发明的较佳的实施例中,在步骤S3之后还包括:步骤S4,将数据源文件的数据以一预设存储模式存储于特定数量的区域的主数据区中。本发明的较佳的实施例中,预设存储模式包括:对主数据区的一列簇的一行键添加一随机产生的Hash前缀;以及对索引区的列簇的行键添加Hash前缀。上述技术方案中,给数据添加随机产生的Hash前缀,在大数据量前提下,可以使得数据在特定数量的区域内均匀分布,从而达到负载均衡的目的。本发明的较佳的实施例中,步骤S1中,数据表被均匀划分成特定数量的区域。上述技术方案中,为了达到负载均衡,特定数量的区域区间是相同大小的。本发明的较佳的实施例中,步骤S1中,特定数量中的第一个区域的起始行键和最后一个区域的终止行键均设为空字节。上述技术方案中,将特定数量中的第一个区域的起始行键和最后一个区域的终止行键均设为空字节,便于在数据增多时能更方便添加更多区域。本发明还提供HBase二级索引的查询方法,其流程如图2所示,查询方法包括:步骤A1,根据一包含索引列和索引键的查询条件遍历一数据表的所有区域,得到对应于查询条件的区域;步骤A2,根据查询条件,在区域中选择一与区域同一起始行键的行键区间;步骤A3,根据起始行键、查询条件的索引列和索引键扫描行键区间,得到行键区间内的索引区的索引列簇的行键;步骤A4,根据行键的索引值,在对应于索引区的主数据区的索引列簇中进行检索,得到对应于查询条件的查询结果。本发明的较佳的实施例中,步骤A3中,通过一终端协处理器构造一对应于行键区间的扫描器扫描行键区间。扫描器可采用Scan扫描器。本发明的较佳的实施例中,终端协处理器所使用的通信协议为Protobuf协议。上述技术方案中,Protobuf是一种用于分布式应用的通信协议,它独立于语言,独立于平台。它性能好,效率高,具有代码生成机制,自动生成数据解析类,并支持兼容和向前兼容,并支持多种编程语言,包括Java,C++,Python等。协处理器是一种用于减轻系统微处理器的特定处理任务的芯片。此处,终端协处理器即为处理终端任务的芯片。终端协处理器使用Protobuf协议性能更好,效率更高。在本发明的一个具体实施例中,空气质量自动化监测站在监测工程中记录了大量的实时数据,若使用传统关系型数据库存储海量的监测数据,则无法保证数据的实时性及查询效率。假设空气质量自动化监测站使用本发明的HBase大数据存储模式下二级索引的存储模式存储海量的监测数据,严格按照国家环保部颁发的相关技术规范设计存储污染物的实时数据、小时均值、小时评价、日均值、日评价的列簇,分别存储污染物SO2、NO2、PM10、CO、O3、PM2.5的相关数据,其中,为每个列簇添加列限定符,将主数据区的列簇的行键设为Hash前缀-站点编码-时间,其中站点编码设为地区码+站点编号。如图3中RTData的行键0a5fb-4205001-2015071008则表示宜昌市伍家岗自动化站2015年7月10日8时的实时数据。将索引区的索引列簇的行键设为区域起始行键|索引列|索引键|索引值。如图3所示,为空气质量自动化监测站的监测数据创建表IEMCData,它包括Index、RTData、HourData、HourEval、DailyData、DailyEval列簇。索引区的索引列簇为Index,它不包含任何列限定符。主数据区中RTData存放站点污染物实时监测数据,HourEval存放站点及城区的小时AQI指数及评价,DailyData存放站点及城区污染物日均值数据及对应分指数,DailyEval存放站点及城区的日AQI指数及评价。如图4所示,设置起始行键(StarKey)为10000,终止行键(EndKey)为90000,区域(Region)数为10,将第一个Region的起始行键与最后一个Region的终止行键设为空字节,然后对剩下的Region均分行键。如图5所示,假设用户需要查询满足条件DailyEval:AQI=110的记录,根据该查询条件对IEMCData表的各个区域进行遍历找到Region1,通过服务器端的终端协处理器在Region1中构造一行键区间为(00000|DailyEval:AQI|110|,00000|DailyEval:AQI|111)的Scan扫描器,通过Scan扫描器根据起始行键(00000)、查询条件的索引列(DailyEval:AQI)和索引键(110)扫描行键区间,得到行键区间内的索引区的索引列簇(Index)的行键00000|DailyEval:AQI|110|0fbea-4205002-20150310,截取该行键的索引值0fbea-4205002-20150310并根据该索引值在Region1中执行Get操作得到查询条件的查询结果,从而实现了HBase基于值的快速查询。以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1