CN108153874B - 一种大数据高耗时查询结果集的快速分页方法 - Google Patents
一种大数据高耗时查询结果集的快速分页方法 Download PDFInfo
- Publication number
- CN108153874B CN108153874B CN201711429109.7A CN201711429109A CN108153874B CN 108153874 B CN108153874 B CN 108153874B CN 201711429109 A CN201711429109 A CN 201711429109A CN 108153874 B CN108153874 B CN 108153874B
- Authority
- CN
- China
- Prior art keywords
- request
- data
- file
- result set
- server
- 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
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种大数据高耗时查询结果集的快速分页方法,前端提交查询数据请求到服务器,请求的信息包括请求ID以及请求信息;服务器接收到前端请求的时候,使用异步的方式查询,然后先提前将全部查询结果集按照一定的规则落地到文件系统中,然后通知前端查询成功,前端就通过接口获取缓存的数据,并且可以实现实时翻页,而不需要再次从目标数据库中再次查询,节省用户时间。
Description
技术领域
本发明涉及大数据查询方法,特别涉及一种大数据查询结果集的分页方法。
背景技术
目前大多数公司使用传统数据库进行数据查询分页,一般都是通过SQL语句进行分页处理,比如限制每页显示100条,则查询第一页需要从数据库中查出第1-100条数据,查询第二页需要从数据库查询101-200条数据,即每翻一页都要实时的去目标数据库查询一次数据。对于大数据平台的查询,如果一次查询计算量大并且非常耗时,采用这种方式,每翻一页都实时的去数据源查询一次,效率必定很低,假如一次查询需要耗时10分钟,当用户翻到第二页的时候,进行第二次查询还需要等10分钟,用户一般难以忍受这种等待。
发明内容
本发明要解决的技术问题,在于提供一种大数据高耗时查询结果集的快速分页方法,使用异步方式查询,然后先提前将全部查询结果集按照一定的规则落地到文件系统中,通知前端查询成功,前端就通过接口获取缓存的数据,并且可以实现实时翻页,而不需要再次从目标数据库中再次查询,节省用户时间。
本发明是这样实现的:一种大数据高耗时查询结果集的快速分页方法,包括:
步骤S1、前端提交查询数据请求到服务器,请求的信息包括请求ID以及请求信息;
步骤S2、服务器接收到前端请求的时候,返回一个请求接收成功的信息给前端,同时往缓存中写入请求ID的状态为执行中,然后创建一个异步线程,进行数据查询;
步骤S3、前端收到服务器返回的信息后,则使用之前的请求ID发起另外一个查询任务状态,只要任务一直是执行中的状态,则前端一直定时查询服务器刷新任务执行状态;
步骤S4、服务异步查询数据成功后,根据请求ID创建对应的文件夹,将结果集根据配置信息分块得到结果集块后保存在文件夹中,每个结果集块保存为一个数据块文件,可以是HDFS或者本地文件系统;
步骤S5、结果集保存后,系统再根据请求ID,将缓存中的任务状态更新为执行成功状态;
步骤S6、前端定时刷新发现任务状态是执行成功状态,则停止刷新,发起获取数据请求,请求参数包括请求ID,页数,每页数据记录条数;
步骤S7、后端服务器接收到前端获取数据的请求后,根据用户登录的SessionId和请求ID读取该数据块文件获取对应的结果集块信息,然后系统根据前端的参数换算每页要获取的数据记录条数来读取结果集块信息,得到需要查询的数据记录,返回给前端。
进一步的,所述步骤S4具体是:
步骤41、根据用户登录的SessionID创建文件夹,文件夹名为SessionID,如果已经存在了则不创建;
步骤42、根据请求ID创建子文件,文件夹名为请求ID;
步骤43、将结果集根据配置信息分块得到结果集块,每个结果集块分别保存为一个数据块文件,并且把数据块文件的数据记录分布信息存入指定文件夹下的index文件中。
进一步的,所述文件分布信息的保存格式如下:
TOTAL:M
N1:文件1
N2:文件2
.....
M:文件i
其中,M为文件总记录条数;N1、N2.....M为对应文件的最后一条记录,冒号为分隔符,文件1、文件2.....文件i为对应的文件名。
进一步的,所述步骤S7具体是:
步骤71、后端服务器接收到前端取数据的请求后,根据用户登录的SessionID和请求ID,获取指定文件夹下的index文件,读取该文件获取对应的数据分块信息;
步骤72、然后系统根据前端的参数换算,换算每页要获取的数据记录条数;
步骤73、系统判断每页起始记录跟结束记录落在哪个文件上,然后将对应的结果集块的数据读取出来,从中获取我们需要查询的记录,返回给前端。
进一步的,本发明还包括:
步骤S8、用户注销或者超时,Session过期的时候,触发事件从文件系统上删除该SessionID对应的文件夹。
本发明具有如下优点:
1、对于高耗时的查询,本发明使用异步方式查询,可以减少服务器连接的占用,可以减轻服务器的压力;
2、本发明提前将全部查询结果集按照一定的规则落地到文件系统中,用户查询的时候只需要等待一次,第一次查询完毕后,再次翻页不需要再等待,大大的节省用户的等待时间。
具体实施方式
本发明的大数据高耗时查询结果集的快速分页方法,包括如下步骤:
步骤S1、前端提交查询数据请求到服务器,请求的信息包括请求ID以及请求信息;请求ID必须是唯一的,一般使用UUID;
步骤S2、服务器接收到前端请求的时候,返回一个请求接收成功的信息给前端,同时往缓存中写入请求ID的状态为执行中,然后创建一个异步线程,进行数据查询;
步骤S3、前端收到服务器返回的信息后,则使用之前的请求ID发起另外一个查询任务状态,只要任务一直是执行中的状态,则前端一直定时查询服务器刷新任务执行状态;
步骤S4、服务异步查询数据成功后,根据请求ID创建对应的文件夹,将结果集根据配置信息分块得到结果集块后保存在文件夹中,每个结果集块保存为一个数据块文件;该步骤具体是:
步骤41、根据用户登录的SessionID创建文件夹,文件夹名为SessionID,如果已经存在了则不创建;
步骤42、根据请求ID创建子文件,文件夹名为请求ID;
步骤43、将结果集根据配置信息分块得到结果集块,每个结果集块分别保存为一个数据块文件,并且把数据块文件的数据记录分布信息存入指定文件夹下的index文件中。
其中,所述文件分布信息的保存格式如下:
TOTAL:M
N1:文件1
N2:文件2
.....
M:文件i
其中,M为文件总记录条数;N1、N2.....M为对应文件的最后一条记录,冒号为分隔符,文件1、文件2.....文件i为对应的文件名。即上述格式含义是:
第一行为文件总记录条数M;
第二行为该文件包含的记录为第0条到第N1条记录,分隔符(可以使用冒号或者其他符号,下同),对应的文件名;
第三行包含的记录包括第N1+1条到N2条,分隔符,对应的文件名。
假设最后总共有i行记录,其中第(Ni-1)-(Ni-2)必须等于N1,只能允许最后一行Ni(即M)减去倒数第二行Ni-1的值小于N1,即(Ni)-(Ni-1)<=N1,以保证每个文件的数据量均匀。
假设结果集为10W条记录,比如用户配置将结果集每块1W条记录,那么将结果集分成10块,存到10个文件,并且把文件分布信息存入index文件中,格式如下:
TOTAL:100000
10000:文件1
20000:文件2
.....
100000:文件10。
步骤S5、结果集保存后,系统再根据请求ID,将缓存中的任务状态更新为执行成功状态;
步骤S6、前端定时刷新发现任务状态是执行成功状态,则停止刷新,发起获取数据请求,请求参数包括请求ID,页数,每页数据记录条数;
步骤S7、后端服务器接收到前端获取数据的请求后,根据用户登录的SessionId和请求ID读取该数据块文件获取对应的结果集块信息,然后系统根据前端的参数换算每页要获取的数据记录条数来读取结果集块信息,得到需要查询的数据记录,返回给前端;所述步骤S7具体是:
步骤71、后端服务器接收到前端取数据的请求后,根据用户登录的SessionID和请求ID,获取指定文件夹下的index文件,读取该文件获取对应的数据分块信息;
步骤72、然后系统根据前端的参数换算,换算每页要获取的数据记录条数;比如第1页,每页记录100条,转换过来就是要获取1-100条记录,第2页则获取101-200条记录。
步骤73、系统判断每页起始记录跟结束记录落在哪个文件上,然后将对应的结果集块的数据读取出来,从中获取我们需要查询的记录,返回给前端。
步骤S8、用户注销或者超时,Session过期的时候,触发事件从文件系统上删除该SessionID对应的文件夹。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (2)
1.一种大数据高耗时查询结果集的快速分页方法,其特征在于:包括:
步骤S1、前端提交查询数据请求到服务器,请求的信息包括请求ID以及请求信息;
步骤S2、服务器接收到前端请求的时候,返回一个请求接收成功的信息给前端,同时往缓存中写入请求ID的状态为执行中,然后创建一个异步线程,进行数据查询;
步骤S3、前端收到服务器返回的信息后,则使用之前的请求ID发起另外一个查询任务状态,只要任务一直是执行中的状态,则前端一直定时查询服务器刷新任务执行状态;
步骤S4、服务异步查询数据成功后,根据请求ID创建对应的文件夹,将结果集根据配置信息分块得到结果集块后保存在文件夹中,每个结果集块保存为一个数据块文件;
步骤S5、结果集保存后,服务器再根据请求ID,将缓存中的任务状态更新为执行成功状态;
步骤S6、前端定时刷新发现任务状态是执行成功状态,则停止刷新,发起获取数据请求,请求参数包括请求ID,页数,每页数据记录条数;
步骤S7、服务器接收到前端获取数据的请求后,根据用户登录的SessionId和请求ID读取数据块文件获取对应的结果集块信息,然后服务器根据前端的参数换算每页要获取的数据记录条数来读取结果集块信息,得到需要查询的数据记录,返回给前端;
所述步骤S4具体是:
步骤41、根据用户登录的SessionID创建文件夹,文件夹名为SessionID,如果已经存在了则不创建;
步骤42、根据请求ID创建子文件,文件夹名为请求ID;
步骤43、将结果集根据配置信息分块得到结果集块,每个结果集块分别保存为一个数据块文件,并且把数据块文件的数据记录分布信息存入指定文件夹下的index文件中;
所述数据块文件的数据记录分布信息的保存格式如下:
TOTAL:M
N1:文件1
N2:文件2
.....
M:文件i
其中,M为文件总记录条数;N1、N2.....M为对应文件的最后一条记录,冒号为分隔符,文件1、文件2.....文件i为对应的文件名;
所述步骤S7具体是:
步骤71、服务器接收到前端取数据的请求后,根据用户登录的SessionID和请求ID,获取指定文件夹下的index文件,读取该文件获取对应的数据块文件的数据记录分布信息;
步骤72、然后系统根据前端的参数换算,换算每页要获取的数据记录条数;
步骤73、系统判断每页起始记录跟结束记录落在哪个文件上,然后将对应的结果集块的数据读取出来,从中获取需要查询的记录,返回给前端。
2.根据权利要求1所述的一种大数据高耗时查询结果集的快速分页方法,其特征在于:还包括:
步骤S8、用户注销或者超时,Session过期的时候,触发事件从文件系统上删除SessionID对应的文件夹。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711429109.7A CN108153874B (zh) | 2017-12-26 | 2017-12-26 | 一种大数据高耗时查询结果集的快速分页方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711429109.7A CN108153874B (zh) | 2017-12-26 | 2017-12-26 | 一种大数据高耗时查询结果集的快速分页方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153874A CN108153874A (zh) | 2018-06-12 |
CN108153874B true CN108153874B (zh) | 2022-07-29 |
Family
ID=62462866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711429109.7A Active CN108153874B (zh) | 2017-12-26 | 2017-12-26 | 一种大数据高耗时查询结果集的快速分页方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153874B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947827A (zh) * | 2018-12-27 | 2019-06-28 | 航天信息股份有限公司 | 一种查询操作的响应方法和装置 |
CN112866339B (zh) * | 2020-12-30 | 2022-12-06 | 金蝶软件(中国)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826085A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种基于ajax的网页在线导入/导出大文件的方法 |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201827B (zh) * | 2006-12-14 | 2013-02-20 | 阿里巴巴集团控股有限公司 | 一种网页显示的方法和系统 |
CN100541454C (zh) * | 2007-12-14 | 2009-09-16 | 东软集团股份有限公司 | 一种数据缓存方法及系统 |
CN103425708A (zh) * | 2012-05-25 | 2013-12-04 | 金蝶软件(中国)有限公司 | 一种优化的web分页查询方法及装置 |
CN103995807B (zh) * | 2013-02-16 | 2018-01-16 | 长沙中兴软创软件有限公司 | 一种基于Web架构下海量数据查询和二次处理的方法 |
CN103412961B (zh) * | 2013-09-04 | 2017-03-29 | 广东全通教育股份有限公司 | 一种实时导出海量数据报表的处理方法和系统 |
CN104516979B (zh) * | 2014-12-31 | 2018-10-02 | 北京锐安科技有限公司 | 一种基于二次检索的数据查询方法及系统 |
CN105843958A (zh) * | 2016-04-15 | 2016-08-10 | 北京思特奇信息技术股份有限公司 | 一种基于缓存的服务端分页方法和系统 |
CN106095775A (zh) * | 2016-05-24 | 2016-11-09 | 中国银行股份有限公司 | 一种实现数据查询或导出的方法及系统 |
CN107103032B (zh) * | 2017-03-21 | 2020-02-28 | 中国科学院计算机网络信息中心 | 一种分布式环境下避免全局排序的海量数据分页查询方法 |
CN107451227A (zh) * | 2017-07-21 | 2017-12-08 | 网宿科技股份有限公司 | 分页查询方法及装置 |
-
2017
- 2017-12-26 CN CN201711429109.7A patent/CN108153874B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826085A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种基于ajax的网页在线导入/导出大文件的方法 |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
Non-Patent Citations (3)
Title |
---|
分布式结构化数据分页查询中的动态归并算法;段翰聪 等;《小型微型计算机系统》;20130715(第07期);1503-1506 * |
基于Ajax的视频购物网站的设计与实现;石旸;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120315(第03期);I139-562 * |
异步传输技术高效分页在WebService中的应用研究;王鹏 等;《长春理工大学学报(自然科学版)》;20090915;第32卷(第03期);466-471 * |
Also Published As
Publication number | Publication date |
---|---|
CN108153874A (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247808B (zh) | 一种分布式NewSQL数据库系统及图片数据查询方法 | |
CN107169083B (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
CN110502507B (zh) | 一种分布式数据库的管理系统、方法、设备和存储介质 | |
CN107025243B (zh) | 一种资源数据的查询方法、查询客户端和查询系统 | |
CN106649828B (zh) | 一种数据查询方法及系统 | |
US20160364407A1 (en) | Method and Device for Responding to Request, and Distributed File System | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
WO2017005094A1 (zh) | 一种数据查询方法和装置 | |
US12050578B2 (en) | Distributed database management system with dynamically split B-Tree indexes | |
CN111309720A (zh) | 时序数据的存储、读取方法、装置、电子设备及存储介质 | |
US9430525B2 (en) | Access plan for a database query | |
CN105608126A (zh) | 一种建立海量数据库二级索引的方法和装置 | |
CN102968507A (zh) | 基于缓存表的数据查询方法 | |
CN108153874B (zh) | 一种大数据高耗时查询结果集的快速分页方法 | |
CN110597835A (zh) | 一种基于区块链的交易数据删除方法及装置 | |
CN111046041A (zh) | 数据处理方法和装置、存储介质及处理器 | |
CN116108057B (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN107798111B (zh) | 一种分布式环境中大批量导出数据的方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN114281819A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN114020691B (zh) | 读写分离的数据更新方法及其装置、kv存储系统 | |
CN114090631A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
JP2012168781A (ja) | 分散型データストアシステム及び分散型データストアシステムにおけるレコード管理方法 | |
CN113553306B (zh) | 数据处理方法及数据存储管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 350000 21 / F, building 5, f District, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province Applicant after: FUJIAN SINOREGAL SOFTWARE CO.,LTD. Address before: Floor 20-21, building 5, area F, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province 350000 Applicant before: FUJIAN SINOREGAL SOFTWARE CO.,LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |