基于Hbase行健的高性能查询方法和装置制造方法及图纸

技术编号:14884466 阅读:32 留言:0更新日期:2017-03-25 00:12
本申请提供了一种基于Hbase行健的高性能查询方法和装置,所述方法包括:接收用户输入的m个对Hbase表的查询条件及其逻辑关系;根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符;获取Hbase表中每一行的行健,根据预设的元数据表信息对行健进行分解,得到每个查询条件中的对应查询列的比对值,将比对值与查询条件值根据运算符进行比较运算,生成查询条件的比较结果;以及,根据逻辑关系汇总所有查询条件的比较结果,将汇总后的比较结果为真的行健对应的行数据返回给用户。本申请通过上述手段,能够在保证高性能的同时实现HBase多条件细粒度的过滤查询。

【技术实现步骤摘要】

本申请涉及数据库
,特别地,涉及一种基于Hbase行健的高性能查询方法和装置
技术介绍
Hadoop数据库(HBase,HadoopDatabase)是一种分布式、可伸缩的非关系型(NoSQL,NotOnlySQL)数据库,它构建在Hadoop基础设施之上,依托于Hadoop的迅猛发展,HBase在大数据领域的应用越来越广泛,成为目前NoSQL数据库中表现最耀眼,呼声最高的产品之一。HBase的表数据按行健(Rowkey)进行字典排序,Rowkey实际上是数据表的一级索引(PrimaryIndex),Rowkey在HBase中以B+树的结构形式有序存储,扫描效率较高,但在面对多条件组合查询时,仍存在不便。虽然Hbase提供了一些针对Rowkey、列、列簇的过滤器(Filter),可以实现组合、比较等查询方式,但是多Filter的组合过滤是要在HBase里进行多次数据扫描,速度缓慢、组合麻烦、效率低下,经常无法满足查询要求。另外,虽然可以借助批处理或者其他方式建立HBase的二级索引数据,但是在插入主数据时需要伴随插入多份二级索引从而较大程度的降低了写入性能。对于一些轻量级的条件搜索场景,二级搜索显得过于浪费资源,而且每次创建新的表后,需要重新编写代码来支持。
技术实现思路
本申请提供一种基于Hbase行健的高性能查询方法和装置,用于解决现有Hbase无法在保持高性能优势的条件下支持多条件查询的问题。本申请公开的一种基于Hbase行健的高性能查询方法,所述行健包括按预设结构排列的n个查询列的数据,所述方法包括:接收用户输入的m个对Hbase表的查询条件及其逻辑关系;根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符;获取所述Hbase表中每一行的行健,根据预设的元数据表信息对所述行健进行分解,得到每个查询条件中的对应查询列的比对值,将所述比对值与查询条件值根据所述运算符进行比较运算,生成所述查询条件的比较结果;以及,根据所述逻辑关系汇总所有查询条件的比较结果,将汇总后的比较结果为真的行健对应的行数据返回给用户;其中,n≥m≥1。本申请公开的一种基于Hbase行健的高性能查询装置,包括:元数据构造模块,用于预设元数据表信息以及行健的预设结构,所述行健包括按预设结构排列的n个查询列的数据;过滤器模块,用于接收用户输入的m个对Hbase表的查询条件及其逻辑关系;以及,根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符;查询执行模块,用于获取所述Hbase表每一行数据的行健,根据预设的元数据表信息对所述行健进行分解,得到每个查询条件中的对应查询列的比对值,将所述比对值与查询条件值根据所述运算符进行比较运算,生成所述查询条件的比较结果;以及,根据所述逻辑关系汇总所有查询条件的比较结果,将汇总后的比较结果为真的行健对应的行数据返回给用户;其中,n≥m≥1。与现有技术相比,本申请具有以下优点:本申请优选实施例采用非侵入式实现了基于一级索引Rowkey的高性能复杂条件查询引擎,以HBase的Rowkey一级索引的优势为基础,对扫描过程中获取的Rowkey与比较器中需要查询分片的位置、分片的预期值进行字节(byte)比较,从而能够在保证高性能的同时实现HBase多条件细粒度的过滤查询。附图说明附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本申请基于Hbase行健的高性能查询方法一实施例的流程图;图2为本申请Rowkey的结构示意图;图3为本申请基于Hbase行健的高性能查询装置一实施例的结构示意图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。在本申请的描述中,需要理解的是,术语“多个”的含义是两个或两个以上,除非另有明确具体的限定。术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。本申请的核心专利技术思想之一在于:按照本申请涉及到的规范,对HBase表的Rowkey进行优化设计,预设查询分片,并生成与表相关的查询特性映射信息。编写Rowkey过滤器的分片查询比较器,在比较器中通过元数据来获取查询分片的映射信息,包括偏移位置、分片的长度、分片的预期值、分片的操作符,在扫描HBase数据的过程中,需要遍历行健,直接与预设好的查询分片信息来比较byte值,HBase中Rowkey存储的是字节数组,无需再次转换,直接高效率的进行比较,根据返回的运算结果(是或否),进行判断是否过滤该行数据。因此对于一些基本的搜索功能要求,无需重新编写二级索引代码,无需花很长时间通过列值进行过滤搜索,直接通过Rowkey分片的方式就能轻松快速的完成基本字段搜索功能。参照图1,示出了本申请基于Hbase行健的高性能查询方法一实施例的流程,本优选实施例中的Hbase数据表中的Rowkey包括有按预设结构排列的n个查询列的数据,并在Hbase中预设有元数据表的结构。具体实施时,元数据表结构可以包括Hbase表名、列名、列类型、偏移地址和是否倒序等。Rowkey可以采用如图2所示的结构形式,即n个查询列的数据之间以0x00为分隔符隔开。所述方法具体包括以下步骤:步骤S101:接收用户输入的m个对Hbase表的查询条件及其逻辑关系。其中,n≥m≥1。用户在进行查询时,输入内容主要包括:Hbase表名,每个查询条件的列名、操作符、第一查询条件值和第二查询条件值,以及各查询条件之间的逻辑关系等。操作符可以是等于(=)、不等于(≠)、大于(>)、小于(<)、大于等于(≥)、小于等于(≤)、介于第一查询条件值和第二查询条件值之间(between)等。逻辑关系可以是与(and)、或(or)、异或(xor)、非(not)等。当操作符为一元运算(如操作符为等于、不等于、大于、小于等)时,只需要第一查询条件值即可;当操作符为二元运算(如between)时,需要值第一查询条件值和第二查询条件值。步骤S102:根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符。具体实施时,用户输入的查询条件可以以分片数组的形式传递,具体包括长度均为m的列名分片数组、偏移地址分片数组、第一条件值分片数组、第二条件值分片数组和运算符分片数组。根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值,具体可以包括:根据待查询Hbase表名和预设的元数据表获取所述Hbase表的列名、列类型和偏移地址;根据所述列名的偏移地址从所述列名分片数组中分解获得每个查询条件的查询列的列名;根据所述查询列的列名获得对应的列类型,并根据列类型计算对应查询条件值的偏移地址;根据所述查询条件值的偏移地址从所述第一条件值分片数组和第二条件值分片数组中分解获得每个查询条件的查询条件值。步骤S103:获取Hbase表中每一行的行健,根据预设的元数据表信息对所述行健进行分解,得本文档来自技高网...
基于Hbase行健的高性能查询方法和装置

