一种查询热数据的方法

文档序号:6631019阅读:667来源:国知局
一种查询热数据的方法
【专利摘要】本发明公开了一种查询热数据的方法,首先在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中;当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作;向所述客户端返回查询结果。该方法能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。
【专利说明】一种查询热数据的方法

【技术领域】
[0001]本发明涉及数据处理【技术领域】,尤其涉及一种查询热数据的方法。

【背景技术】
[0002]目前,在实时监控系统的场景下,通常只会关注最新时间段的业务数据,根据业务需求可以是最近30分钟、最近I小时、甚至于最近几个小时的数据,这部分被关注的数据可以称之为热数据,当热数据失去时效性后,称之为冷数据。随着时间的推移,热数据会变为冷数据,最新接收到的数据变为热数据。实时监控系统经常要对热数据进行频繁的查询,这类查询要求能够快速响应,以便及时的在实时监控系统中显示出来。
[0003]现有技术方案中,客户端首先发出查询条件,服务器端接收到查询条件后,将查询条件组装为结构化查询语言SQL (Structured Query Language),再传递到数据库,数据库解析该SQL语句,从硬盘中取出数据后返回查询结果,服务器端将查询结果重组后传递给客户端,但在该方案中,当需要查询的结果数据很多,并发查询很频繁时,数据库的查询压力会很大,无法做到快速响应。


【发明内容】

[0004]本发明的目的是提供一种查询热数据的方法,该方法能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。
[0005]一种查询热数据的方法,所述方法包括:
[0006]在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中;
[0007]当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作;
[0008]向所述客户端返回查询结果。
[0009]由上述本发明提供的技术方案可以看出,上述方法能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。

【专利附图】

【附图说明】
[0010]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0011]图1为本发明实施例所提供查询热数据的方法流程示意图;
[0012]图2为本发明实施例所述服务器端定时维护缓存区的流程示意图。

【具体实施方式】
[0013]下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0014]本发明实施例所述方法针对实时监控系统,客户端向服务器端的查询时间段是递增的,且时间的查询范围一定在热数据生命周期的时间段内。下面将结合附图对本发明实施例作进一步地详细描述,如图1所示为本发明实施例所提供查询热数据的方法流程示意图,所述方法包括:
[0015]步骤11:在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中;
[0016]在该步骤中,服务器端可以通过结构化查询语言SQL预先向数据查询热数据,也可以使用别的查询语言查询数据库。
[0017]步骤12:当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作;
[0018]在该步骤中,当客户端进行热数据查询时,所述服务器端首先接收所述客户端发来的热数据查询请求,该查询请求中包含了各种查询参数,例如查询时间,查询的业务单元以及过滤条件等(例如特定维度的数据,或者是全部的数据);
[0019]然后,所述服务器端解析所述查询请求,并确定查询计划;
[0020]所述服务器端根据所述查询计划在缓存队列中查询数据;这里,缓存队列中包含时间字段、业务维度和指标,其中时间字段精确到秒;
[0021]再把获得的查询结果返回给所述客户端。
[0022]在上述操作中,服务器端根据所述查询计划在缓存队列中查询数据的过程可以是:
[0023]服务器端首先根据所述查询请求确定业务单元,也就是查询服务器端的哪张缓存表;
[0024]然后对所述业务单元所确定的缓存表按照时间范围筛选,如果有过滤条件则按照过滤条件筛选,过滤掉不需要的数据,并将相同维度的数据汇总后作为查询结果。
[0025]步骤13:向所述客户端返回查询结果。
[0026]通过上述的操作步骤,就可以提高客户端的查询效率和响应速度,并降低数据库的查询压力。
[0027]另外,在具体实现中,所述服务器端还可以定时维护缓存区,将失效的冷数据从所述缓存区中移除,这样客户端查询就无需访问数据库,如图2所示为本发明实施例所述服务器端定时维护缓存区的流程示意图,其过程具体为:
[0028]步骤21:服务器端首先启动一个后台线程,周期性的执行以下步骤操作;
[0029]其执行频率根据需要设定,通常为几秒或者10秒。
[0030]步骤22:查询所述服务器端缓存队列中最后一条数据的时间戳,将所述时间戳减去一个查询周期得到查询的时间起点;
[0031]这里,为了降低上一次查询数据不完整的情况,将所述时间戳减去一个查询周期(查询频率)得到查询的时间起点;且如果缓存队列中没有数据,查询时间的起点则是系统时间减去一个时间周期。
[0032]步骤23:根据所述时间起点生成SQL查询语句,向数据库发送查询请求,从所述数据库中获得业务数据;
[0033]步骤24:将所述业务数据放入所述缓存队列;
[0034]在该步骤中,如果相同时间相同维度的数据在缓存队列中已经存在,则将所述业务数据更新到缓存队列中,否则插入到缓存队列中;按照该规则,在缓存队列中的数据是顺序且按照时间递增的数据队列。
[0035]步骤25:根据业务需求取得热数据的生命周期,并将缓存的生命周期设定为比所述热数据的生命周期长;
[0036]举例来说,假如热数据的生命周期是I个小时,考虑数据的冗余性,且缓存的生命周期比热数据的生命周期长,那么缓存的生命周期可以设定为I小时30分钟。
[0037]步骤26:再次取得所述缓存队列中最后一条数据的时间戳,将所述时间戳减去所述缓存的生命周期得到冷数据的时间终点;
[0038]在该步骤中,所得到的时间也是热数据的时间起点。
[0039]步骤27:从所述缓存队列中删除所述时间终点之前的全部数据,使所述缓存队列中保留的全是热数据。
[0040]综上所述,通过本发明实施例所述方法在服务器端缓存并定时维护热数据,能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。
[0041]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
【权利要求】
1.一种查询热数据的方法,其特征在于,所述方法包括: 在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中; 当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作; 向所述客户端返回查询结果。
2.根据权利要求1所述查询热数据的方法,其特征在于,所述服务器端在预先缓存的数据中执行数据查询操作,具体包括: 所述服务器端接收所述客户端发来的热数据查询请求; 所述服务器端解析所述查询请求,并确定查询计划; 所述服务器端根据所述查询计划在缓存队列中查询数据; 将获得的查询结果返回给所述客户端。
3.根据权利要求2所述查询热数据的方法,其特征在于,所述服务器端根据所述查询计划在缓存队列中查询数据,具体包括: 所述服务器端首先根据所述查询请求确定业务单元; 对所述业务单元所确定的缓存表按照时间范围筛选,如果有过滤条件则按照过滤条件筛选,过滤掉不需要的数据,并将相同维度的数据汇总后作为查询结果。
4.根据权利要求1所述查询热数据的方法,其特征在于,所述方法还包括: 所述服务器端定时维护缓存区,将失效的冷数据从所述缓存区中移除。
5.根据权利要求4所述查询热数据的方法,其特征在于,所述服务器端定时维护缓存区,将失效的冷数据从所述缓存区中移除,具体包括: 所述服务器端首先启动一个后台线程,周期性的执行以下操作; 查询所述服务器端缓存队列中最后一条数据的时间戳,将所述时间戳减去一个查询周期得到查询的时间起点; 根据所述时间起点生成SQL查询语句,向数据库发送查询请求,从所述数据库中获得业务数据; 将所述业务数据放入所述缓存队列,如果相同时间相同维度的业务数据在缓存队列中已经存在,则将所述业务数据更新到所述缓存队列中,否则插入到所述缓存队列中; 根据业务需求取得热数据的生命周期,并将缓存的生命周期设定为比所述热数据的生命周期长; 再次取得所述缓存队列中最后一条数据的时间戳,将所述时间戳减去所述缓存的生命周期得到冷数据的时间终点; 从所述缓存队列中删除所述时间终点之前的全部数据,使所述缓存队列中保留的全是热数据。
【文档编号】G06F17/30GK104268286SQ201410561983
【公开日】2015年1月7日 申请日期:2014年10月21日 优先权日:2014年10月21日
【发明者】郭涛, 王鹏 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1