一种数据缓存的方法、缓存服务器及系统的制作方法

文档序号:6381148阅读:290来源:国知局
专利名称:一种数据缓存的方法、缓存服务器及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种数据缓存的方法、缓存服务器及系统。
背景技术
在程序设计中,数据库设计是一个比较重要的环节,数据库用于存储和检索数据, 为了满足业务需求和实现复杂的业务逻辑,在数据库中需要设计许多数据表,并且还需要 在数据表之间建立主键与外键的关联关系以保持数据的一致性和唯一性,这些关联关系将 数据库中各个数据表关联在一起。
数据表间相互关联对于存储数据的速度没什么太大的影响,但是会严重影响检索 数据的速度,现有技术中解决检索数据速度较慢的问题,一般采取优化数据库的方式来进 行,比如“建立索引”、“使用存储过程”、“优化SQL (structured query language,结构化 查询语言)语句”等。
随着时间的推移,数据库在使用的过程中将会存储海量数据,为了应对业务的需 要,需要在一二十个关联数据表中检索数据,当有大用户量访问时,数据库服务器硬盘灯将 会狂闪不止,无数进程需要IO(Input/Output,输入/输出)操作,并处于阻塞状态。
在现有技术中,通常会使用缓存机制,缓存机制分为两种,一种是数据库缓存,一 种是缓存框架,这两种缓存机制都是将常用的不经常改变的数据预先缓存到内存中,当客 户端发起请求时,优先从缓存中提取,缓存中不存在需要的数据,才从数据库中查询,并将 查询到的数据缓存到内存中,以备下次请求使用。
采用数据库缓存或缓存框架,在一般应用场景中确实可以解决问题,但是对于数 据库中存储着海量数据,用户在通过客户端每次进行检索时,需要执行多条查询语句,并需 要将这些查询语句返回的查询结果数据相互融合,最后将融合后的数据返回给客户端,在 此情况下,如果使用上述数据库缓存和框架缓存,每次响应客户端的请求,仍然会需要执行 查询、数据融合的步骤,耗费较长的时间,会影响用户的体验。发明内容
本发明实施例所要解决的技术问题在于,提供一种数据缓存的方法、缓存服务器 及系统,可以有效地提闻检索数据的效率。
为了解决上述技术问题,本发明实施例提供了一种数据缓存的方法,包括
根据数据库查询语句对数据库进行数据查询,得到查询结果;
根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数 据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实 体中包括了根据查询结果得到的数据及数据间的关联关系;
缓存所述数据对象实体。
其中,所述根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实 体,包括
根据业务需求对所述查询结果进行业务逻辑运算;
将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述数据 对象模型中,将所述数据对象模型构造成所述数据对象实体。
其中,还包括
将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的 时间记录为第一消耗时间;
将构造得到数据对象实体所消耗的时间记录为第二消耗时间;
将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时 长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库 进行数据查询的中间时间。
其中,所述缓存所述数据对象实体的步骤之后,还包括
当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查 询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。
其中,还包括
当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据 查询请求参数的数据到所述业务服务器。
相应地,本发明实施例还提供了一种缓存服务器,包括
查询模块,用于根据数据库查询语句对数据库进行数据查询,得到查询结果;
构造模块,用于根据所述查询结果和预先定义的数据对象模型,构造得到数据对 象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型, 所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;
缓存模块,用于缓存所述数据对象实体。
其中,所述构造模块包括
逻辑运算单元,用于根据业务需求对所述查询结果进行业务逻辑运算;
录入单元,用于将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定 义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体。
其中,还包括
第一记录模块,用于将执行所述根据数据库查询语句对数据库进行数据查询得到 查询结果所消耗的时间记录为第一消耗时间;
第二记录模块,用于将构造得到数据对象实体所消耗的时间记录为第二消耗时 间;
总时间计算模块,用于将所述第一消耗时间、所述第二消耗时间以及预设的缓冲 时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距 离下次执行对数据库进行数据查询的中间时间。
其中,还包括
更新模块,用于当达到所述间隔时长时,重新执行所述根据数据库查询语句对数 据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数 据对象实体。
其中,还包括
发送模块,用于当接收到业务服务器的数据查询请求时,发送已缓存的数据对象 实体中符合数据查询请求参数的数据到所述业务服务器。
相应地,本发明实施例还提供了一种数据缓存的系统,包括缓存服务器、业务服 务器、数据库服务器;
所述缓存服务器,用于根据数据库查询语句对数据库进行数据查询,得到查询结 果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象 模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包 括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体;
所述业务服务器,用于接收用户请求,根据所述用户请求发送数据查询请求到所 述缓存服务器,并通过调用所述缓存服务器接口从已缓存的数据对象实体中检索符合数据 查询请求参数的数据,接收检索到的数据并将该数据返回给用户;
所述数据库服务器,用于存储数据,并让所述缓存服务器进行数据查询。
其中,还包括
用户终端,用于发送用户请求到所述业务服务器,以使所述业务服务器根据所述 用户请求发送数据查询请求到所述缓存服务器,以获取用户所需的业务数据。
实施本发明实施例,具有如下有益效果
本发明实施例通过缓存服务器预先缓存了根据数据查询结果和预置的数据对象 模型构造得到的数据对象实体,方便用户在发起查询请求时,可以直接从数据对象实体中 检索到符合条件的数据,提高了检索数据的效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据缓存的系统的结构示意图2是本发明实施例提供的一种缓存服务器的结构示意图3是本发明实施例提供的另一种缓存服务器的结构示意图4是图3中的构造模块的结构示意图5是本发明实施例提供的一种数据缓存的方法的流程示意图6是本发明实施例提供的另一种数据缓存的方法的流程示意图7是本发明实施例提供的确定间隔时长的方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
请参见图1,为本发明实施例提供的一种数据缓存的系统的结构示意图,所述数据缓存的系统可以包括业务服务器1、缓存服务器2、数据库服务器3。
所述业务服务器1,用于接收用户请求,根据所述用户请求发送数据查询请求到所 述缓存服务器,并通过调用所述缓存服务器接口从已缓存的数据对象实体中检索符合数据 查询请求参数的数据,接收检索到的数据并将该数据返回给用户;
所述缓存服务器2,用于根据数据库查询语句对数据库进行数据查询,得到查询结 果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象 模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包 括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体;
具体的,所述缓存服务器2还可以通过循环执行数据库查询和构造数据对象实体 来不断更新数据对象实体。
所述数据库服务器3,用于存储数据,并让所述缓存服务器进行数据查询。
所述数据缓存的系统还包括用户终端,用于发送用户请求到所述业务服务器,以 使所述业务服务器根据所述用户请求发送数据查询请求到所述缓存服务器,以获取用户所 需的业务数据。
下面结合图2-4,对图1中的缓存服务器2进行详细说明。
请参阅图2,为本发明实施例提供的一种缓存服务器的结构示意图,所述缓存服务 器2可以包括查询模块10、构造模块20、缓存模块30。
其中,所述查询模块10,用于根据数据库查询语句对数据库进行数据查询,得到查 询结果;
具体的,所述查询模块10用于根据预先定义的数据库查询语句对数据库进行数 据查询,得到查询结果,因此在执行数据检索之前,可以预先定义好SQL(Structured Query Language,结构化查询语言)查询语句,为了满足业务需求可能需要定义多条所述数据库 查询语句,因此也就需要多次访问数据库服务器。缓存服务作为缓存服务器2中的服务在 后台运行,用户可以启动、暂停或停止它,当缓存服务器2被启动时,所述查询模块10将根 据预先定义好的数据库查询语句对数据库进行数据查询,并得到查询结果,所述查询结果 包含有从数据库直接提取而且未经业务逻辑运算处理的原始数据。
所述构造模块20,用于根据所述查询结果和预先定义的数据对象模型,构造得到 数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的 模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;
具体的,所述构造模块20,用于根据所述查询结果和预先定义的数据对象模型,构 造得到数据对象实体,因此在构造数据对象实体之前,需要预先定义数据对象模型,所述数 据对象模型可以包含有查询数据时所需要的全部关键字,所述数据对象模型完全满足检索 数据的需要,当用户发起数据查询请求时,数据查询请求所包含的关键字可以与数据对象 模型所包含的关键字匹配,找到关键字所对应的数据。
对数据库进行数据检索得到的数据可以直接录入到所述数据对象模型中,也可以 对检索得到的数据进行业务逻辑运算,得到运算后的数据,再将运算后的数据录入到所述 数据对象模型中,进行业务逻辑运算时可以根据用户的一些信息,如用户所属的群体、用户 所在地信息等等,让用户得到更符合用户需求的数据。当全量数据录入到数据对象模型后, 便将数据对象模型构造成了数据对象实体,数据对象实体中存储的是有效时间段内的全量数据。根据业务需求,可以从数据对象模型中获取通过数据检索直接得到的数据,也可以获 取运算后的数据。所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系 的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系。
所述缓存模块30,用于缓存所述数据对象实体;
当将数据对象模型构造成数据对象实体后,所述缓存模块30缓存所述数据对象 实体,并且被缓存的数据对象实体中存储的是有效时段内的全量数据。所述缓存模块30缓 存所述数据对象实体后,将数据对象实体共享给业务服务器1,供业务服务器I从已缓存的 数据对象实体中检索用户需要的数据。
请参阅图3,为本发明实施例提供的另一种缓存服务器的结构示意图,本实施例中 的所述缓存服务器2可以包括上述图2实施例中的查询模块10、构造模块20、缓存模块 30。进一步的,在本发明实施例中,所述缓存服务器还包括发送模块40、第一记录模块50、 第二记录模块60、总时间计算模块70以及更新模块80。其中
所述发送模块40,用于当接收到业务服务器I的数据查询请求时,发送已缓存的 数据对象实体中符合数据查询请求参数的数据到所述业务服务器I。
具体的,所述发送模块40用于当缓存服务器2接收到业务服务器I的数据查询请 求时,业务服务器I可以从缓存服务器2中所缓存的更新后的数据对象实体中,检索符合 数据查询请求参数的数据,并从缓存服务器2上获取检索到的符合数据查询请求参数的数 据。如果当缓存服务器2接收到业务服务器I的数据查询请求时,缓存服务器2仍处于构 造数据对象实体的阶段,此时,业务服务器I可以通过缓存服务器2中所缓存的之前的数据 对象实体检索到的符合数据查询请求参数的数据。当之前的数据对象实体和更新后的数据 对象实体都缓存于缓存服务器2时,业务服务器I可以根据业务需求,选择从之前的数据对 象实体中检索符合数据查询请求参数的数据,或从更新后的数据对象实体中检索符合数据 查询请求参数的数据。当业务服务器I从数据对象实体中检索完符合数据查询请求参数的 数据后,所述发送模块40可以将符合数据查询请求参数的数据发送到业务服务器1,以使 业务服务器I将接收到的数据返回用户。
所述第一记录模块50,用于将执行所述根据数据库查询语句对数据库进行数据查 询得到查询结果所消耗的时间记录为第一消耗时间;
具体的,在所述查询模块10运行时,可以同时运行所述第一记录模块50,即计算 执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果所消耗的时间,并将 所消耗的时间作为第一消耗时间,所述第一消耗时间为所述查询模块10运行时所消耗的 时间。
所述第二记录模块60,用于将构造得到数据对象实体所消耗的时间记录为第二消 耗时间;
具体的,在所述构造模块20运行时,可以同时运行所述第二记录模块60,即计算 构造得到数据对象实体所消耗的时间,并将所消耗的时间作为第二消耗时间,所述第二消 耗时间为运行所述构造模块20所消耗的时间。
所述总时间计算模块70,用于将所述第一消耗时间、所述第二消耗时间以及预设 的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询 开始距离下次执行对数据库进行数据查询的中间时间。
具体的,所述总时间计算模块70用于将所述第一记录模块50得到的第一消耗时 间加上所述第二记录模块60得到的第二消耗时间再加上预设的缓冲时间,最终求得所述 间隔时长。
在启动缓存服务器2之前,预设一个缓冲时间,所述缓冲时间可以为每次执行数 据库查询和构造数据对象实体留有缓冲时间,可以让缓存服务器2有规律的执行数据库查 询和构造数据对象实体,所述缓冲时间可以由用户设定为10分钟、30分钟或I小时等等。所 述缓冲时间是从构造完数据对象实体之后到下次开始执行数据库查询之前的一段时间,所 述间隔时长是从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查 询的中间时间。例如,当前的第一消耗时间为10分钟,当前的第二消耗时间为5分钟,预设 的缓冲时间为10分钟,那么当前的间隔时长就为这些时间的总和,即间隔时长为25分钟。
所述更新模块80,用于当达到所述间隔时长时,重新执行所述根据数据库查询语 句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新 所述数据对象实体。
具体的,若计算得到的当前的间隔时长为25分钟,当缓存服务器2检测到系统时 间达到了当前的间隔时长25分钟时,所述更新模块80将重新执行所述根据数据库查询语 句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,缓存服 务器2可以有规律的循环运行,不断地更新所述数据对象实体。
请参阅图4,图4是图3中的构造模块的结构示意图,所述构造模块20可以包括 逻辑运算单元201、录入单元202。
所述逻辑运算单元201,用于根据业务需求对所述查询结果进行业务逻辑运算;
具体的,所述逻辑运算单元201用于根据业务需求对所述查询结果进行业务逻辑 运算,所述逻辑运算单元201进行运行时可以根据用户的一些信息,如用户所属的群体、用 户所在地信息等等,让用户得到更符合用户需求的数据。
所述录入单元202,用于将业务逻辑运算的运算结果和/或查询结果的数据录入 到预先定义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体;
具体的,所述录入单元202可以将对数据库进行数据检索得到的数据直接录入到 所述数据对象模型中,也可以对检索得到的数据进行业务逻辑运算,得到运算后的数据,再 将运算后的数据录入到所述数据对象模型中,此时,便将所述数据对象模型构造成所述数 据对象实体。所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模 型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系。
本发明实施例通过缓存服务器预先缓存了根据数据查询结果和预置的数据对象 模型构造得到的数据对象实体,由于预先执行了相关的数据库查询语句,并将查询结果相 互融合构造成数据对象实体,因此在客户端发起请求时,可以直接从数据对象实体中检索 到符合条件的数据,提高了检索数据的效率,还由于缓存服务器可以循环运行,因此可以不 断更新数据对象实体,让用户可以得到更准确的数据。
请参阅图5,为本发明实施例提供的一种数据缓存的方法的流程示意图。如图5所 示,本发明实施例的所述方法可以包括以下步骤
S101,根据数据库查询语句对数据库进行数据查询,得到查询结果;
在执行数据检索之前,预先定义好SQL (Structured Query Language,结构化查询语言)查询语句,为了满足业务需求可能需要定义多条所述数据库查询语句,因此也就 需要多次访问数据库服务器。缓存服务作为缓存服务器中的服务在后台运行,用户可以启 动、暂停或停止它,当缓存服务器被启动时,所述缓存服务器将根据预先定义好的数据库查 询语句对数据库进行数据查询,并得到查询结果,所述查询结果包含有从数据库直接提取 而且未经业务逻辑运算处理的原始数据。
S102,根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所 述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对 象实体中包括了根据查询结果得到的数据及数据间的关联关系;
具体的,在构造数据对象实体之前,需要预先定义数据对象模型,所述数据对象模 型可以包含有查询数据时所需要的全部关键字,所述数据对象模型完全满足检索数据的需 要,当用户发起数据查询请求时,数据查询请求所包含的关键字可以与数据对象模型所包 含的关键字匹配,找到关键字所对应的数据。
对数据库进行数据检索得到的数据可以直接录入到所述数据对象模型中,也可以 对检索得到的数据进行业务逻辑运算,得到运算后的数据,再将运算后的数据录入到所述 数据对象模型中,进行业务逻辑运算时可以根据用户的一些信息进行运算,如用户所属的 群体、用户所在地信息等等,运算后的数据可以更符合用户的需求。当全量数据录入到数据 对象模型后,便将数据对象模型构造成了数据对象实体,数据对象实体中存储的是有效时 间段内的全量数据。根据业务需求,可以从数据对象模型中获取通过数据检索直接得到的 数据,也可以获取运算后的数据。所述数据对象模型是由数据库中的关联数据表转换成具 有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的 关联关系。
S103,缓存所述数据对象实体;
当将数据对象模型构造成数据对象实体后,缓存所述数据对象实体,并且被缓存 的数据对象实体中存储的是有效时段内的全量数据。缓存所述数据对象实体后,将数据 对象实体共享给业务服务器,供业务服务器从已缓存的数据对象实体中检索用户需要的数 据。
本发明实施例通过缓存服务器预先缓存了根据数据查询结果和预置的数据对象 模型构造得到的数据对象实体,方便用户在发起查询请求时,可以直接从数据对象实体中 检索到符合条件的数据,提高了检索数据的效率。
请参阅图6,为本发明实施例提供的另一种数据缓存的方法的流程示意图。如图6 所示,本发明实施例的所述方法包括以下步骤
S201,根据数据库查询语句对数据库进行数据查询,得到查询结果;
在执行数据检索之前,预先定义好SQL (Structured Query Language,结构化查 询语言)查询语句,为了满足业务需求可能需要定义多条所述数据库查询语句,因此也就 需要多次访问数据库服务器。缓存服务作为缓存服务器中的服务在后台运行,用户可以启 动、暂停或停止它,当缓存服务器被启动时,所述缓存服务器将根据预先定义好的数据库查 询语句对数据库进行数据查询,并得到查询结果,所述查询结果包含有从数据库直接提取 而且未经业务逻辑运算处理的原始数据。
S202,根据业务需求对所述查询结果进行业务逻辑运算;
进行业务逻辑运算时可以根据用户的一些信息进行运算,如用户所属的群体、用 户所在地信息等等,运算后的数据可以更符合用户的需求。
S203,将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述 数据对象模型中,将所述数据对象模型构造成所述数据对象实体;
对数据库进行数据检索得到的数据可以直接录入到所述数据对象模型中,也可以 对检索得到的数据进行业务逻辑运算,得到运算后的数据,再将运算后的数据录入到所述 数据对象模型中,此时,便将所述数据对象模型构造成所述数据对象实体。所述数据对象模 型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括 了根据查询结果得到的数据及数据间的关联关系。
S204,缓存所述数据对象实体;
当将数据对象模型构造成数据对象实体后,缓存所述数据对象实体,并且被缓存 的数据对象实体中存储的是有效时段内的全量数据。缓存所述数据对象实体后,将数据 对象实体共享给业务服务器,供业务服务器从已缓存的数据对象实体中检索用户需要的数 据。
当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据 查询请求参数的数据到所述业务服务器;
具体的,当缓存服务器接收到业务服务器的数据查询请求时,业务服务器可以从 缓存服务器中所缓存的更新后的数据对象实体中,检索符合数据查询请求参数的数据,并 从缓存服务器上获取检索到的符合数据查询请求参数的数据。如果当缓存服务器接收到 业务服务器的数据查询请求时,缓存服务器仍处于构造数据对象实体的阶段,此时,业务服 务器可以通过缓存服务器中所缓存的之前的数据对象实体检索到的符合数据查询请求参 数的数据。当之前的数据对象实体和更新后的数据对象实体都缓存于缓存服务器时,业务 服务器可以根据业务需求,选择从之前的数据对象实体中检索符合数据查询请求参数的数 据,或从更新后的数据对象实体中检索符合数据查询请求参数的数据。当业务服务器从数 据对象实体中检索完符合数据查询请求参数的数据后,缓存服务器可以将符合数据查询请 求参数的数据发送到业务服务器,以使业务服务器将接收到的数据返回用户。
进一步的,在执行完上述的流程之后,可以还包括一个确定间隔时长的流程以确 定对缓存的所述数据对象实体进行更新的间隔时长。具体请参见图7,是本发明实施例的确 定间隔时长的方法的流程示意图,具体包括
S301,将执行根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的 时间记录为第一消耗时间;
具体的,所述301中记录所述第一消耗时间是上述实施例中执行S201所消耗的时 间,即计算执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果所消耗的 时间,并将所消耗的时间作为第一消耗时间。
S302,将构造得到数据对象实体所消耗的时间记录为第二消耗时间;
具体的,所述302中记录所述第二消耗时间是上述实施例中执行S202和S203 — 共所消耗的时间,,即计算并构造得到数据对象实体所消耗的时间,并将所消耗的时间作为 第二消耗时间。
S303,将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间;具体的,在启动缓存服务器之前,预设一个缓冲时间,所述缓冲时间可以为每次执行数据库查询和构造数据对象实体留有缓冲时间,可以让缓存服务器有规律的执行数据库查询和构造数据对象实体,所述缓冲时间可以由用户设定为10分钟、30分钟或I小时等等。所述缓冲时间是从构造完数据对象实体之后到下次开始执行数据库查询之前的一段时间。例如,当前的第一消耗时间为10分钟,当前的第二消耗时间为5分钟,预设的缓冲时间为10分钟,那么当前的间隔时长就为这些时间的总和,即间隔时长为25分钟。当确定出所述间隔时长后,可以通过设置计时器等方式进行计时,从完成缓存数据对象实体开始计时,当达到间隔时长后,执行对所述缓存数据对象实体的更新操作,即当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。具体更新过程可以为上述的S201-S204的步骤。具体的,若计算得到当前的间隔时长为25分钟,当缓存服务器检测到系统时间达到了当前的间隔时长25分钟时,缓存服务器将重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,缓存服务器可以有规律的循环运行,不断地更新所述数据对象实体。本发明实施例通过缓存服务器预先缓存了根据数据查询结果和预置的数据对象模型构造得到的数据对象实体,由于预先执行了相关的数据库查询语句,并将查询结果相互融合构造成数据对象实体,因此在客户端发起请求时,可以直接从数据对象实体中检索到符合条件的数据,提高了检索数据的效率,还由于缓存服务器可以循环运行,因此可以不断更新数据对象实体,让用户可以得到更准确的数据。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.一种数据缓存的方法,其特征在于,包括 根据数据库查询语句对数据库进行数据查询,得到查询结果; 根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系; 缓存所述数据对象实体。
2.如权利要求1所述的方法,其特征在于,所述根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,包括 根据业务需求对所述查询结果进行业务逻辑运算; 将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体。
3.如权利要求2所述的方法,其特征在于,还包括 将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的时间记录为第一消耗时间; 将构造得到数据对象实体所消耗的时间记录为第二消耗时间; 将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。
4.如权利要求3所述的方法,其特征在于,所述缓存所述数据对象实体的步骤之后,还包括 当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。
5.如权利要求4所述的方法,其特征在于,还包括 当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据查询请求参数的数据到所述业务服务器。
6.一种缓存服务器,其特征在于,包括 查询模块,用于根据数据库查询语句对数据库进行数据查询,得到查询结果; 构造模块,用于根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系; 缓存模块,用于缓存所述数据对象实体。
7.如权利要求6所述的缓存服务器,其特征在于,所述构造模块包括 逻辑运算单元,用于根据业务需求对所述查询结果进行业务逻辑运算; 录入单元,用于将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体。
8.如权利要求7所述的缓存服务器,其特征在于,还包括 第一记录模块,用于将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的时间记录为第一消耗时间; 第二记录模块,用于将构造得到数据对象实体所消耗的时间记录为第二消耗时间;总时间计算模块,用于将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。
9.如权利要求8所述的缓存服务器,其特征在于,还包括 更新模块,用于当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。
10.如权利要求9所述的缓存服务器,其特征在于,还包括 发送模块,用于当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据查询请求参数的数据到所述业务服务器。
11.一种数据缓存的系统,其特征在于,包括缓存服务器、业务服务器、数据库服务器; 所述缓存服务器,用于根据数据库查询语句对数据库进行数据查询,得到查询结果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体; 所述业务服务器,用于接收用户请求,根据所述用户请求发送数据查询请求到所述缓存服务器,并通过调用所述缓存服务器接口从已缓存的数据对象实体中检索符合数据查询请求参数的数据,接收检索到的数据并将该数据返回给用户; 所述数据库服务器,用于存储数据,并让所述缓存服务器进行数据查询。
12.如权利要求11所述的系统,其特征在于,还包括 用户终端,用于发送用户请求到所述业务服务器,以使所述业务服务器根据所述用户请求发送数据查询请求到所述缓存服务器,以获取用户所需的业务数据。
全文摘要
本发明实施例公开了一种数据缓存的方法、缓存服务器及系统,其中方法包括如下步骤根据数据库查询语句对数据库进行数据查询,得到查询结果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体。采用本发明,可以预先构造并缓存数据对象实体,提高了检索数据的效率。
文档编号G06F17/30GK103020115SQ201210453698
公开日2013年4月3日 申请日期2012年11月13日 优先权日2012年11月13日
发明者邵珠玉 申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1