CN103020115A - 一种数据缓存的方法、缓存服务器及*** - Google Patents
一种数据缓存的方法、缓存服务器及*** Download PDFInfo
- Publication number
- CN103020115A CN103020115A CN2012104536983A CN201210453698A CN103020115A CN 103020115 A CN103020115 A CN 103020115A CN 2012104536983 A CN2012104536983 A CN 2012104536983A CN 201210453698 A CN201210453698 A CN 201210453698A CN 103020115 A CN103020115 A CN 103020115A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- data object
- database
- object entity
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据缓存的方法、缓存服务器及***,其中方法包括如下步骤:根据数据库查询语句对数据库进行数据查询,得到查询结果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体。采用本发明,可以预先构造并缓存数据对象实体,提高了检索数据的效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据缓存的方法、缓存服务器及***。
背景技术
在程序设计中,数据库设计是一个比较重要的环节,数据库用于存储和检索数据,为了满足业务需求和实现复杂的业务逻辑,在数据库中需要设计许多数据表,并且还需要在数据表之间建立主键与外键的关联关系以保持数据的一致性和唯一性,这些关联关系将数据库中各个数据表关联在一起。
数据表间相互关联对于存储数据的速度没什么太大的影响,但是会严重影响检索数据的速度,现有技术中解决检索数据速度较慢的问题,一般采取优化数据库的方式来进行,比如:“建立索引”、“使用存储过程”、“优化SQL(structuredquery 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,供业务服务器1从已缓存的数据对象实体中检索用户需要的数据。
请参阅图3,为本发明实施例提供的另一种缓存服务器的结构示意图,本实施例中的所述缓存服务器2可以包括上述图2实施例中的:查询模块10、构造模块20、缓存模块30。进一步的,在本发明实施例中,所述缓存服务器还包括发送模块40、第一记录模块50、第二记录模块60、总时间计算模块70以及更新模块80。其中:
所述发送模块40,用于当接收到业务服务器1的数据查询请求时,发送已缓存的数据对象实体中符合数据查询请求参数的数据到所述业务服务器1。
具体的,所述发送模块40用于当缓存服务器2接收到业务服务器1的数据查询请求时,业务服务器1可以从缓存服务器2中所缓存的更新后的数据对象实体中,检索符合数据查询请求参数的数据,并从缓存服务器2上获取检索到的符合数据查询请求参数的数据。如果当缓存服务器2接收到业务服务器1的数据查询请求时,缓存服务器2仍处于构造数据对象实体的阶段,此时,业务服务器1可以通过缓存服务器2中所缓存的之前的数据对象实体检索到的符合数据查询请求参数的数据。当之前的数据对象实体和更新后的数据对象实体都缓存于缓存服务器2时,业务服务器1可以根据业务需求,选择从之前的数据对象实体中检索符合数据查询请求参数的数据,或从更新后的数据对象实体中检索符合数据查询请求参数的数据。当业务服务器1从数据对象实体中检索完符合数据查询请求参数的数据后,所述发送模块40可以将符合数据查询请求参数的数据发送到业务服务器1,以使业务服务器1将接收到的数据返回用户。
所述第一记录模块50,用于将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的时间记录为第一消耗时间;
具体的,在所述查询模块10运行时,可以同时运行所述第一记录模块50,即计算执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果所消耗的时间,并将所消耗的时间作为第一消耗时间,所述第一消耗时间为所述查询模块10运行时所消耗的时间。
所述第二记录模块60,用于将构造得到数据对象实体所消耗的时间记录为第二消耗时间;
具体的,在所述构造模块20运行时,可以同时运行所述第二记录模块60,即计算构造得到数据对象实体所消耗的时间,并将所消耗的时间作为第二消耗时间,所述第二消耗时间为运行所述构造模块20所消耗的时间。
所述总时间计算模块70,用于将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。
具体的,所述总时间计算模块70用于将所述第一记录模块50得到的第一消耗时间加上所述第二记录模块60得到的第二消耗时间再加上预设的缓冲时间,最终求得所述间隔时长。
在启动缓存服务器2之前,预设一个缓冲时间,所述缓冲时间可以为每次执行数据库查询和构造数据对象实体留有缓冲时间,可以让缓存服务器2有规律的执行数据库查询和构造数据对象实体,所述缓冲时间可以由用户设定为10分钟、30分钟或1小时等等。所述缓冲时间是从构造完数据对象实体之后到下次开始执行数据库查询之前的一段时间,所述间隔时长是从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。例如,当前的第一消耗时间为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分钟或1小时等等。所述缓冲时间是从构造完数据对象实体之后到下次开始执行数据库查询之前的一段时间。例如,当前的第一消耗时间为10分钟,当前的第二消耗时间为5分钟,预设的缓冲时间为10分钟,那么当前的间隔时长就为这些时间的总和,即间隔时长为25分钟。
当确定出所述间隔时长后,可以通过设置计时器等方式进行计时,从完成缓存数据对象实体开始计时,当达到间隔时长后,执行对所述缓存数据对象实体的更新操作,即当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。具体更新过程可以为上述的S201-S204的步骤。
具体的,若计算得到当前的间隔时长为25分钟,当缓存服务器检测到***时间达到了当前的间隔时长25分钟时,缓存服务器将重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,缓存服务器可以有规律的循环运行,不断地更新所述数据对象实体。
本发明实施例通过缓存服务器预先缓存了根据数据查询结果和预置的数据对象模型构造得到的数据对象实体,由于预先执行了相关的数据库查询语句,并将查询结果相互融合构造成数据对象实体,因此在客户端发起请求时,可以直接从数据对象实体中检索到符合条件的数据,提高了检索数据的效率,还由于缓存服务器可以循环运行,因此可以不断更新数据对象实体,让用户可以得到更准确的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种数据缓存的方法,其特征在于,包括:
根据数据库查询语句对数据库进行数据查询,得到查询结果;
根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;
缓存所述数据对象实体。
2.如权利要求1所述的方法,其特征在于,所述根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,包括:
根据业务需求对所述查询结果进行业务逻辑运算;
将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体。
3.如权利要求2所述的方法,其特征在于,还包括:
将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的时间记录为第一消耗时间;
将构造得到数据对象实体所消耗的时间记录为第二消耗时间;
将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。
4.如权利要求3所述的方法,其特征在于,所述缓存所述数据对象实体的步骤之后,还包括:
当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。
5.如权利要求4所述的方法,其特征在于,还包括:
当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据查询请求参数的数据到所述业务服务器。
6.一种缓存服务器,其特征在于,包括:
查询模块,用于根据数据库查询语句对数据库进行数据查询,得到查询结果;
构造模块,用于根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;
缓存模块,用于缓存所述数据对象实体。
7.如权利要求6所述的缓存服务器,其特征在于,所述构造模块包括:
逻辑运算单元,用于根据业务需求对所述查询结果进行业务逻辑运算;
录入单元,用于将业务逻辑运算的运算结果和/或查询结果的数据录入到预先定义的所述数据对象模型中,将所述数据对象模型构造成所述数据对象实体。
8.如权利要求7所述的缓存服务器,其特征在于,还包括:
第一记录模块,用于将执行所述根据数据库查询语句对数据库进行数据查询得到查询结果所消耗的时间记录为第一消耗时间;
第二记录模块,用于将构造得到数据对象实体所消耗的时间记录为第二消耗时间;
总时间计算模块,用于将所述第一消耗时间、所述第二消耗时间以及预设的缓冲时间之和作为间隔时长,所述间隔时长用于表示从当前执行对数据库进行数据查询开始距离下次执行对数据库进行数据查询的中间时间。
9.如权利要求8所述的缓存服务器,其特征在于,还包括:
更新模块,用于当达到所述间隔时长时,重新执行所述根据数据库查询语句对数据库进行数据查询,得到查询结果以及构造、缓存所述数据对象实体的操作,以更新所述数据对象实体。
10.如权利要求9所述的缓存服务器,其特征在于,还包括:
发送模块,用于当接收到业务服务器的数据查询请求时,发送已缓存的数据对象实体中符合数据查询请求参数的数据到所述业务服务器。
11.一种数据缓存的***,其特征在于,包括:缓存服务器、业务服务器、数据库服务器;
所述缓存服务器,用于根据数据库查询语句对数据库进行数据查询,得到查询结果;根据所述查询结果和预先定义的数据对象模型,构造得到数据对象实体,所述数据对象模型是由数据库中的关联数据表转换成具有层级嵌套关系的模型,所述数据对象实体中包括了根据查询结果得到的数据及数据间的关联关系;缓存所述数据对象实体;
所述业务服务器,用于接收用户请求,根据所述用户请求发送数据查询请求到所述缓存服务器,并通过调用所述缓存服务器接口从已缓存的数据对象实体中检索符合数据查询请求参数的数据,接收检索到的数据并将该数据返回给用户;
所述数据库服务器,用于存储数据,并让所述缓存服务器进行数据查询。
12.如权利要求11所述的***,其特征在于,还包括:
用户终端,用于发送用户请求到所述业务服务器,以使所述业务服务器根据所述用户请求发送数据查询请求到所述缓存服务器,以获取用户所需的业务数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104536983A CN103020115A (zh) | 2012-11-13 | 2012-11-13 | 一种数据缓存的方法、缓存服务器及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104536983A CN103020115A (zh) | 2012-11-13 | 2012-11-13 | 一种数据缓存的方法、缓存服务器及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103020115A true CN103020115A (zh) | 2013-04-03 |
Family
ID=47968719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012104536983A Pending CN103020115A (zh) | 2012-11-13 | 2012-11-13 | 一种数据缓存的方法、缓存服务器及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103020115A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281673A (zh) * | 2014-09-22 | 2015-01-14 | 珠海许继芝电网自动化有限公司 | 一种数据库的缓存构建***及对应的构建方法 |
CN104298675A (zh) * | 2013-07-18 | 2015-01-21 | 国际商业机器公司 | 用于缓存管理的方法和装置 |
CN104484400A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 数据查询处理方法及装置 |
CN105338026A (zh) * | 2014-07-24 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 数据资源的获取方法、装置和*** |
CN105450705A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 业务数据处理方法及设备 |
CN106021615A (zh) * | 2016-07-01 | 2016-10-12 | 广东小天才科技有限公司 | 题目搜索优化方法及装置 |
CN106202080A (zh) * | 2015-04-30 | 2016-12-07 | ***通信集团公司 | 一种网页渲染方法、服务器及终端设备 |
CN106570108A (zh) * | 2016-11-01 | 2017-04-19 | 中国科学院计算机网络信息中心 | 一种云存储环境下海量数据自适应读取优化方法及*** |
CN107341238A (zh) * | 2017-07-04 | 2017-11-10 | 北京京东尚科信息技术有限公司 | 数据处理方法及*** |
CN107517262A (zh) * | 2017-08-31 | 2017-12-26 | 江西博瑞彤芸科技有限公司 | 业务数据存储方法 |
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
CN110489427A (zh) * | 2019-08-26 | 2019-11-22 | 杭州城市大数据运营有限公司 | 一种数据查询方法、装置、计算机设备和存储介质 |
CN110597849A (zh) * | 2018-05-25 | 2019-12-20 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN111125156A (zh) * | 2019-12-17 | 2020-05-08 | 网银在线(北京)科技有限公司 | 数据的查询方法、装置和电子设备 |
US11748506B2 (en) | 2017-02-27 | 2023-09-05 | Microsoft Technology Licensing, Llc | Access controlled graph query spanning |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852107A (zh) * | 2005-11-09 | 2006-10-25 | 华为技术有限公司 | 关系信息的公开、获取方法及*** |
CN101008954A (zh) * | 2007-01-30 | 2007-08-01 | 金蝶软件(中国)有限公司 | 联机分析处理***中多维表达式数据缓存的方法和装置 |
CN101067814A (zh) * | 2007-05-10 | 2007-11-07 | 浪潮集团山东通用软件有限公司 | 数据访问层Xml格式数据与关系数据间的映射转换方法 |
WO2009118241A1 (en) * | 2008-03-27 | 2009-10-01 | International Business Machines Corporation | Database query processing with dynamically activated buffers |
US20110289307A1 (en) * | 2010-05-19 | 2011-11-24 | Sap Ag | System and method for direct switching of data content |
CN102402522A (zh) * | 2010-09-09 | 2012-04-04 | ***通信集团上海有限公司 | 数据查询***及方法 |
-
2012
- 2012-11-13 CN CN2012104536983A patent/CN103020115A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852107A (zh) * | 2005-11-09 | 2006-10-25 | 华为技术有限公司 | 关系信息的公开、获取方法及*** |
CN101008954A (zh) * | 2007-01-30 | 2007-08-01 | 金蝶软件(中国)有限公司 | 联机分析处理***中多维表达式数据缓存的方法和装置 |
CN101067814A (zh) * | 2007-05-10 | 2007-11-07 | 浪潮集团山东通用软件有限公司 | 数据访问层Xml格式数据与关系数据间的映射转换方法 |
WO2009118241A1 (en) * | 2008-03-27 | 2009-10-01 | International Business Machines Corporation | Database query processing with dynamically activated buffers |
US20110289307A1 (en) * | 2010-05-19 | 2011-11-24 | Sap Ag | System and method for direct switching of data content |
CN102402522A (zh) * | 2010-09-09 | 2012-04-04 | ***通信集团上海有限公司 | 数据查询***及方法 |
Non-Patent Citations (2)
Title |
---|
吴婷婷等: "移动查询缓存处理的研究", 《计算机研究与发展》, vol. 41, no. 1, 16 January 2004 (2004-01-16), pages 187 - 193 * |
蔡建宇等: "关系数据库语义缓存的研究进展", 《计算机工程与科学》, vol. 27, no. 10, 30 October 2005 (2005-10-30) * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298675A (zh) * | 2013-07-18 | 2015-01-21 | 国际商业机器公司 | 用于缓存管理的方法和装置 |
CN104298675B (zh) * | 2013-07-18 | 2017-06-16 | 国际商业机器公司 | 用于缓存管理的方法和装置 |
CN105338026A (zh) * | 2014-07-24 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 数据资源的获取方法、装置和*** |
CN105338026B (zh) * | 2014-07-24 | 2018-10-09 | 阿里巴巴集团控股有限公司 | 数据资源的获取方法、装置和*** |
CN105450705A (zh) * | 2014-08-29 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 业务数据处理方法及设备 |
CN109639750A (zh) * | 2014-08-29 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 业务数据处理方法及设备 |
CN105450705B (zh) * | 2014-08-29 | 2018-11-27 | 阿里巴巴集团控股有限公司 | 业务数据处理方法及设备 |
CN104281673A (zh) * | 2014-09-22 | 2015-01-14 | 珠海许继芝电网自动化有限公司 | 一种数据库的缓存构建***及对应的构建方法 |
CN104281673B (zh) * | 2014-09-22 | 2018-10-02 | 珠海许继芝电网自动化有限公司 | 一种数据库的缓存构建***及对应的构建方法 |
CN104484400B (zh) * | 2014-12-12 | 2018-02-23 | 北京国双科技有限公司 | 数据查询处理方法及装置 |
CN104484400A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 数据查询处理方法及装置 |
CN106202080A (zh) * | 2015-04-30 | 2016-12-07 | ***通信集团公司 | 一种网页渲染方法、服务器及终端设备 |
CN106021615A (zh) * | 2016-07-01 | 2016-10-12 | 广东小天才科技有限公司 | 题目搜索优化方法及装置 |
CN106570108A (zh) * | 2016-11-01 | 2017-04-19 | 中国科学院计算机网络信息中心 | 一种云存储环境下海量数据自适应读取优化方法及*** |
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
CN110168533B (zh) * | 2016-12-15 | 2023-08-08 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
US11748506B2 (en) | 2017-02-27 | 2023-09-05 | Microsoft Technology Licensing, Llc | Access controlled graph query spanning |
CN107341238A (zh) * | 2017-07-04 | 2017-11-10 | 北京京东尚科信息技术有限公司 | 数据处理方法及*** |
CN107341238B (zh) * | 2017-07-04 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 数据处理方法及*** |
CN107517262A (zh) * | 2017-08-31 | 2017-12-26 | 江西博瑞彤芸科技有限公司 | 业务数据存储方法 |
CN110597849A (zh) * | 2018-05-25 | 2019-12-20 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN110489427A (zh) * | 2019-08-26 | 2019-11-22 | 杭州城市大数据运营有限公司 | 一种数据查询方法、装置、计算机设备和存储介质 |
CN111125156A (zh) * | 2019-12-17 | 2020-05-08 | 网银在线(北京)科技有限公司 | 数据的查询方法、装置和电子设备 |
CN111125156B (zh) * | 2019-12-17 | 2023-09-26 | 网银在线(北京)科技有限公司 | 数据的查询方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103020115A (zh) | 一种数据缓存的方法、缓存服务器及*** | |
US10762108B2 (en) | Query dispatching system and method | |
CN107491345B (zh) | 一种写入图片数据方法和分布式NewSQL数据库*** | |
US9547691B1 (en) | Access path optimization through system statistics | |
JP5819376B2 (ja) | 列ベースのデータベースに対する列スマートな機構 | |
US9927992B2 (en) | Segmented database migration | |
KR102029568B1 (ko) | 컴퓨팅 디바이스의 사용자에게 권고들을 선행적으로 제공하기 위한 시스템들 및 방법들 | |
US20220012240A1 (en) | Techniques for maintaining statistics in a database system | |
CN104239357A (zh) | 用于数据库事务的并发请求处理 | |
CN103425708A (zh) | 一种优化的web分页查询方法及装置 | |
CN102780603B (zh) | 网站流量控制方法及装置 | |
CN106302829A (zh) | 一种信息访问方法、装置及服务器 | |
CN105677751B (zh) | 关系型数据库的调度方法及*** | |
CN103473326A (zh) | 一种提供搜索建议的方法和装置 | |
CN107943846B (zh) | 数据处理方法、装置及电子设备 | |
JP2018526746A (ja) | データベーストランザクションを最適化するための方法および装置 | |
CN111737168A (zh) | 一种缓存***、缓存处理方法、装置、设备及介质 | |
CN116108057B (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
CN109240611A (zh) | 小文件冷热数据分层方法、小文件数据访问方法及其装置 | |
CN103377292B (zh) | 数据库结果集缓存方法及设备 | |
CN102033769A (zh) | 面向虚拟化软件流式加载的预取方法和*** | |
CN106549983B (zh) | 一种数据库的访问方法及终端、服务器 | |
RU2679207C1 (ru) | Управление системой баз данных | |
CN102004800A (zh) | Pdm***中数据的查询方法及装置 | |
CN102682087B (zh) | 一种缓存结果集的管理方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130403 |