一种查询热数据的方法及装置的制造方法

文档序号:8319312阅读:150来源:国知局
一种查询热数据的方法及装置的制造方法
【专利说明】一种查询热数据的方法及装置
[0001]本申请要求申请日为2014年10月21日、申请号为201410561983.6、发明名称为《一种查询热数据的方法》的中国发明专利申请的优先权。
技术领域
[0002]本发明涉及数据处理技术领域,尤其涉及一种查询热数据的方法及装置。
【背景技术】
[0003]目前,在实时监控系统的场景下,通常只会关注最新时间段的业务数据,根据业务需求可以是最近30分钟、最近I小时、甚至于最近几个小时的数据,这部分被关注的数据可以称之为热数据,当热数据失去时效性后,称之为冷数据。随着时间的推移,热数据会变为冷数据,最新接收到的数据变为热数据。实时监控系统经常要对热数据进行频繁的查询,这类查询要求能够快速响应,以便及时的在实时监控系统中显示出来。
[0004]现有技术方案中,客户端首先发出查询条件,服务器端接收到查询条件后,将查询条件组装为结构化查询语言SQL (Structured Query Language),再传递到数据库,数据库解析该SQL语句,从硬盘中取出数据后返回查询结果,服务器端将查询结果重组后传递给客户端,但在该方案中,当需要查询的结果数据很多,并发查询很频繁时,数据库的查询压力会很大,无法做到快速响应。

【发明内容】

[0005]本发明的目的是提供一种查询热数据的方法及装置,该方法能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。
[0006]一种查询热数据的方法,所述方法包括:
[0007]在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中;
[0008]当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作;
[0009]向所述客户端返回查询结果。
[0010]一种查询热数据的装置,所述装置包括:
[0011]数据缓存单元,用于在实时监控系统下,预先查询热数据,并将查询到的热数据进行缓存;
[0012]数据查询单元,用于当客户端进行热数据查询时,在所述数据缓存单元预先缓存的数据中执行数据查询操作;
[0013]查询结果发送单元,用于向客户端返回查询结果。
[0014]由上述本发明提供的技术方案可以看出,上述方法及装置能够提高客户端的查询效率和响应速度,并降低数据库的查询压力。
【附图说明】
[0015]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0016]图1为本发明实施例所提供查询热数据的方法流程示意图;
[0017]图2为本发明实施例所述服务器端定时维护缓存区的流程示意图;
[0018]图3为本发明实施例所提供查询热数据的装置结构示意图;
[0019]图4为本发明实施例所提供的查询热数据装置的另一结构示意图。
【具体实施方式】
[0020]下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0021]本发明实施例所述方法针对实时监控系统,客户端向服务器端的查询时间段是递增的,且时间的查询范围一定在热数据生命周期的时间段内。下面将结合附图对本发明实施例作进一步地详细描述,如图1所示为本发明实施例所提供查询热数据的方法流程示意图,所述方法包括:
[0022]步骤11:在实时监控系统下,服务器端预先查询热数据,将查询到的热数据缓存在服务器端的内存中;
[0023]在该步骤中,服务器端可以通过结构化查询语言SQL预先向数据查询热数据,也可以使用别的查询语言查询数据库;这里缓存在服务器端内存中的热数据可以是顺序且按照时间递增的数据队列,称为缓存队列,该缓存队列以缓存表的形式缓存在服务器端内存中,一个缓存表对应存放一个业务单元;且该缓存队列包含有时间字段、业务维度和指标,其中时间字段精确到秒。
[0024]步骤12:当客户端进行热数据查询时,所述服务器端在预先缓存的数据中执行数据查询操作;
[0025]在该步骤中,当客户端进行热数据查询时,所述服务器端首先接收所述客户端发来的热数据查询请求,该查询请求中包含了各种查询参数,例如查询时间,查询的业务单元以及过滤条件等(例如特定维度的数据,或者是全部的数据);
[0026]然后,所述服务器端解析所述查询请求,并确定查询计划;
[0027]所述服务器端根据所述查询计划在缓存队列中查询数据;
[0028]再把获得的查询结果返回给所述客户端。
[0029]在上述操作中,服务器端根据所述查询计划在缓存队列中查询数据的过程可以是:
[0030]服务器端首先根据所述查询请求确定业务单元;
[0031]根据所述业务单元在所述缓存队列中确定相应的缓存表;
[0032]然后对所述业务单元所确定的缓存表按照时间范围筛选,如果有过滤条件则按照过滤条件筛选,过滤掉不需要的数据,并将相同时间相同维度的数据汇总后作为查询结果。
[0033]步骤13:向所述客户端返回查询结果。
[0034]通过上述的操作步骤,就可以提高客户端的查询效率和响应速度,并降低数据库的查询压力。
[0035]举例来说,下面以具体的实例对上述查询过程进行说明:
[0036]首先,服务器端接收客户端发来的查询请求,该查询请求中包含了查询参数,例如可以是查询时间、查询的业务单元以及过滤条件等,过滤条件可以是特定维度的数据或者是全部的数据;
[0037]然后,服务器端解析该查询请求,确定查询计划;
[0038]再根据查询计划从所述服务器端的缓存队列中查询数据,也就是根据查询的业务单元确定相应的缓存表,并对缓存表按照时间范围筛选;这里如果有过滤条件则按照过滤条件筛选,过滤不需要的数据,最后将相同时间相同维度的数据汇总后作为查询结果;
[0039]最后将该查询结果返回给客户端。
[0040]另外,在具体实现中,所述服务器端还可以定时维护缓存区,将失效的冷数据从所述缓存区中移除,这样客户端查询就无需访问数据库,如图2所示为本发明实施例所述服务器端定时维护缓存区的流程示意图,其过程具体为:
[0041]步骤21:服务器端首先启动一个后台线程,周期性的执行以下步骤操作;
[0042]其执行频率根据需要设定,通常为几秒或者10秒。
[0043]步骤22:查询所述服务器端缓存队列中最后一条数据的时间戳,将所述时间戳减去一个查询周期得到查询的时间起点;
[0044]这里,为了降低上一次查询数据不完整的情况,将所述时间戳减去一个查询周期(查询频率)得到查询的时间起点;且如果缓存队列中没有数据,查询时间的起点则是系统时间减去一个时间周期。
[0045]步骤23:根据所述时间起点生成SQL查询语句,向数据库发送查询请求,从所述数据库中获得业务数据;
[0046]步骤24:将所述业务数据放入所述缓存队列;
[0047]在该步骤中,如果相同时间相同维度的数据在缓存队列中已经存在,则将所述业务数据更新到缓存队列中,否则插入到缓存队列中;按照该规则,在缓存队列中的数据是顺序且按照时间递增的数据队列。
[0048]步骤25:根据业务需求取得热数据的生命周期,并将缓存的生命周期设定为比所述热数据的生命周期长;
[0049]举例来说,假如热数据的生命周期是I个小时,考虑数据的冗余性,且缓存的生命周期比热数据的生命周期长,那么缓存的生命周期可以设定为I小时30分钟。
[0050]步骤26:再次取得所述缓存队列中最后一条数据的时间戳,将所述时间戳减去所述缓存的生命周期得到冷数据的时间终点;
[0051]在该步骤中,所得到的时间也是热数据的时间起点。
[0052]步骤27:从所述缓存队列中删除所述时间终点之前的全部数据,使所述缓存队列中保留的全是热数据。
[0053]基于上述的查询方法,本发明实
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1