CN106326361B - 一种基于HBase数据库的数据查询方法及装置 - Google Patents
一种基于HBase数据库的数据查询方法及装置 Download PDFInfo
- Publication number
- CN106326361B CN106326361B CN201610653548.5A CN201610653548A CN106326361B CN 106326361 B CN106326361 B CN 106326361B CN 201610653548 A CN201610653548 A CN 201610653548A CN 106326361 B CN106326361 B CN 106326361B
- Authority
- CN
- China
- Prior art keywords
- data
- row key
- query
- row
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于HBase数据库的数据查询方法和装置,以实现数据查询与业务层的解耦,提高开发效率。所述方法包括:接收来自客户端的数据查询请求,数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;根据领域对象名称确定对应的领域对象配置文件,领域对象配置文件中包括表名和行健生成规则;根据行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,行键查询范围包括起始行键和结束行键;调用HBase的数据接口,以从与表名对应的表内查找所述行键查询范围,并从行键查询范围中获得预设返回条数的行键对应的数据;将预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种基于HBase数据库的数据查询方法及装置。
背景技术
Hadoop是一种由Apache基金会主导开发的分布式系统基础架构,是目前世界上使用最为广泛的开源分布式系统平台,其生态环境内包含多种基础组件,如HDFS、HBase、MapReduce、ZooKeeper、Hive等。
HBase是Apache Hadoop的数据库,能够对海量数据提供随机、实时的读写访问。HBase的目标是存储并处理海量数据,是一个高可靠、高性能、列存储、可伸缩、实时读写的分布式数据库,通过横向扩展增加廉价的PC服务器,可以不断增加计算和存储能力。
访问HBase数据的方法是由业务层中执行业务逻辑的业务组件向业务层中的数据查询模块发送数据查询请求,所述数据查询模块调用HBase的数据接口来访问HBase的持久化数据,访问效率较高,但是这种方式中所述数据查询模块位于业务层,导致一个数据查询模块只适用于一种业务组件或少数几种业务组件,若要增加业务组件,则需要增加相应的数据查询模块,增加开发成本,降低开发效率。
发明内容
为了解决现有技术存在的技术问题,本发明提供一种基于HBase数据库的数据查询方法及装置,以实现数据查询与业务层的解耦,提高开发效率,降低开发成本。
本发明提供一种基于HBase数据库的数据查询方法,所述方法包括:
接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;
根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则;
根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键;
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获得预设返回条数的行键对应的数据;
将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
优选的,所述根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围包括:
将所述行键查询字段进行处理,以使所述行键查询字段符合所述行键生成规则;
根据处理后的行键查询字段以及HBase数据库的行键生成规则生成行键查询范围。
优选的,所述数据查询请求中还包括过滤查询字段,所述领域对象配置文件中还包括过滤器生成规则,所述方法还包括:
根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;
所述从所述行键查询范围中获得预设返回条数的行键对应的数据包括:
利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据;
从所述过滤数据中提取预设返回条数的数据。
优选的,所述过滤查询字段包括行键过滤字段;
所述利用所述过滤器对所述行键查询范围内的数据进行过滤包括:
利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键。
优选的,所述过滤查询字段包括列相关过滤字段;
所述利用所述过滤器对所述行键查询范围内的数据进行过滤包括:
利用所述过滤器从所述行键查询范围内过滤出与所述列相关过滤字段匹配的数据。
优选的,在根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器之前,所述方法还包括:
对所述过滤查询字段进行处理,以使所述过滤查询字段满足所述过滤器的生成要求。
本发明实施例还提供了一种基于HBase数据库的数据查询装置,所述装置包括:请求接收单元、配置文件确定单元、范围生成单元、数据获取单元和映射单元;
其中,所述请求接收单元,用于接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;
所述配置文件确定单元,用于根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则;
所述范围生成单元,用于根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键;
所述数据获取单元,用于调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获得预设返回条数的行键对应的数据;
所述映射单元,用于将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
优选的,所述数据查询请求中还包括过滤查询字段;所述领域对象配置文件中还包括过滤器生成规则;
所述装置还包括:过滤器生成单元,用于根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
优选的,所述过滤查询字段包括行键过滤字段;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键,以及从所述过滤出的行键中提取预设返回条数的行键对应的数据。
优选的,所述过滤查询字段包括列相关过滤字段;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,利用所述过滤器从所述行键查询范围内过滤出与所述列相关过滤字段匹配的数据,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
本发明通过HBase访问对象来实现应用层与数据持久层的解耦,首先HBase访问对象接收来自客户端的数据查询请求,并根据所述数据查询请求中的领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则,根据所述数据查询请求中的所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,然后调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获取预设返回条数的行键对应的数据,最后将所述数据映射为预设格式,并将预设格式的数据发送至所述客户端。由于应用层与HAO解耦,使得HAO能够适用于任何应用层的业务组件,当业务组件增加或变更时,所述HAO无需做改动,就可以实现查询所述HBase数据库的功能,降低开发成本,提高开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种基于HBase数据库的数据查询方法的流程图;
图2为本发明实施例二提供的一种基于HBase数据库的数据查询方法的流程图;
图3为本发明实施例二提供的领域对象模型的示意图;
图4为本发明实施例四提供的一种基于HBase数据库的数据查询装置的结构框图。
具体实施方式
传统的访问HBase数据的方法是由业务层中执行业务逻辑的业务组件向业务层中的数据查询模块发送数据查询请求,所述数据查询模块调用HBase的数据接口来访问HBase的持久化数据,由于所述数据查询模块位于业务层,导致一个数据查询模块只适用于一种业务组件或少数几种业务组件,若要增加业务组件,则需要增加相应的数据查询模块,增加开发成本,降低开发效率。
为了克服该技术问题,本发明提供了一种基于HBase数据库的通用访问框架——HBase访问对象(HBase Access Object,简称HAO),所述HAO与业务层分离,业务组件通过所述HAO来调用HBase的数据接口查询数据,也就是说,所述HAO可以适用于任何业务组件,实现了数据查询与业务层解耦,降低了开发成本,提高了开发效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在介绍本发明提供的实施例之前,首先介绍一下HBase数据库的结构:
HBase数据库以表的形式存储数据,表包括行(row)、列(column)和时间戳(Timestamp)。一行记录由若干列组成,其中的某些列又可以构成一个列族(columnfamily)。行健(row key)是用来检索一行记录的主键,是行的唯一标识,行健可以是任意字符串(最大长度是64KB,实际应用中长度一般为(10-100bytes),在HBase内部,row key保存为字节数组,存储时,数据按照row key的字典顺序(byte order)排序存储。时间戳,默认由系统指定,用户也可以显示设置。不同的时间戳用来区分不同的版本,时间戳一般按照版本从新到旧的顺序进行排列,在数据读取的时候优先读取最新版本。
举例而言,表1为一个可视化的HBase表。
表1
其中,R1和R2为两个行键,每个行键包括两列,列名分别为URI和Parser,这两列属于同一个列族。T3、T2和T1分别表示第三版本、第二版本和第一版本,第三版本是最新的,第一版本是最旧的。
实施例一:
参见图1,该图为本发明实施例一提供的一种基于HBase数据库的数据查询方法的流程图。
本实施例提供的基于HBase数据库的数据查询方法包括如下步骤:
步骤S101:接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称。
通常情况下,所述数据查询请求来自业务组件,即应用层,从硬件实现的角度来说,所述数据查询请求的发起方是客户端,接收方一般为服务器。例如,客户通过农行的客户端发起查询2016年1月至2016年6月的信用卡交易记录的数据查询请求,所述数据查询请求被农行的服务器接收到。
步骤S102:根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行键生成规则。
本实施例的HAO抽象出“领域对象”模型,用来描述每个数据类型具体的存储特点和访问特点。HBase访问对象基于领域类型实现数据访问逻辑,做到与具体数据类型的解耦,将数据类型的个性特点及变化都封装在领域类型中,从而实现并保证通用HBase访问对象接口的相对稳定。
在本实施例中,所述数据查询请求中包括领域对象名称,所述领域对象名称用于查找对应的领域对象配置文件,所述领域对象配置文件中存储有HBase数据库的表名和行键生成规则,所述表名用于查找所述HBase数据库中对应的表,所述行键生成规则用于生成行键查询范围。在实际应用中可以按照一定的规则设置有多个领域对象配置文件,例如按照每个表对应一个领域对象配置文件,或者具有共性的多个表对应一个领域对象配置文件等。所述领域对象配置文件可以是XML文件等。
步骤S103:根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键。
在本实施例中,所述数据查询请求中还包括行键查询字段,即本实施例以行健为单位查询所述HBase数据库,由于行键一般是按照字典顺序进行排列的,因此只要确定起始行键(start key)和结束行键(end key),就可以调用HBase的数据接口,获取到从所述起始行键到所述结束行键之间的所有行键(可以包括所述起始行键和所述结束行键)对应的数据。在本实施例中,所述起始行键和所述结束行键构成行键查询范围。若查询多行记录,则起始行键和结束行键为两个不同的行键;若只查询一行记录,则起始行键和结束行键为两个相同的行键,或合并为一个行健。
为了确定所述行键查询范围,在本实施例中,所述数据查询请求中包括行健查询字段,所述行键查询字段用于生成所述行键查询范围,具体的,根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围。行键生成规则不同,根据行键查询字段生成的起始行键和结束行键也不同。如果行键查询字段不符合行键生成规则,则需要预先对所述行键查询字段进行处理。
常用的行键字符串包括以下几种类型:纯数字字符串、数字+特殊分隔符、数字+英文字母,和数字+英文字母+特殊分隔符。
假设行键查询字段包括北京、起始日期20140512、结束日期20140720,表2为根据不同的行键生成规则生成的不同的行键查询范围。
表2
在该例子中,对所述行键查询字段进行的处理为将“北京”按照不同的行键生成规则进行变换,若所述行键字符串类型为纯数字字符串或数字+特殊分隔符,则将“北京”处理为数字“010”;若所述行键字符串类型为数字+英文字母或数字+英文字母+特殊分隔符,则将“北京”处理为字母“Beijing”。
对所述行键查询字段的处理手段除了进行变换,在实际应用中,还可以包括校验、翻转、补齐等,本发明不做具体限定。
其中,校验是指对所述行键查询字段做长度、类型之类的校验,比如校验某个字段的值是不是整数,是不是满足长度为10位等等。
翻转是为了对所述行键查询字段做降序排列,例如日期,使用“99999999-某个日期值”来对字段进行处理,这样可以翻转日期的排序,保证日期靠后的排序在前面,即按降序来排列(例如两个日期20160726和20160701按正常顺序是前者排在后面,后者排在前面,对该值进行翻转处理,即99999999-20160726和99999999-20160701后,99999999-20160726小于99999999-20160701,使得99999999-20160726排在了99999999-20160701的前面,产生了降序排序的效果)。
补齐是指对字段的位数进行补齐,例如如果字段位数不足20位,则在字段的左边用0补齐。
需要注意的是,由于HBase数据库中行健是按照由小到大的顺序排列的,所以要保证生成的起始行键小于结束行键。
上述对所述行键查询字段的处理可以通过所述领域对象配置文件进行实现,这样就可以灵活的实现对处理参数以及处理方式的设定。而且为了增强适应性和扩展性,校验和变换还支持自定义函数,通过这种方式可以灵活地为指定数据配置特殊的校验函数和变换函数。
步骤S104:调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获取预设返回条数的行键对应的数据。
通常情况下,客户端需要按页整合数据,每页最多可以容纳N条数据,那么可以将预设返回条数设置为N条,若所述行键查询范围对应的行键的条数多于N条,则以预设返回条数为单位分多次提取数据,并将每次提取出来的数据发送给客户端;若所述行键查询范围对应的行键的条数少于N条,则一次性都提取出来,发送给客户端。
步骤S105:将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
在实际应用中,在将所述获取到的数据发送至所述客户端之前,可以先对所述数据进行映射,映射为客户端需要的预设格式,然后再将映射后的预设格式的数据发送至所述客户端,以满足适应不同客户端的需求。
本实施通过HBase访问对象来实现应用层与数据持久层的解耦,首先HBase访问对象接收来自客户端的数据查询请求,并根据所述数据查询请求中的领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则,根据所述数据查询请求中的所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,然后调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获取预设返回条数的行键对应的数据,最后将所述数据映射为预设格式,并将预设格式的数据发送至所述客户端。由于应用层与HAO解耦,使得HAO能够适用于任何应用层的业务组件,当业务组件增加或变更时,所述HAO无需做改动,就可以实现查询所述HBase数据库的功能,降低开发成本,提高开发效率。
实施例二
所述实施例一根据起始行键和结束行键来从所述HBase数据库中提取数据,由于一个行键对应一整条记录,在实际应用中,这样的数据提取可能比较粗糙,通过本实施例能够实现更加准确的在从行键查询范围中提取出用户需要的数据的目的。
参见图2,该图为本发明实施例二提供的一种基于HBase数据库的数据查询方法的流程图。
本实施例提供的基于HBase数据库的数据查询方法包括如下步骤:
步骤S201:接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数、领域对象名称和过滤查询字段。
在实际应用中,所述过滤查询字段可以包括行键过滤字段、列相关过滤字段等。
所述行键过滤字段是指从行键查询范围内的行键中过滤出需要的行键。例如所述行键过滤字段为“01”,用于将最后两个字符为“01”的行键过滤出来。
所述列相关过滤字段用于从HBase数据库中列对应的数据,在行键查询字段存在的情况下,所述列相关过滤字段具体用于从所述行键查询范围中过滤出与列相关的的数据。以所述表1为例,所述列相关过滤字段包括列族,即列名URI和Paser对应的列族。进一步的,所述过滤查询字段还可以包括列名过滤字段,用于从所述列族对应的数据中过滤出某个或某些列名对应的数据,例如所述URI或所述Paser对应的数据。再进一步,所述过滤查询字段中还可以包括列值过滤字段,即从列(例如所述URI或所述Paser)中过滤出来与所述列值匹配的数据。
所述列相关过滤字段还可以包括列值,用于过滤出与所述列值的数据。
步骤S202:根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名、行健生成规则以及过滤器的生成规则。
步骤S203:根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键。
步骤S204:根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器。
在接收到包含所述过滤查询字段的数据查询请求后,根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器。具体的,首先根据所述过滤查询字段对过滤器的配置文件中过滤器的属性进行参数设置,然后通过JAVA反射机制动态创建过滤器。为了实现自动对配置文件进行设置,可以对所述过滤查询字段预先进行处理,以使其符合配置文件对参数的要求,所述处理过程可以包括变换、补齐、翻转等,与实施例一中的处理规则相类似,此处不再赘述。在过滤器创建的过程中,还可以利用HBase自带的比较器来实现查询某个范围的功能,例如从第m列到第n列。
步骤S205:调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据,并从所述过滤数据中提取预设返回条数的行键对应的数据。
步骤S206:将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
本实施例通过行键查询范围获取起始行键和结束行键之间的数据,并通过所述过滤器对所述行键查询范围内的数据进行过滤,以使用户准确的得到想要的数据,满足用户的需求。
在实际应用中,可以建立领域对象模型,来查找不同类型的数据,具体可以采用XML配置文件来定义和描述领域对象,领域对象包括领域类型信息domainType、输出类名称outputClass、HBase表中rowkey、过滤器相关信息filters和HBase表相关信息tableInfo等元素,每个元素下又包含了若干子元素。HBase访问对象使用领域对象和输入对象,通过调用HBase API(接口),对HBase访问操作进行封装,将领域对象映射到相应的HBase查询对象中进行查询并得到返回结果。
领域对象模型的示意图如图3所示。
其中,domainType领域类型描述子节点,按顺序定义了以下子元素:
code | 领域类型码,string类型 |
desp | 领域类型描述,string类型 |
filePath | 领域类型配置文件路径,string类型 |
outputClass输出类描述子节点,按顺序定义了以下子元素:
calssName | 输出类完全限定名,string类型 |
outputView输出报文描述子节点,按顺序定义了以下子元素:
stringPad补齐操作定义子节点,按顺序定义了以下子元素:
userDefineFun用户自定义函数子节点,支持对第三方jar包中或者系统中通用处理函数的调用,该节点定义了以下子元素:
className | 自定义处理函数所在类的名称,string类型 |
methodName | 自定义处理函数名,string类型 |
range子节点按顺序定义了以下子元素:
isRange | 范围字段标志,boolean类型 |
userDefineFun | 自定义处理函数,复杂类型 |
field字段描述子节点,定义了以下子元素:
name | 字段名称,string类型 |
index | 字段索引,int类型 |
size | 字段长度,int类型 |
isCon | 续查标志,boolean类型 |
isRevert | 字段翻转标志,boolean类型 |
stringPad | 字符补齐方式,复杂类型,参见stringPad |
range | 字段范围定义,复杂类型,参见range |
column HBase列定义子节点,按顺序定义了以下子元素:
loopColumn循环列定义子节点,对应HBase中列名满足一定规则的一批列,其中按顺序定义了以下子元素:
columnFamily列族定义子节点,对应HBase中的列族,定义了以下子元素:
name | 列族名称,string类型 |
column | 列族中包含的列,复杂类型,参见column |
loopColumn | 列族中包含的循环列,复杂类型,参见loopColumn |
tableInfo表定义子节点,对应HBase中的表,定义以下子元素:
rowKey行主键定义子节点,对应HBase的RowKey,该节点按顺序定义了以下子元素:
filterField过滤器字段定义子节点,包含以下子元素:
filters过滤器定义子节点,按顺序定义了以下子元素:
本实施例提供的基于HBase数据库的数据查询方法可以通过配置文件来实现,下面通过一段代码作为本实施例的示例:
<?xml version="1.0"encoding="UTF-8"?>
-<Domain>
<domainType>if40</domainType>
-<outputClass>
<calssName>com.abchina.bhdqs.vo.if40.If40TrcForm</calssName>
</outputClass>
-<tableInfo>
<tableName>hdqs_if40_trc</tableName>
-<columnFamily>
<name>f</name>
-<column>
<name>dt</name>
</column>
</columnFamily>
</tableInfo>
-<rowKey>
-<field>
<name>regIfArSeqNum</name>
<index>0</index>
</field>
-<field>
<name>entFnCod</name>
<index>1</index>
</field>
-<field>
<name>linePdCod</name>
<index>2</index>
</field>
-<field>
<name>pdGrpId</name>
<index>3</index>
</field>
-<field>
<name>crtFormTrcDate</name>
<index>4</index>
<size>8</size>
-<range>
<isRange>true</isRange>
</range>
</field>
-<field>
<name>formTrcSeqNum</name>
<index>5</index>
<size>20</size>
-<stringPad>
<type>LEFTPAD</type>
<value>0</value>
</stringPad>
</field>
</rowKey>
-<filters>
-<filterField>
-<field>
<name>typFormTrcCod</name>
<index>0</index>
</field>
<isFilterList>Y</isFilterList>
<filterName>org.apache.hadoop.hbase.filter.SingleColumnValueFilter</filterName>
<columnFamily>f</columnFamily>
<column>dt</column>
<compareOp>EQUAL</compareOp>
<comparator>org.apache.hadoop.hbase.filter.BinaryPrefixComparator</comparator>
</filterField>
-<filterField>
-<field>
<name>extidTarfIfId</name>
<index>1</index>
</field>
<filterName>org.apache.hadoop.hbase.filter.SingleColumnValueFilter</filterName>
<columnFamily>f</columnFamily>
<column>dt</column>
<compareOp>EQUAL</compareOp>
<comparator>org.apache.hadoop.hbase.filter.SubstringComparator</comparator>
</filterField>
</filters>
</Domain>
基于以上实施例提供的一种基于HBase数据库的数据查询方法,本发明实施例还提供了一种基于HBase数据库的数据查询装置,下面结合附图来详细说明其工作原理。
实施例三
参见图4,该图为本发明实施例三提供的一种基于HBase数据库的数据查询装置的结构框图。
本实施例提供的基于HBase数据库的数据查询装置包括:
请求接收单元101、配置文件确定单元102、范围生成单元103、数据获取单元104和映射单元105;
其中,所述请求接收单元101,用于接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;
所述配置文件确定单元102,用于根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则;
所述范围生成单元103,用于根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键;
所述数据获取单元104,用于调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获得预设返回条数的行键对应的数据;
所述映射单元105,用于将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
本实施通过HBase访问对象来实现应用层与数据持久层的解耦,首先HBase访问对象接收来自客户端的数据查询请求,并根据所述数据查询请求中的领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行健生成规则,根据所述数据查询请求中的所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,然后调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获取预设返回条数的行键对应的数据,最后将所述数据映射为预设格式,并将预设格式的数据发送至所述客户端。由于应用层与HAO解耦,使得HAO能够适用于任何应用层的业务组件,当业务组件增加或变更时,所述HAO无需做改动,就可以实现查询所述HBase数据库的功能,降低开发成本,提高开发效率。
实施例四
基于所述实施例三,在本实施例提供的基于HBase数据库的数据查询装置中,所述数据查询请求中还包括过滤查询字段;所述领域对象配置文件中还包括过滤器生成规则;所述装置还包括:过滤器生成单元,用于根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;
所述数据获取单元104,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
其中,若所述过滤查询字段包括行键过滤字段;
则所述数据获取单元104,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键,以及从所述过滤出的行键中提取预设返回条数的行键对应的数据。
若所述过滤查询字段包括列相关过滤字段;
所述数据获取单元104,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,利用所述过滤器从所述行键查询范围内过滤出与所述列相关过滤字段匹配的数据,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
本实施例通过行键查询范围获取起始行键和结束行键之间的数据,并通过所述过滤器对所述行键查询范围内的数据进行过滤,以使用户准确的得到想要的数据,满足用户的需求。
当介绍本发明的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于HBase数据库的数据查询方法,其特征在于,所述方法包括:
接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;其中,所述领域对象名称是基于HBase访问对象HAO抽象出的领域对象模型中包含的用于实现数据访问逻辑的领域类型的名称;
根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行键 生成规则;
根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键;
通过所述HAO调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获得预设返回条数的行键对应的数据;
将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围包括:
将所述行键查询字段进行处理,以使所述行键查询字段符合所述行键生成规则;
根据处理后的行键查询字段以及HBase数据库的行键生成规则生成行键查询范围。
3.根据权利要求1或2所述的方法,其特征在于,所述数据查询请求中还包括过滤查询字段,所述领域对象配置文件中还包括过滤器生成规则,所述方法还包括:
根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;
所述从所述行键查询范围中获得预设返回条数的行键对应的数据包括:
利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据;
从所述过滤数据中提取预设返回条数的数据。
4.根据权利要求3所述的方法,其特征在于,所述过滤查询字段包括行键过滤字段;
所述利用所述过滤器对所述行键查询范围内的数据进行过滤包括:
利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键。
5.根据权利要求3所述的方法,其特征在于,所述过滤查询字段包括列相关过滤字段;
所述利用所述过滤器对所述行键查询范围内的数据进行过滤包括:
利用所述过滤器从所述行键查询范围内过滤出与所述列相关过滤字段匹配的数据。
6.根据权利要求3所述的方法,其特征在于,在根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器之前,所述方法还包括:
对所述过滤查询字段进行处理,以使所述过滤查询字段满足所述过滤器的生成要求。
7.一种基于HBase数据库的数据查询装置,其特征在于,所述装置包括:请求接收单元、配置文件确定单元、范围生成单元、数据获取单元和映射单元;
其中,所述请求接收单元,用于接收来自客户端的数据查询请求,所述数据查询请求中包括行键查询字段、预设返回条数和领域对象名称;其中,所述领域对象名称是基于HBase访问对象HAO抽象出的领域对象模型中包含的用于实现数据访问逻辑的领域类型的名称;
所述配置文件确定单元,用于根据所述领域对象名称确定对应的领域对象配置文件,所述领域对象配置文件中包括表名和行键 生成规则;
所述范围生成单元,用于根据所述行键查询字段以及HBase数据库的行键生成规则生成行键查询范围,所述行键查询范围包括起始行键和结束行键;
所述数据获取单元,用于通过所述HAO调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并从所述行键查询范围中获得预设返回条数的行键对应的数据;
所述映射单元,用于将所述预设返回条数的行键对应的数据映射为预设格式,并将映射后的数据发送至所述客户端。
8.根据权利要求7所述的装置,其特征在于,所述数据查询请求中还包括过滤查询字段;所述领域对象配置文件中还包括过滤器生成规则;
所述装置还包括:过滤器生成单元,用于根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
9.根据权利要求8所述的装置,其特征在于,所述过滤查询字段包括行键过滤字段;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,并利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键,以及从所述过滤出的行键中提取预设返回条数的行键对应的数据。
10.根据权利要求8所述的装置,其特征在于,所述过滤查询字段包括列相关过滤字段;
所述数据获取单元,具体用于:
调用HBase的数据接口,以从与所述表名对应的表内查找所述行键查询范围,利用所述过滤器从所述行键查询范围内过滤出与所述列相关过滤字段匹配的数据,得到过滤数据,以及从所述过滤数据中提取预设返回条数的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610653548.5A CN106326361B (zh) | 2016-08-10 | 2016-08-10 | 一种基于HBase数据库的数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610653548.5A CN106326361B (zh) | 2016-08-10 | 2016-08-10 | 一种基于HBase数据库的数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106326361A CN106326361A (zh) | 2017-01-11 |
CN106326361B true CN106326361B (zh) | 2020-01-21 |
Family
ID=57739965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610653548.5A Active CN106326361B (zh) | 2016-08-10 | 2016-08-10 | 一种基于HBase数据库的数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106326361B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319604B (zh) * | 2017-01-16 | 2021-10-19 | 南京烽火天地通信科技有限公司 | 一种hive中大小表关联的优化方法 |
CN106940627B (zh) * | 2017-03-24 | 2020-08-25 | 联想(北京)有限公司 | 一种数据处理方法及服务器集群 |
CN107341198B (zh) * | 2017-06-16 | 2020-05-12 | 云南电网有限责任公司信息中心 | 一种基于主题实例的电力海量数据存储和查询方法 |
CN107622091B (zh) * | 2017-08-23 | 2020-11-13 | 创新先进技术有限公司 | 一种数据库查询方法和装置 |
CN110555021B (zh) * | 2018-03-26 | 2023-09-19 | 深圳先进技术研究院 | 数据存储方法、查询方法及相关装置 |
CN110704492A (zh) * | 2018-06-25 | 2020-01-17 | 中兴通讯股份有限公司 | 一种数据采集方法、装置和计算机可读存储介质 |
CN108959608A (zh) * | 2018-07-13 | 2018-12-07 | 中国建设银行股份有限公司 | 历史交易信息查询方法以及装置 |
CN110765158A (zh) * | 2019-10-31 | 2020-02-07 | 北京明略软件系统有限公司 | 分页查询方法、系统和装置 |
CN111198968A (zh) * | 2019-12-11 | 2020-05-26 | 中国建设银行股份有限公司 | 数据查询的方法和装置 |
CN112910980B (zh) * | 2021-01-27 | 2022-11-15 | 中国银联股份有限公司 | 一种数据库访问系统和方法 |
CN113297273B (zh) * | 2021-06-09 | 2024-03-01 | 北京百度网讯科技有限公司 | 查询元数据的方法、装置和电子设备 |
WO2023065134A1 (en) * | 2021-10-20 | 2023-04-27 | Paypal, Inc. | Database management using sort keys |
CN115617878B (zh) * | 2022-11-17 | 2023-03-10 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备及计算机存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462161A (zh) * | 2013-10-18 | 2015-03-25 | 上海宝信软件股份有限公司 | 基于分布式数据库的结构化数据查询方法 |
CN104008134B (zh) * | 2014-05-06 | 2017-02-15 | 武汉邮电科学研究院 | 基于HBase的高效存储方法及系统 |
CN104252536B (zh) * | 2014-09-16 | 2017-12-08 | 福建新大陆软件工程有限公司 | 一种基于hbase的上网日志数据查询方法及装置 |
US10650027B2 (en) * | 2014-11-05 | 2020-05-12 | International Business Machines Corporation | Access accelerator for active HBase database regions |
CN104361090B (zh) * | 2014-11-17 | 2018-01-05 | 浙江宇视科技有限公司 | 数据查询方法及装置 |
CN104915450B (zh) * | 2015-07-01 | 2017-11-28 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN105468709A (zh) * | 2015-11-19 | 2016-04-06 | 中国建设银行股份有限公司 | 基于HBase的数据查询装置及数据查询方法 |
-
2016
- 2016-08-10 CN CN201610653548.5A patent/CN106326361B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106326361A (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106326361B (zh) | 一种基于HBase数据库的数据查询方法及装置 | |
CN104699718B (zh) | 用于快速引入业务数据的方法和装置 | |
EP3602351B1 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
US8495007B2 (en) | Systems and methods for hierarchical aggregation of multi-dimensional data sources | |
CN102426609B (zh) | 一种基于MapReduce编程架构的索引生成方法和装置 | |
JP2718881B2 (ja) | トークン識別システム | |
CN107798038B (zh) | 数据响应方法及数据响应设备 | |
US9069818B2 (en) | Textual search for numerical properties | |
CN103246659A (zh) | 键值数据查询的方法和装置 | |
CN103123650A (zh) | 一种基于整数映射的xml数据库全文索引方法 | |
CN100447781C (zh) | 用于将可扩展标记语言映射到n维数据结构的方法和系统 | |
CN114116827B (zh) | 一种用户画像数据的查询系统及方法 | |
CN107341198B (zh) | 一种基于主题实例的电力海量数据存储和查询方法 | |
CN111352960B (zh) | 快件订单信息查询方法、装置、设备及存储介质 | |
Antunes et al. | Semantic-based publish/subscribe for M2M | |
CN112199463A (zh) | 数据查询方法、装置及设备 | |
Bao et al. | Query optimization of massive social network data based on hbase | |
CN115098738A (zh) | 业务数据的提取方法、装置、存储介质及电子设备 | |
CN114331398A (zh) | 费用结算数据处理方法、装置、设备及存储介质 | |
CN115905274A (zh) | 数据处理的方法、装置、电子设备及介质 | |
CN105608122A (zh) | 一种存储电子表单数据的方法和装置 | |
CN110704421A (zh) | 数据处理方法、装置、设备和计算机可读存储介质 | |
CN114661770B (zh) | 数据分页查询方法、装置、计算机设备及可读存储介质 | |
CN113792048B (zh) | 非关系型数据库的表单校验规则生成方法和系统 | |
CN114328615A (zh) | 一种数据导出方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |