[发明专利]一种时间密集大数据量的B/S分区间分页查询方法有效
申请号: | 201210338858.X | 申请日: | 2012-09-13 |
公开(公告)号: | CN102880685A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 李倩倩;吕江花;田径;文乔;马世龙 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 周长琪 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提出了一种时间密集大数据量的B/S分区间分页查询方法。用户通过浏览器端输入初始查询条件,请求某一页或某一区间。首次查询某区间,在服务器端获取该区间的所有时间点,根据时间点个数获取本区间的总页数并以追加的方式将每页的起始时间和结束时间顺序写入缓存文件,根据第一页的起始时间和结束时间,获取该页数据,将本区间的总页数及第一页数据返回前台。对查询过的区间,只需从缓存文件中读出要查询的页的开始时间和结束时间,根据该时间条件从数据库中查询该页的数据并返回。通过分表查询数据库,再按时间点拼接以获取最终结果。本发明减小了每次查询的结果集,减少了查询数据库的响应时间,占用客户端和应用服务器存储空间少。 | ||
搜索关键词: | 一种 时间 密集 数据量 区间 分页 查询 方法 | ||
【主权项】:
一种时间密集大数据量的B/S分区间分页查询方法,其特征在于,用户通过浏览器端输入初始查询条件,在请求某一页或某一区间时,服务器端根据以下步骤获取请求结果数据:步骤1:收集本次用户在浏览器端输入的查询条件,放入查询条件queryCondition中,并获取每个区间包含的最多页数cacheSize,每页包含的最多数据条目数pageSize,以及两条数据间最短时间间隔span(ms),每个区间最多的结果条目数intervalTimeNum=cacheSize*pageSize;所述的查询条件queryCondition为一数据结构,设置的参数包括:期望查询的数据的起始时间startTime、结束时间endTime、期望查询的参数编号、期望查询的数据页page、已查询过的区间集合qIntervals、本次查询的查询编号qNum、以及本次查询的区间的总页数pageNum,除pageNum仅在服务器端设置和使用外,其他参数均由浏览器端设置并传递到服务器端;当前查询的页page=queryCondition.page,当前查询编号qNum=queryCondition.qNum;首次请求,queryCondition.page为1;步骤2:设置本次查询的缓存文件qNum.txt存放于web服务器下该用户的目录中,用filepath表示文件的完整路径;缓存文件qNum.txt的每行对应已查询过的区间的一页数据的起始时间和结束时间以及该页所属区间编号,每行的格式为:第一个时间,最后一个时间,所属区间;步骤3:根据当前查询的页page及cacheSize,获得当前查询的页所在的区间interval:interval=(page‑1)/cacheSize+1,然后判断是否是第一次查询该区间,若是,执行步骤4;若否,打开本次查询对应的缓存文件,定位到第page行,读出该行数据,将该行中记录的第一个时间赋值给queryConditon.startTime,第二个时间赋值给查询条件的结束时间queryCondition.endTime,执行步骤10;步骤4:若page=1,直接执行步骤5;若page>1,从本次查询的缓存文件中读出第page‑1行中的最后一个时间,然后设置查询条件的开始时间queryCondition.startTime为该最后一个时间+span(ms),然后执行步骤5;若page<1,返回有0条数据的结果集,本次请求结束;步骤5:根据查询条件queryCondition进行查询分解,构造SQL语句,去每个相关的数据库表中分别获取符合查询条件的最小的前intervalTimeNum个时间点;步骤6:将步骤5得到的所有时间点集合进行归并排序,结果放入临时数组tempTimeArray中;若tempTimeArray中有0个时间点,则返回有0条数据的结果集,本次请求结束,否则执行步骤7;步骤7:用length表示tempTimeArray中时间点个数,size表示当前区间总数据条数,若length>=intervalTimeNum,则size=intervalTimeNum,当前区间有cacheSize页;否则, size=length,若size%pageSize=0,则当前区间有size/pageSize页,若size%pageSize≠0,则当前区间有size/pageSize+1页,将当前区间的总页数暂存于queryCondition.pageNum中;步骤8:打开缓存文件qNum.txt,根据步骤6记录的临时数组tempTimeArray,以追加的方式在缓存文件中顺序写入当前区间每一页第一条数据和最后一条数据的时间点,并记录每一页所属的区间;具体第i(i从1递增到queryCondition.pageNum)页的第一个时间为tempTimeArray[(i‑1)*pageSize],若1<=i
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210338858.X/,转载请声明来源钻瓜专利网。
- 上一篇:上下文感知用户界面系统
- 下一篇:三元材料定量加料系统