【技术保护点】
一种基于Hbase行健的高性能查询方法,其特征在于,所述行健包括按预设结构排列的n个查询列的数据,所述方法包括:接收用户输入的m个对Hbase表的查询条件及其逻辑关系;根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符;获取所述Hbase表中每一行的行健,根据预设的元数据表信息对所述行健进行分解,得到每个查询条件中的对应查询列的比对值,将所述比对值与查询条件值根据所述运算符进行比较运算,生成所述查询条件的比较结果;以及,根据所述逻辑关系汇总所有查询条件的比较结果,将汇总后的比较结果为真的行健对应的行数据返回给用户;其中,n≥m≥1。

【技术特征摘要】
1.一种基于Hbase行健的高性能查询方法,其特征在于,所述行健包括按预设结构排列的n个查询列的数据,所述方法包括:接收用户输入的m个对Hbase表的查询条件及其逻辑关系;根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值及其运算符;获取所述Hbase表中每一行的行健,根据预设的元数据表信息对所述行健进行分解,得到每个查询条件中的对应查询列的比对值,将所述比对值与查询条件值根据所述运算符进行比较运算,生成所述查询条件的比较结果;以及,根据所述逻辑关系汇总所有查询条件的比较结果,将汇总后的比较结果为真的行健对应的行数据返回给用户;其中,n≥m≥1。2.根据权利要求1所述的方法,其特征在于,所述预设的元数据表包括Hbase表名、列名、列类型和偏移地址。3.根据权利要求2所述的方法,其特征在于,所述行健的预设结构为:n个查询列的数据之间以0x00为分隔符隔开;所述根据预设的元数据表信息分解对所述行健进行分解,得到每个查询条件对应查询列的比对值,具体包括:根据每个查询列的列类型获得相应查询列的字节长度Leni;根据所述查询条件中对应查询列在行健中的排列位置k、以及位于该查询列之前各查询列的字节长度,计算该第k个查询列在行健中的偏移量Offsetk,然后从该偏移量Offsetk处读取长度为Lenk字节的数据,作为该查询列的比对值。4.根据权利要求2所述的方法,其特征在于,所述查询条件包括列名分片数组、偏移地址分片数组、第一条件值分片数组、第二条件值分片数组和运算符分片数组,每个分片数组的长度为m;根据预设的元数据表信息解析出每个查询条件对应的查询列、查询条件值,具体包括:根据待查询Hbase表名和预设的元数据表获取所述Hbase表的列名、列类型和偏移地址;根据所述列名的偏移地址从所述列名分片数组中分解获得每个查询条件的查询列的列名;根据所述查询列的列名获得对应的列类型,并根据列类型计算对应查询条件值的偏移地址;根据所述查询条件值的偏移地址从所述第一条件值分片数组和第二条件值分片数组中分解获得每个查询条件的查询条件值。5.根据权利要求2所述的方法,其特征在于,所述预设的元数据表还包括是否倒序。6.根据权利要求1所述的方法,其特征在于,所述运算符包括等于、不等于、大于、小于和介于查询条件值一与查询条件值二之间。7.根据权利要求1所述的方法,其特征...

【专利技术属性】
技术研发人员:兰斌陈奋邱毓彬
申请(专利权)人:厦门服云信息科技有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1