一种基于redis的高效Hbase分页查询方法技术

技术编号:20566603 阅读:33 留言:0更新日期:2019-03-14 09:25
本发明专利技术涉及Hbase分页查询技术领域,具体涉及一种基于redis的高效Hbase分页查询方法,包括如下步骤:对Hbase表的数据生成Rowkey;设置扫描数据的最大条数、根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;根据查询条件生成redis中用于存储Rowkey信息的key、根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中;取数据的时候直接从redis中查找。本发明专利技术的有益效果:通过redis缓存技术将Hbase表数据的分页信息缓存起来,web端进行分页查询的时候根据条件生成对应的key先到redis中获取,如果redis中没有再进行查询并对分页相关信息进行保存,极大提高了查询时的响应速度。

An Efficient Hbase Paging Query Method Based on redis

The invention relates to the technical field of Hbase paging query, in particular to an efficient Hbase paging query method based on redis, including the following steps: generating Rowkey from Hbase table data; setting the maximum number of scanned data, generating query ranges startRow, endRow and page filter according to the number of pages and rows per page queried and other query conditions; Conditions generate keys for storing Rowkey information in redis, scan from Hbase according to query conditions, and save rowKey information of the first data of the current page, the first two pages and the last two pages to redis; when retrieving data, it is directly searched from redis. The beneficial effect of the invention is that the paging information of Hbase table data is cached by redis caching technology, and the corresponding key is generated in redis according to the conditions when the web side performs paging queries. If the redis does not query again and the paging related information is saved, the response speed of the query is greatly improved.

【技术实现步骤摘要】
一种基于redis的高效Hbase分页查询方法
本专利技术涉及Hbase分页查询
,具体涉及一种基于redis的高效Hbase分页查询方法。
技术介绍
随着信息技术的不断发展,近些年来,海量的数据成为最具价值的财富。在信息传播极其迅速的今天各种数据渗透着我们的生活,它们以指数级的速度增长,数据爆炸将我们带入大数据时代。大数据开始蔓延到社会的各行各业从而影响着我们的学习、工作、生活以及社会的发展,因此大数据的相关研究受到中央和地方政府、各大科研机构和各类企业的高度关注。在大部分web信息系统中,都存储着大量甚至是海量的数据,分页查询是其中必不可少的一项技术。传统的关系型数据库有着强大的SQL语言,具有一套完整成熟的分页查询方法。HBase是一个分布式的、面向列的开源数据库,该技术来源于FayChang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(FileSystem)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。中国专利“CN103617232一种针对Hbase表的分页查询方法”所述的技术方案在实现Hbase分页时,将所有的Hbase表数据进行顺序编号,该编号是查询时的唯一条件,现实环境中很多情况下会有各种复杂的查询需求,简单的顺序编号无法满足;如果数据有删除动作的话,之前的顺序编号和数据的总数也需要进行调整,代价巨大。
技术实现思路
本专利技术的目的在于克服现有技术中存在的问题,提供一种基于redis的高效Hbase分页查询方法,它可以实现提高查询的响应速度、成本低。为实现上述技术目的,达到上述技术效果,本专利技术是通过以下技术方案实现的:一种基于redis的高效Hbase分页查询方法,其包括如下步骤:Step1,对Hbase表的数据生成Rowkey;Step2,设置扫描数据的最大条数;Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;Step4,根据查询条件生成redis中用于存储Rowkey信息的key;Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:1)根据查询条件判断当前页Rowkey信息在redis中是否存在;2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n-1、n-2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;Step6,取数据的时候直接从redis中查找。进一步地,所述Step1中的Hbase表中数据根据Rowkey的字典顺序排序,具体排序方法为:将数据Rowkey中的时间使用一个数字常量减去数据实际时间进行存储,即:Tm-Tc,其中,Tm为常量Long.MAX,Tc为数据实际时间。进一步地,所述Step3中获取指定页码的startRow存储在redis中的key,所述key的存储规则为:项目名称+域名称+方法名称+查询参数。本专利技术的有益效果:通过redis缓存技术将Hbase表数据的分页信息缓存起来,web端进行分页查询的时候根据条件生成对应的key先到redis中获取,如果redis中没有再进行查询并对分页相关信息进行保存,极大提高了查询时的响应速度。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术的方法流程图;具体实施方式为了使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。如图1所示的一种基于redis的高效Hbase分页查询方法,其包括如下步骤:Step1,对Hbase表的数据生成Rowkey;Step2,设置扫描数据的最大条数,根据实际情况设置扫描数据的最大条数,这样每次最多扫描至最大条数数据,每最大条数的数据记录一个index,数据rowKey写入redis缓存中,跳页的时候最多只能跳转到当前扫描出来的最大页码;Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter,根据查询条件无法获取指定页码的startRow,只能拼出分页中第一页第一条数据的Rowkey,也就是最原始的起始行数据,需要在后续的步骤中查找出指定页码的startRow;Step4,根据查询条件生成redis中用于存储Rowkey信息的key;Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:1)根据查询条件判断当前页Rowkey信息在redis中是否存在;2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n-1、n-2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;Step6,取数据的时候直接从redis中查找本文档来自技高网
...

【技术保护点】
1.一种基于redis的高效Hbase分页查询方法,其特征在于,其包括如下步骤:Step1,对Hbase表的数据生成Rowkey;Step2,设置扫描数据的最大条数;Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;Step4,根据查询条件生成redis中用于存储Rowkey信息的key;Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:1)根据查询条件判断当前页Rowkey信息在redis中是否存在;2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex‑1)*pageSize;4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n‑1、n‑2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;Step6,取数据的时候直接从redis中查找。...

【技术特征摘要】
1.一种基于redis的高效Hbase分页查询方法,其特征在于,其包括如下步骤:Step1,对Hbase表的数据生成Rowkey;Step2,设置扫描数据的最大条数;Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;Step4,根据查询条件生成redis中用于存储Rowkey信息的key;Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:1)根据查询条件判断当前页Rowkey信息在redis中是否存在;2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值...

【专利技术属性】
技术研发人员:朱静轩郑川章文友孟彦
申请(专利权)人:中新网络信息安全股份有限公司
类型:发明
国别省市:安徽,34

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

1