基于内存数据库的HBase二级索引构建与查询的装置及方法与流程

文档序号:12364449阅读:273来源:国知局
本发明涉及数据库
技术领域
:,具体来说,涉及一种基于内存数据库的HBase二级索引构建与查询的装置及方法。
背景技术
::随着信息时代的迅速发展,互联网应用的不断深入,使得非结构化的数据规模日益庞大。HBase(HadoopDatabase,Hadoop数据库)是参照GoogleBigtable实现的开源NoSQL数据库,它具有强一致性、高性能随机写、面向字段且可动态修改、可水平伸缩的特性。HBase是基于Rowkey(行键)的有序存储,对Rowkey支持毫秒级的快速检索。然而,随着HBase的应用不断深入,单一的通过Rowkey检索数据的方式,不再满足应用的需求,在实际应用中,需要根据指定字段,或者几个字段进行组合检索,这就提出了建立HBase二级索引的需求。由于HBase基于行健有序存储,在查询时使用行健十分高效,然后想要实现关系型数据库那样可以随意组合的多条件查询、查询总记录数、分页等就比较麻烦了。想要实现这样的功能,一般采用以下两种方法和装置:1.第一种方法和装置是使用HBase提供的过滤器。通过这个过滤器可以在HBase中的数据的多个维度(行,字段,数据版本)上进行对数据的筛选操作。该方法和装置使用起来很方便,但是局限性也很大,HBase的过滤器是直接扫记录的,如果数据范围很大,会导致查询速度很慢;2.第二种方法和装置是通过构建二级索引,查询符合条件的Rowkey,然后再查询HBase。该方法和装置适用范围就比较广泛,目前的HBase二级索引构建方案主要有以下两种方案:1)第一种方案是将索引数据单独存储为一张表,通过HBase协处理器生成并访问索引数据;2)第二种方案是将索引数据与源数据存储在相同的Region(分区)里,索引数据定义为一个单独的字段族,也是利用协处理器来生成并访问索引数据。对于第一种方案,源数据表与索引表的数据一致性很难保证,访问两张不同的表也会增加IO开销和远程调用的次数。对于第二种方案,单表的数据容量会急剧增加,对同一Region里的多个字段族进行拆分或合并等操作时可能会造成数据丢失或不一致。针对相关技术中的问题,目前尚未提出有效的解决方案。技术实现要素:针对相关技术中的上述技术问题,本发明提出一种基于内存数据库的HBase二级索引构建与查询的装置及方法,能够实现多级查询的二级索引,索引字段的灵活配置,二级索引快速插入和存储。为实现上述技术目的,本发明的技术方案是这样实现的:一种基于内存数据库的HBase二级索引构建与查询的装置,包括:客户端,其用于发出二级索引规则创建请求、二级索引规则删除请求、数据更新请求和数据查询请求;数据处理模块,其接收客户端发送的请求,用于对客户端发出的请求进行分别处理,进行数据的更新、查询和删除;二级索引模块,对客户端发出的请求进行二级索引的更新、查询和删除。进一步的,所述数据处理模块主要是对HBase中的数据进行处理。进一步的,所述数据处理模块包括:客户端接口:用于接收客户端发送的各种数据请求,将对数据的请求转移到数据请求处理组件,对索引规则的请求转移到索引规则组件,接收相应的查询结果返回到客户端;数据请求处理组件:用于接收客户端接口的数据处理请求,在数据库存储组件中更新和删除数据库的数据,数据更新后,触发协处理器,进行二级索引的处理;数据存储组件:主要对数据进行存储,根据不同的操作及时更新数据;索引规则组件:接收客户端接口的索引规则请求,包括索引规则的创建和删除;协处理器组件:在数据请求处理组件在对数据进行处理后触发该协处理器组件,该该协处理器组件读取索引规则组件中的索引规则,根据索引规则对二级索引进行处理;二级索引接口:根据协处理组件读取到的索引规则,将对二级索引的处理转移到二级索引模块。进一步的,所述二级索引模块主要是对二级索引进行处理,包括二级索引查询、更新和存储,所述二级索引模块主要包含:客户端接口:接收客户端发送的数据请求,将对数据的查询请求转移到二级索引查询组件,更新请求转移到二级索引更新组件,接收相应的查询结果返回到客户端;二级索引更新组件:接收客户端接口的更新请求,及时更新二级索引存储组件中的二级索引;二级索引查询组件:接收客户端接口的查询请求,通过向二级索引存储组件查询二级索引获得Rowkey,将其返回到客户端接口;二级索引查询组件:接收客户端接口的删除请求,及时删除二级索引存储组件中的二级索引;二级索引存储组件:对二级索引进行存储;数据处理接口:接收数据处理模块对二级索引的操作,将回调函数所获得的数据转移给二级索引模块。一种基于内存数据库的HBase二级索引构建与查询的方法,包括以下步骤:S1客户端发送二级索引规则创建请求,协处理器调用二级索引模块接口,将二级索引信息和二级索引数据写入二级索引模块;S2客户端发送二级索引规则删除请求,协处理器调用二级索引模块接口,删除二级索引规则信息和索引数据;S3客户端发送数据更新请求,数据处理模块确定数据更新类型为插入,数据处理模块将更新数据直接写入HBase,协处理器调用二级索引模块接口修改二级索引数据;S4客户端发送数据更新请求,数据处理模块确定数据更新类型为修改或删除,协处理器协助数据处理模块搜索到需要更新的数据,数据处理模块更新数据,协处理器调用二级索引模块接口修改索引数据;S5客户端发送数据查询请求,协处理器协助数据处理模块搜索到需要查询的数据,数据处理模块获取查询数据并将获取的数据返回给客户端。进一步的,步骤S1包括:S11客户端发送二级索引规则创建请求;S12数据处理模块接受二级索引规则创建请求,数据请求处理组件将二级索引创建情况分配给协处理器组件进行处理;S13协处理器组件对收到的二级索引创建请求中的表名和字段进行解析;S14协处理器组件根据索引创建请求的解析结果调用二级索引模块接口写入索引规则信息,并在二级索引模块中根据表名和索引字段创建二级索引对应的Key值;S15协处理器组件扫描HBase中索引归属的表,将每条记录的Rowkey和对应索引字段的权值写入二级索引模块。进一步的,步骤S2包括:S21客户端发送二级索引规则删除请求;S22数据处理模块接收索引删除请求,分配给协处理器组件进行处理;S23协处理器组件对收到索引删除请求中的索引名称进行解析;S24协处理器组件根据解析结果调用二级索引模块接口,删除索引规则信息和索引数据。进一步的,步骤S3包括:S31客户端发送数据更新请求;S32数据处理模块接收到数据更新请求后,经判断,确定数据更新类型为插入,将更新数据直接写入HBase,并将数据更新请求转发给协处理器;S33协处理器判断更新字段是否为索引字段,若数据更新字段是索引字段,协处理器调用二级索引模块更新索引数据;若数据更新字段不是索引字段,数据更新结束。进一步的,步骤S4包括:S41客户端发送数据更新请求;S42数据处理模块接收到数据更新请求后,经判断,确定数据更新类型为修改或删除,并将数据更新请求转发给协处理器;S43协处理器判断更新条件是否为索引字段,若更新条件为索引字段,协处理器遍历HBase,获取符合条件的Rowkey;若更新条件不为索引字段,协处理器将更新条件提交给二级索引模块,二级索引模块根据不同的更新条件进行精确、范围或组合查询,返回符合条件的Rowkey;S44协处理器将二级索引模块返回的Rowkey返回给数据处理模块,数据处理模块根据协处理器返回的Rowkey更新数据;S45协处理器判断更新字段是否为索引字段,若数据更新字段是索引字段,协处理器调用二级索引模块更新索引数据;若数据更新字段不是索引字段,数据更新结束。进一步的,步骤S5包括:S51客户端发送数据查询请求;S52数据处理模块接收到数据查询请求后,将数据查询请求转发给协处理器;S53协处理器判断更新条件是否为索引字段,若更新条件为索引字段,协处理器遍历HBase,获取符合条件的Rowkey;若更新条件不为索引字段,协处理器将查询条件提交给二级索引模块,二级索引模块根据不同的查询条件进行精确、范围或组合查询,返回符合条件的Rowkey;S54协处理器将二级索引模块返回的Rowkey返回给数据处理模块;S55数据处理模块根据协处理器返回的Rowkey获取数据,并将数据返回给客户端。本发明的有益效果:1)实现多表对应一个协处理器的机制;可对索引字段进行灵活配置,以满足多级查询粒度的需求;2)实现基于内存数据库连接池的二级索引快速插入机制;当客户端向HBase中更新数据时,触发协处理器,根据操作的当前表的索引规则在内存数据库中创建二级索引,通过使用内存数据库连接池,可减少由于不断创建新连接的开销,快速构建相应的二级索引;3)实现基于内存数据库的二级索引存储机制;对HBase数据表生成的二级索引存储在内存数据库,当客户端发出查询或者删除请求时,可以快速查询二级索引,大幅提升访问效率;4)实现支持多级查询粒度的二级索引。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例所述的基于内存数据库的HBase二级索引构建与查询的装置组成结构示意图;图2是根据本发明实施例所述的数据处理模块的结构示意图;图3是根据本发明实施例所述的二级索引模块的结构示意图;图4是根据本发明实施例的二级索引规则构建流程图;图5是根据本发明实施例的二级索引规则删除流程图;图6是根据本发明实施例的数据更新流程图;图7是根据本发明实施例的数据查询流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。如图1-7所示,根据本发明实施例所述的一种基于内存数据库的HBase二级索引构建与查询的装置,包括:客户端,其用于发出二级索引规则创建请求、二级索引规则删除请求、数据更新请求和数据查询请求;数据处理模块,其接收客户端发送的请求,用于对客户端发出的请求进行分别处理,进行数据的更新、查询和删除;二级索引模块,对客户端发出的请求进行二级索引的更新、查询和删除。其中,所述数据处理模块主要是对HBase中的数据进行处理。其中,所述数据处理模块包括:客户端接口:用于接收客户端发送的各种数据请求,将对数据的请求转移到数据请求处理组件,对索引规则的请求转移到索引规则组件,接收相应的查询结果返回到客户端;数据请求处理组件:用于接收客户端接口的数据处理请求,在数据库存储组件中更新和删除数据库的数据,数据更新后,触发协处理器,进行二级索引的处理;数据存储组件:主要对数据进行存储,根据不同的操作及时更新数据;索引规则组件:接收客户端接口的索引规则请求,包括索引规则的创建和删除;协处理器组件:在数据请求处理组件在对数据进行处理后触发该协处理器组件,该该协处理器组件读取索引规则组件中的索引规则,根据索引规则对二级索引进行处理;和二级索引接口:根据协处理组件读取到的索引规则,将对二级索引的处理转移到二级索引模块。其中,所述二级索引模块主要是对二级索引进行处理,包括二级索引查询、更新和存储,所述二级索引模块主要包含:客户端接口:接收客户端发送的数据请求,将对数据的查询请求转移到二级索引查询组件,更新请求转移到二级索引更新组件,接收相应的查询结果返回到客户端;二级索引更新组件:接收客户端接口的更新请求,及时更新二级索引存储组件中的二级索引;二级索引查询组件:接收客户端接口的查询请求,通过向二级索引存储组件查询二级索引获得Rowkey,将其返回到客户端接口;二级索引查询组件:接收客户端接口的删除请求,及时删除二级索引存储组件中的二级索引;二级索引存储组件:对二级索引进行存储;数据处理接口:接收数据处理模块对二级索引的操作,将回调函数所获得的数据转移给二级索引模块。一种基于内存数据库的HBase二级索引构建与查询的方法,包括以下步骤:S1客户端发送二级索引规则创建请求,协处理器调用二级索引模块接口,将二级索引信息和二级索引数据写入二级索引模块;S2客户端发送二级索引规则删除请求,协处理器调用二级索引模块接口,删除二级索引规则信息和索引数据;S3客户端发送数据更新请求,数据处理模块确定数据更新类型为插入,数据处理模块将更新数据直接写入HBase,协处理器调用二级索引模块接口修改二级索引数据;S4客户端发送数据更新请求,数据处理模块确定数据更新类型为修改或删除,协处理器协助数据处理模块搜索到需要更新的数据,数据处理模块更新数据,协处理器调用二级索引模块接口修改索引数据;S5客户端发送数据查询请求,协处理器协助数据处理模块搜索到需要查询的数据,数据处理模块获取查询数据并将获取的数据返回给客户端。其中,步骤S1进一步包括:S11客户端发送二级索引规则创建请求;S12数据处理模块接受二级索引规则创建请求,数据请求处理组件将二级索引创建情况分配给协处理器组件进行处理;S13协处理器组件对收到的二级索引创建请求中的表名和字段进行解析;S14协处理器组件根据索引创建请求的解析结果调用二级索引模块接口写入索引规则信息,并在二级索引模块中根据表名和索引字段创建二级索引对应的Key值;S15协处理器组件扫描HBase中索引归属的表,将每条记录的Rowkey和对应索引字段的权值写入二级索引模块。其中,步骤S2进一步包括:S21客户端发送二级索引规则删除请求;S22数据处理模块接收索引删除请求,分配给协处理器组件进行处理;S23协处理器组件对收到索引删除请求中的索引名称进行解析;S24协处理器组件根据解析结果调用二级索引模块接口,删除索引规则信息和索引数据。其中,步骤S3进一步包括:S31客户端发送数据更新请求;S32数据处理模块接收到数据更新请求后,经判断,确定数据更新类型为插入,将更新数据直接写入HBase,并将数据更新请求转发给协处理器;S33协处理器判断更新字段是否为索引字段,若数据更新字段是索引字段,协处理器调用二级索引模块更新索引数据;若数据更新字段不是索引字段,数据更新结束。其中,步骤S4进一步包括:S41客户端发送数据更新请求;S42数据处理模块接收到数据更新请求后,经判断,确定数据更新类型为修改或删除,并将数据更新请求转发给协处理器;S43协处理器判断更新条件是否为索引字段,若更新条件为索引字段,协处理器遍历HBase,获取符合条件的Rowkey;若更新条件不为索引字段,协处理器将更新条件提交给二级索引模块,二级索引模块根据不同的更新条件进行精确、范围或组合查询,返回符合条件的Rowkey;S44协处理器将二级索引模块返回的Rowkey返回给数据处理模块,数据处理模块根据协处理器返回的Rowkey更新数据;S45协处理器判断更新字段是否为索引字段,若数据更新字段是索引字段,协处理器调用二级索引模块更新索引数据;若数据更新字段不是索引字段,数据更新结束。其中,所述步骤S5进一步包括:S51客户端发送数据查询请求;S52数据处理模块接收到数据查询请求后,将数据查询请求转发给协处理器;S53协处理器判断更新条件是否为索引字段,若更新条件为索引字段,协处理器遍历HBase,获取符合条件的Rowkey;若更新条件不为索引字段,协处理器将查询条件提交给二级索引模块,二级索引模块根据不同的查询条件进行精确、范围或组合查询,返回符合条件的Rowkey;S54协处理器将二级索引模块返回的Rowkey返回给数据处理模块;S55数据处理模块根据协处理器返回的Rowkey获取数据,并将数据返回给客户端。在本发明中,数据处理模块主要是对HBase中的数据进行处理;客户端接口主要用于接收客户端发送的各种数据请求,将对数据的请求转移到数据请求处理组件,对索引规则的请求转移到索引规则组件,接收相应的查询结果返回到客户端;数据请求处理组件用于接收客户端接口的数据处理请求,在数据库存储组件中更新和删除数据库的数据,数据更新后,触发协处理器,进行二级索引的处理;HBase主要用于对数据进行存储,根据不同的操作及时更新数据;索引规则组件用于接收客户端接口的索引规则请求,包括索引规则的创建和删除;协处理器组件用于读取索引规则组件中的索引规则,根据索引规则对二级索引进行处理;二级索引接口用于根据协处理组件读取到的索引规则,将对二级索引的处理转移到二级索引模块。在本发明中,二级索引模块主要是对二级索引进行处理,包括二级索引查询、更新和存储;客户端接口用于接收客户端发送的数据请求,将对数据的查询请求转移到二级索引查询组件,更新请求转移到二级索引更新组件,接收相应的查询结果返回到客户端;二级索引更新组件用于接收客户端接口的更新请求,及时更新内存数据库中的二级索引;二级索引查询组件用于接收客户端接口的查询请求,通过向内存数据库查询二级索引获得Rowkey,将其返回到客户端接口;二级索引查询组件用于接收客户端接口的删除请求,及时删除内存数据库中的二级索引;内存数据库用于对二级索引进行存储;数据处理接口用于接收数据处理模块对二级索引的操作,将回调函数所获得的数据转移给二级索引模块。在本发明中,内存数据库是可以将数据放在内存中直接操作的数据库。主流的内存数据库包括Redis、FastDB、Memcached等。通过使用内存数据库实现对多级查询粒度的二级索引构建与查询的方法和装置,多级查询粒度包括对数据的精确查询、组合查询和范围查询。其方法和装置为:客户端发出更新、查询、删除请求,对涉及条件过滤的字段和Rowkey在内存数据库中更新、查询、删除索引,在处理查询请求时,客户端通过查询二级索引快速获得符合过滤条件的Rowkey,在HBase中通过获得的Rowkey进行查询,提高查询的效率和性能。本发明是基于内存数据库实现HBase二级索引的构建、存储和查询,可以实现二级索引的快速生成和对HBase数据库的高效查询;本专利充分分析了对HBase的查询操作种类,针对不同的查询操作,使用内存数据库不同的数据结构,构建相应的二级索引,从而实现快速检索;本发明中,当需求发生变化时,对HBase需要构建二级索引的字段进行配置,以满足其需求。实现支持多级查询粒度的二级索引构建方法如下:精准查询:根据查询条件,对索引字段直接进行精准查询,查询结果为HBase的Rowkey,再根据Rowkey对HBase进行查询。其构建的二级索引形式为Key-Value,Key是HBase表名、字段名的组合,Value是HBase的Rowkey。范围查询:根据查询条件,通过HBase的查询条件,对内存数据库构建二级索引方法和装置中的有序参数进行范围查询,查询结果为HBase的Rowkey,再根据Rowkey对HBase进行查询。其构建的二级索引形式为Key-Score-Value,Key是HBase表名、字段名的组合,Score是HBase的字段值,Value为HBase的Rowkey。组合查询:根据查询条件,分别对精准查询和范围查询进行组合,结果集进行差集或者交集,其结果为HBase的Rowkey,再根据Rowkey对HBase进行查询。其构建的二级索引是Key-Value和Key-Value的组合,查询结果求交集或者差集。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1