CN103886038B - 数据缓存方法及装置 - Google Patents
数据缓存方法及装置 Download PDFInfo
- Publication number
- CN103886038B CN103886038B CN201410086281.7A CN201410086281A CN103886038B CN 103886038 B CN103886038 B CN 103886038B CN 201410086281 A CN201410086281 A CN 201410086281A CN 103886038 B CN103886038 B CN 103886038B
- Authority
- CN
- China
- Prior art keywords
- data
- client request
- buffer storage
- request
- rule
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Abstract
本发明提供了一种数据缓存方法及装置。其中,数据缓存方法包括:分析服务器数据库接收的客户端请求,确定客户端请求的接收规则;根据接收规则预测并生成一组数据,其中,生成的数据为:以接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的数据;判断服务器的数据缓存中是否存储有全部生成的数据,若否,则获取未存储在数据缓存中的部分数据,并添加到数据缓存中。采用本发明提供的数据缓存方法能够根据接收规则识别出客户端请求查阅的数据,及时清除客户端不需要的数据,节省缓存空间,更加合理有效地对数据进行缓存,解决现有技术中无法将数据全部保存至内存的问题。
Description
技术领域
本发明涉及数据缓存技术领域,特别是涉及一种数据缓存方法及装置。
背景技术
现有技术中,为了提高应用程序的性能,在客户端或服务器增加数据缓存层,如缓存系统可加在应用程序端或数据库服务器上。应用程序从数据库服务器中预先获取数据并保存在非持久化存储器中,当客户端发送请求时,应用程序从数据缓存中检索数据并返回至客户端。随着信息网络技术的发展,服务器的内存持续增长,但磁盘的存储能力却以更快的速度增长。服务器的内存与磁盘的存储能力增长速度不一致导致内存容量与磁盘容量的比率下降,因此需要一个更加有效的方法进行数据缓存。
现有技术中通常采用两种数据缓存技术。一种采用预先填充模式(还可以称为批处理模式),在客户端开始请求数据之前批量填充数据缓存。另一种采用按需填充模式(还可以称为实时填充模式),在每次请求数据时填充数据缓存。采用这两种数据缓存技术能够提高性能,但是存在如下缺陷:第一,当应用程序需要检索大量数据时,数据缓存不能将所有的数据保存在内存中;第二,如果数据缓存采用实时填充模式,第一条请求消耗大量响应时间;第三,如果数据缓存采用预先填充模式,缓存的数据量太大,导致内存中的缓存容量不足以存储大批量的缓存数据;第四,如果数据缓存采用预先填充数据模式,当缓存容量已满,必须删除部分数据,通常采用一个简单的FIFO(先进先出)策略或LRU(最近最少使用)策略选择缓存中哪些数据将清除。但是,上述策略无法保证数据缓存中保存的是最重要的数据,因此,无法保证当客户端请求到达时必要的数据已经存在于数据缓存中。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据缓存方法和相应的装置。
依据本发明的一个方面,提供了一种数据缓存方法,包括:分析服务器数据库接收的客户端请求,确定客户端请求的接收规则;根据所述接收规则预测并生成一组数据,其中,所述生成的数据为:以所述接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的数据;判断所述服务器的数据缓存中是否存储有全部所述生成的数据,若否,则获取未存储在所述数据缓存中的部分数据,并添加到所述数据缓存中。
可选地,所述客户端请求包括:所述服务器数据库中存储的历史客户端请求;和/或对所述服务器数据库中的客户端请求进行分析时,所述服务器实时接收客户端请求,其中,实时指与对服务器数据库中的客户端请求进行分析时同步进行。
可选地,所述历史客户端请求从多维表达式MDX查询仓库中获取,其中,所述MDX查询仓库存储有所述服务器的所有历史记录。
可选地,客户端请求的格式包括下列至少之一:结构化查询语言SQL格式;可扩展标识语言XML格式;MDX格式。
可选地,客户端请求的属性包括下列至少之一:客户端请求的名称;客户端请求的请求日期;客户端请求的解析元素;客户端请求的格式。
可选地,所述确定客户端请求的接收规则,包括:使用数据挖掘算法确定客户端请求的接收规则。
可选地,所述数据挖掘算法包括下列至少之一:聚类算法、关联算法、序列算法、分类算法以及回归算法。
可选地,所述数据缓存方法还包括:分析所述数据缓存中存储的数据;以数据分析操作时间为始,确定未来第二指定时间段内不会被请求查阅的过期数据;清除所述过期数据。
可选地,所述数据缓存采用如下任意一种存储器实现:持久化存储器;非持久化存储器;持久化存储器与非持久化存储器结合的结合存储器。
依据本发明的另一个方面,还提供了一种数据缓存装置,包括:规则确定模块,配置为分析服务器数据库接收的客户端请求,确定客户端请求的接收规则;数据生成模块,配置为根据所述接收规则预测并生成一组数据,其中,所述生成的数据为:以所述接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的数据;数据补充模块,配置为判断所述服务器的数据缓存中是否存储有全部所述生成的数据,若否,则获取未存储在所述数据缓存中的部分数据,并添加到所述数据缓存中。
依据本发明实施例能够分析服务器数据库接收的客户端请求,确定客户端请求的接收规则。确定接收规则之后,依据本发明实施例能够根据接收规则,预测并生成以接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的一组数据。并且,当判断服务器的数据缓存中未能存储的生成的全部数据时,获取未存储的部分数据并添加到数据缓存中。当应用程序需要检索大量数据时,采用本发明实施例提供的数据缓存方法能够确定客户端请求的接收规则,根据接收规则识别出客户端请求查阅的数据,及时清除客户端不需要的数据,节省缓存空间。因此,依据本发明实施例能够更加合理有效地对数据进行缓存,解决现有技术中无法将数据全部保存至内存的问题。
另外,本发明实施例提供的数据缓存方法能够在采用批处理模式进行数据缓存时,预测未来第一指定时间段内客户端请求查阅的数据,解决了现有技术中无法使用缓存动态预估客户端请求的问题,减少响应时间的消耗,降低客户端请求的时间成本。由于本发明实施例提供的数据缓存方法能够预测未来第一指定时间段内客户端请求查阅的数据,并及时清除过期数据,依据本发明实施例提供的数据缓存方法能够避免由于缓存的数据量太大导致内存中的缓存容量不足以存储大批量的缓存数据的问题。而本发明实施例提供的数据缓存方法中根据确定的接收规则预测并生成一组数据能够保证数据缓存中保存最被需要的数据,进而能够保证当客户端请求到达时必要的数据已经存在于数据缓存中。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的数据缓存方法的处理流程图;
图2示出了根据本发明一个优选实施例的多层体系架构的结构示意图;
图3示出了根据本发明一个优选实施例的数据源为关系数据库的数据缓存方法的处理流程图;
图4示出了根据本发明一个优选实施例的数据源为MDX查询仓库的数据缓存方法的处理流程图;
图5示出了根据本发明一个实施例的采用批处理模式的数据缓存方法的处理流程图;
图6示出了根据本发明一个实施例的采用实施模式的数据缓存方法的处理流程图;以及
图7示出了根据本发明一个实施例的数据缓存装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
相关技术中提及,现有技术中的数据缓存技术存在如下缺陷:当应用程序需要检索大量数据时,数据缓存不能将所有的数据保存在内存中;可能消耗大量相应时间;容易出现缓存数据量大,导致内存中缓存容量不足等问题。
为解决上述技术问题,本发明实施例提供了一种数据缓存方法。图1示出了根据本发明一个实施例的数据缓存方法的处理流程图。如图1所示,该流程起始于步骤S102,分析服务器数据库接收的客户端请求,确定客户端请求的接收规则。确定接收规则之后,执行如图1所示的步骤S104,根据接收规则预测并生成一组数据。本发明实施例中,生成的数据是指,以接收规则的确定时间为始,未来第一制定时间段内客户端请求查阅的数据。当根据接收规则生成数据之后,本发明实施例继续执行步骤S106,判断服务器的数据缓存中是否存储有全部生成的数据。若是,则成功缓存数据。若否,则获取未存储在数据缓存中的部分数据,并添加到数据缓存中,完成数据缓存。
依据本发明实施例能够分析服务器数据库接收的客户端请求,确定客户端请求的接收规则。确定接收规则之后,依据本发明实施例能够根据接收规则,预测并生成以接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的一组数据。并且,当判断服务器的数据缓存中未能存储的生成的全部数据时,获取未存储的部分数据并添加到数据缓存中。当应用程序需要检索大量数据时,采用本发明实施例提供的数据缓存方法能够确定客户端请求的接收规则,根据接收规则识别出客户端请求查阅的数据,及时清除客户端不需要的数据,节省缓存空间,更加合理有效地对数据进行缓存。因此,依据本发明实施例能够解决现有技术中无法将数据全部保存至内存的问题。
另外,本发明实施例提供的数据缓存方法能够在采用批处理模式进行数据缓存时,预测未来第一指定时间段内客户端请求查阅的数据,解决了现有技术中无法使用缓存动态预估客户端请求的问题,减少响应时间的消耗,降低客户端请求的时间成本。由于本发明实施例提供的数据缓存方法能够预测未来第一指定时间段内客户端请求查阅的数据,并及时清除过期数据,依据本发明实施例提供的数据缓存方法能够避免由于缓存的数据量太大导致内存中的缓存容量不足以存储大批量的缓存数据的问题。而本发明实施例提供的数据缓存方法中根据确定的接收规则预测并生成一组数据能够保证数据缓存中保存最被需要的数据,进而能够保证当客户端请求到达时必要的数据已经存在于数据缓存中。
上文提及,本发明实施例通过分析服务器数据库接收到的客户端请求确定接收规则。其中,客户端请求可以是服务器数据库中存储的历史客户端请求,可以是对服务器数据库中的客户端请求进行分析时,服务器实时接收的客户端请求,还可以是历史客户端请求与实时客户端请求共存的客户端请求,本发明实施例对此并不加以限定。当客户端请求为历史客户端请求时,可以是在关系数据库中获取到的历史客户端请求,还可以是在多维表达式(multi-dimensional expressions,以下简称MDX)查询仓库中获取到的历史客户端请求。优选地,本发明实施例中,采用MDX查询仓库对服务器的所有历史记录进行存储,即能够在MDX查询仓库中获取到历史客户端请求,并进行分析。
本发明实施例通过分析接收到的客户端请求确定接收规则,其中,依据客户端的不同,客户端请求的格式可以是多种多样的。例如,客户端的格式可以是结构化查询语言((Structured Query Language,以下简称SQL)格式,可以是可扩展标识语言(eXtensibleMarkup Language,以下简称XML)格式,还可以是MDX格式等等,本发明实施例对此并不加以限定。另外,客户端请求的任意相关信息均能够作为客户端请求的属性。优选地,本发明实施例中,客户端请求的属性包括客户端请求的名称、客户端请求的请求日期、客户端请求的解析元素以及客户端请求的格式中的一个或者多个,本发明实施例对此并不加以限定。
图1中的步骤S102中提及通过分析接收的客户端请求,能够确定客户端请求的接收规则。上文详细介绍了客户端请求,下面介绍根据客户端请求的接收规则。本发明实施例中,能够使用多种算法对客户端请求的接收规则进行确定。由于数据挖掘算法使用广泛并且覆盖算法全面,能够针对多种不同格式的客户端请求启用不同算法。例如,数据挖掘算法包括聚类算法、关联算法、序列算法、分类算法以及回归算法等。因此,优选地,本发明实施例使用数据挖掘算法确定接收规则。
上文介绍了本发明实施例提供的数据缓存方法,为了减少缓存压力,有效节省缓存空间,优选地,本发明实施例还可以对数据缓存中存储的数据进行分析。之后,以数据分析操作时间为始,确定未来第二指定时间段内不会被请求查阅的过期数据,并对确定的过期数据进行清除。对确定的未来第二指定时间段内不会被请求查阅的过期数据进行清除的操作能够保证在不影响用户对数据的查询以及使用的前提下,对缓存空间进行合理利用,保证在对数据进行缓存的过程中能够提供更大的空间对数据进行缓存,更加合理避免当需要缓存数据的数据量太大导致缓存容量不足的问题。
另外,本发明实施例中对数据进行缓存能够使用多种不同的存储器进行实现。例如,数据缓存可以采用持久化存储器,可以采用非持久化存储器,还可以采用持久化存储器与非持久化存储器结合的存储器等多种不同的存储器,本发明实施例对此并不加以限定。
实施例一
为将本发明实施例提供的数据缓存方法阐述得更加清楚明白,现以一个优选实施例进行说明。本优选实施例中,通过一个多层体系架构对数据缓存方法进行实现。如图2示出了根据本发明一个优选实施例的多层体系架构的结构示意图。一个多层体系架构包括数据库服务器、应用服务器以及客户端。另外,在多层体系架构中还可以增加业务逻辑曾以实现业务功能,或者通过应用服务器实现所有的功能。在如图2所示的多层体系架构中,包括客户端202、应用服务器204、内存联机分析处理(On line analytical processing,以下简称OLAP)服务器206(即数据库服务器)、内存OLAP服务器206中的数据缓存208以及作为数据源的数据库服务器210和MDX查询仓库212。
需要说明的是,本发明实施例提供的数据缓存方法能够使用于任意应用程序(如关系数据库服务器、web应用程序等),为简化说明,本文中的优选实施例均以OLAP应用程序进行说明,在实际应用中,本发明对应用程序不作限定。
图2所示的多层体系架构中的OLAP是一个聚合数据并组织成多维结构(还可以称为多维数据集或者数据立方或者联机分析处理)的数据处理工具。一个OLAP数据立方包含策略(例如销售、利润等)和维度(例如时间、产品和市场)。其中,每个维度包含许多相关的水平和层次结构(例如年、季度、月)。一个多维数据集通常由一个关系数据库组成。OLAP服务器可以将数据立方存储于持久化存储器(例如磁盘)、非持久存储器(例如内存),还可以将数据立方存储于两者的结合存储器。本优选实施例中使用的OLAP服务器为内存OLAP服务器(非持久化存储)。另外,需要说明的是,如图2所示的多层体系架构中仅包括一个客户端(即客户端202),实际运用中,多层体系架构中的客户端的个数可以为任意整数个,本发明实施例为更加清晰简单地说明仅采用一个客户端示例,并不对实际运用中客户端的个数加以限定。
如图2所示,客户端202通过应用服务器204在内存OLAP服务器中查询和/或检索数据结果。客户端202在内存OLAP服务器中查询和/或检索数据结果的速度远远超过直接在数据库210中查询和/或检索的速度。并且,内存OLAP服务器能够简化最终用户动态改变查询条件的复杂查询。内存OLAP服务器中的查询功能是以MDX格式表示的。当内存OLAP服务器中不存在查询的数据时,一个给定的MDX查询能够生成多个SQL语句。生成语句之后,查询数据库服务器210,提高查询的相应时间的数量级。获取到查询的数据之后,内存OLAP服务器中的数据缓存108能够保存返回至客户端202的数据,有效提高后续查询和/或计算的速度以及性能。
图2所示的多层体系架构中,数据源为上文提及的数据库服务器210以及MDX查询仓库212。对实现本优选实施例的数据缓存方法的多层体系架构介绍完毕之后,现分别介绍当数据源为数据库服务器210以及MDX查询仓库212时数据缓存方法的流程。
图3示出了根据本发明一个优选实施例的数据源为关系数据库的数据缓存方法的处理流程图。参见图3,该流程至少包括步骤302至步骤318。
步骤302、客户端202向应用服务器204发送客户端请求。其中,该客户端请求包括一个或多个OLAP多维数据集的操作。
步骤304、为响应客户端202发送的客户端请求,应用服务器204向内存OLAP服务器206发送一个MDX请求。
其中,一个MDX请求可请求多个级别的聚合数据和多维度为交点的数据。
步骤306、内存OLAP服务器解析接收到的MDX请求。
步骤308、判断数据是否已缓存。若是,继续执行步骤310,若否,执行步骤316。
具体地,当内存OLAP服务器解析MDX请求时,内存OLAP服务器确定请求中已经存在于数据缓存中的数据,并且确定需要从关系数据库服务器210中检索的数据以及需要检索数据的SQL查询语句。另外,确定需要驻留在OLAP服务器的数据缓存中的数据。如果数据缓存208中已包含请求的全部数据,执行步骤310。如果数据缓存208中没有包括请求的所有数据,执行步骤316。
步骤310、在数据缓存208中返回请求的数据。
步骤312、将结果返回至应用服务器204。
步骤314、将结果返回至客户端202,流程结束。
步骤316、在步骤308中,若数据缓存208中没有包括请求的所有数据,向关联数据库服务器210发送OLAP服务器请求(例如SQL查询请求)。
步骤318、将返回的响应数据保存于数据缓存208中,并跳转至步骤312和314继续执行,将响应数据返回到客户端202,流程结束。
图4示出了根据本发明一个优选实施例的数据源为MDX查询仓库的数据缓存方法的处理流程图。参见图4,该流程至少包括步骤402至步骤420。
步骤402、客户端202向应用服务器204发送客户端请求。其中,该客户端请求包括一个或多个OLAP多维数据集的操作。
步骤404、为响应客户端202发送的客户端请求,应用服务器204向内存OLAP服务器206发送一个MDX请求。
其中,一个MDX请求可请求多个级别的聚合数据和多维度为交点的数据。
步骤406、编译接收到的MDX请求。
具体地,本优选实施例中,通过ETL(extract-transform-load,数据提取、转换和加载)进程编译MDX查询请求,创建描述每个MDX查询请求的属性,进而通过使用数据挖掘进程改善缓存流程。
步骤408、保存MDX请求。
步骤410、判断数据是否已缓存。若是,继续执行步骤412,若否,执行步骤418。
具体地,当内存OLAP服务器解析MDX请求时,内存OLAP服务器确定请求中已经存在于数据缓存中的数据,并且确定需要从关系数据库服务器210中检索的数据以及需要检索数据的SQL查询语句。另外,确定需要驻留在OLAP服务器的数据缓存中的数据。如果数据缓存208中已包含请求的全部数据,执行步骤412。如果数据缓存208中没有包括请求的所有数据,执行步骤418。
步骤412、在数据缓存208中返回请求的数据。
步骤414、将结果返回至应用服务器204。
步骤416、将结果返回至客户端202,流程结束。
步骤418、在步骤410中,若数据缓存208中没有包括请求的所有数据,向关联数据库服务器210发送OLAP服务器请求(例如SQL查询请求)。
步骤420、将返回的响应数据保存于数据缓存208中,并跳转至步骤414和416继续执行,将响应数据返回到客户端202,流程结束。
为进一步将图4所示的流程阐述得更加清楚,现以标准化语言元素组成的MDX或者SQL语言对上述流程进行阐述。
由于元素时标准化的,能够解析客户端请求,解析之后,将客户端请求的属性存储于MDX查询仓库212中。例如,一个MDX请求有以下结构:
TABLE-TEST-00001SELECT{Column Headers}ON COLUMNS,{Row Headers}ON ROWSFROM[Cube Name]WHERE[Filtering conditions].
MDX请求提交的销售信息包括产品、消费者和时间段如下:
TABLE-TEST-00002SELECT{[Customers].[All Customers].Children}ONCOLUMNS,{[Products].[All Products].[Women Shoes].Children}ON ROWS FROM[Sales_Cube1]WHERE([Measures].[Sales},[Time].[2013].[QTR1])
在这个例子中,MDX请求的元素包括:
1SELECT—选择列头和表头
2FROM—OLAP立方
3WHERE—过滤条件
在当前系统中,请求是动态生成的,客户端202(用户或应用程序)发布一个请求。每个客户端请求的频率可能多种多样,例如,一个特定的客户端请求执行可以是一天一次,可以是一周一次,还可以是一个月一次等在不同的时间段可执行多次的客户端请求。
为在数据挖掘过程中使用客户端请求,本优选实施例解析每个单独的客户端请求。将带有附加信息(例如用户名、日期和时间)的客户端请求属性存储在MDX查询仓库212中。其中,客户端请求的格式为适合数据挖掘方法(包括关联算法、序列算法、聚类算法、分类算法或回归算法)的格式。本发明实施例对查询工作负载应用数据挖掘算法以识别客户端请求的接收规则,在自动化过程中应用接收规则直接检索数据,在数据源获取数据。
现对聚类算法、关联算法以及序列算法三个常用数据挖掘方法进行介绍。
聚类算法用于服务器在一个给定的集群和不同的集群中发现具有相似的查询特征的组。例如,在批量评分过程中,聚类模型应用于整个查询工作负载,发现具有类似的特征的组,因此,缓存可以相应的预填充。再例如,一个聚类模型应用于查询选择的子集,客户端根据查询模式的子集预先填充缓存。
关联算法用于服务器发现组合的属性、条件和同时发生的行为。一个关联模型在管理缓存的基础上查询发现频繁发生的有关组合查询。例如,因为一个仪表板需要执行多次查询,客户端的访问启动这个仪表盘的请求将同步执行一组查询。例如,在批量评分过程中,一个关联模型应用于一组查询来确定哪些查询在同一时间最有可能被请求,因此缓存可以作相应的预填充。
序列算法用于服务器发现组合的属性、条件和随着时间顺序发生的行为。一个序列是由从一个客户端发出的一系列的请求组成,每个请求按顺序或者无序轮流执行一段时间。一个序列模式发现应用到足够数量的客户端的序列,保证基于顺序序列行为管理缓存。例如,在一个实时评分过程中,一个序列模型应用于从一个特定的客户端发出的一个新的请求,确定哪些请求是最有可能在接下来一段时间被客户端请求,这样缓存可以进行相应的更新。
根据客户端请求的属性、格式以及针对不同格式客户端请求采取的不同算法,使用ETL进程编译MDX查询请求,创建描述每个MDX查询请求的属性,并保存至MDX查询仓库212的关联表格。保存之后,根据保存在MDX查询仓库的关联表格确定客户端请求的接收规则。使得接收规则发现并量化可能的同时或者顺序发生的查询组合。即,本优选实施例根据不断更新的MDX查询仓库212中存储的历史查询工作负载的属性预测客户端202最(或者至少)可能需要的数据确定接收规则。之后,将接收规则保存至数据库中。例如,在一个数据库表中,以PMML(一个行业标准预测模型标记语言)格式保存接收规则。
实施例二
根据实施例一中对接收规则确定的介绍,实施例二中介绍当接收规则用于批处理模式或者实时填充模式时,本发明实施例提供的数据缓存方法。
图5示出了根据本发明一个实施例的采用批处理模式的数据缓存方法的处理流程图。其中,批处理模式的目的是填充数据缓存208,接收规则在客户端开始请求数据,请求的数据是已存在于数据缓存208,从而减少了请求的响应时间。参见图5,该流程至少包括步骤502至步骤508。
步骤502、选择一个接收规则,刷新聚类模型。
具体地,系统管理员或一个系统进程可以识别和选择最合适的集群和接下来的工作负载,例如工作量为一个星期中特定的一天或一个给定的星期。
步骤504、执行批量评分。
具体地,执行批量评分包括:在接收规则应用新的客户端请求;分配每个客户端请求至最适合的集群模型,即集群代表客户端请求配置文件(组合请求的属性)。客户端请求属性的组合代表集群在同一时期可能被执行的请求。从接收规则中通过数据挖掘过程自动提取集群特征,或由系统管理员提取集群特征。
步骤506、当批量评分执行完成,在未来第一指定时间段内选择可以查询可能发生的客户端请求,还可以查询数据库服务器210检索数据。
步骤508、预填充数据缓存208,流程结束。
数据缓存208已包含未来第一指定时间段内最有可能被客户端请求的数据。因此,采用本优选实施例能够避免如图3所示的步骤316至步骤318以及图4中的步骤416至步骤418。因此,能够有效提高数据缓存效率。
另外,如图5所示的流程不仅可以根据接收规则预测并生成一组数据,还可以分析数据缓存中的数据,确定第二指定时间段内不会被请求查阅的过期数据,并对过期数据进行清除,节省缓存空间,保证更加有效地对数据进行缓存。
图6示出了根据本发明一个实施例的采用实施模式的数据缓存方法的处理流程图。实时操作模式的主要目标和原则与上文提及的批处理模式一致,将可能被客户端请求的数据预填充于数据缓存208,减少数据库服务器210的操作,进而能够减少对时间的消耗。但是,与批处理模式不同的是,在实时填充模式中,数据缓存208是使用代表客户端202的查询请求模式的接收规则持续预填充的。参见图6,该流程至少包括步骤S602至步骤S610。
步骤602、选择接收规则。
由上文可知,本优选实施例中,客户端202提交请求,持续收集到内存OLAP服务器206上,传递到MDX查询仓库212。数据缓存过程调用接收规则。
步骤604、对接收规则应用实时评分,新数据请求转换成数据流传入MDX查询仓库212。自动评分可现为一个数据库,例如,一个采用序列算法确定的接收规则可以预测由一个客户端202未来可能发出的请求。
步骤606、检查数据缓存208的内容,确定预测的可能请求的数据是否已经在数据缓存208中。如果数据不在数据缓存208中,执行步骤608。如果数据已经存在于数据缓存208中,则流程结束。
步骤608、如果数据不在数据缓存208中,在关系数据库服务器210检索数据。
步骤610、预填充数据缓存208,流程结束。
由上文可知,不论应用于何种模式,本优选实施例均能够将数据库服务器210的请求次数最小化,进而较少相应时间,提高缓存过程的性能。
基于上文各优选实施例提供的数据缓存方法,基于同一发明构思,本发明实施例提供了一种数据缓存装置,用于实现上述数据缓存方法。
图7示出了根据本发明一个实施例的数据缓存装置的结构示意图。参见图7,本发明实施例的数据缓存装置至少包括:规则确定模块710、数据生成模块720以及数据补充模块730。
现介绍本发明实施例的数据缓存装置的各器件或组成的功能以及各部分间的连接关系。如图7所示,规则确定模块710分析服务器数据库接收的客户端请求,确定客户端请求的接收规则。确定之后,与确定模块710相耦合的数据生成模块720根据接收规则预测并生成一组数据。本发明实施例中,生成的数据以接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的数据。数据生成模块720生成一组数据之后,与数据生成模块720相耦合的数据补充模块730判断服务器的数据缓存中是否存储有全部生成的数据。若是,则数据缓存成功。若否,则数据补充模块730获取未存储在数据缓存中的部分数据,并添加到数据缓存中,完成数据缓存。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
依据本发明实施例能够分析服务器数据库接收的客户端请求,确定客户端请求的接收规则。确定接收规则之后,依据本发明实施例能够根据接收规则,预测并生成以接收规则的确定时间为始,未来第一指定时间段内客户端请求查阅的一组数据。并且,当判断服务器的数据缓存中未能存储的生成的全部数据时,获取未存储的部分数据并添加到数据缓存中。当应用程序需要检索大量数据时,采用本发明实施例提供的数据缓存方法能够确定客户端请求的接收规则,根据接收规则识别出客户端请求查阅的数据,及时清除客户端不需要的数据,节省缓存空间,更加合理有效地对数据进行缓存。因此,依据本发明实施例能够解决现有技术中无法将数据全部保存至内存的问题。
另外,本发明实施例提供的数据缓存方法能够在采用批处理模式进行数据缓存时,预测未来第一指定时间段内客户端请求查阅的数据,解决了现有技术中无法使用缓存动态预估客户端请求的问题,减少响应时间的消耗,降低客户端请求的时间成本。由于本发明实施例提供的数据缓存方法能够预测未来第一指定时间段内客户端请求查阅的数据,并及时清除过期数据,依据本发明实施例提供的数据缓存方法能够避免由于缓存的数据量太大导致内存中的缓存容量不足以存储大批量的缓存数据的问题。而本发明实施例提供的数据缓存方法中根据确定的接收规则预测并生成一组数据能够保证数据缓存中保存最被需要的数据,进而能够保证当客户端请求到达时必要的数据已经存在于数据缓存中。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据缓存设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (9)
1.一种数据缓存方法,其特征在于,包括:
分析服务器数据库接收的客户端请求,确定客户端请求的接收规则;
根据所述接收规则预测未来第一指定时间段内会发生的客户端请求并生成一组数据,其中,所述生成的数据为:以所述接收规则的确定时间为始,所述未来第一指定时间段内会发生的客户端请求请求查阅的数据;
判断所述服务器的数据缓存中是否存储有全部所述生成的数据,若否,则获取未存储在所述数据缓存中的部分数据,并添加到所述数据缓存中;
分析所述数据缓存中存储的数据;
以数据分析操作时间为始,确定未来第二指定时间段内不会被请求查阅的过期数据;
清除所述过期数据。
2.根据权利要求1所述的方法,其特征在于,所述客户端请求包括:
所述服务器数据库中存储的历史客户端请求;和/或
对所述服务器数据库中的客户端请求进行分析时,所述服务器实时接收客户端请求,其中,实时是指与对服务器数据库中的客户端请求进行分析时同步进行。
3.根据权利要求2所述的方法,其特征在于,所述历史客户端请求从多维表达式MDX查询仓库中获取,其中,所述MDX查询仓库存储有所述服务器的所有历史记录。
4.根据权利要求1至3任一项所述的方法,其特征在于,客户端请求的格式包括下列至少之一:
结构化查询语言SQL格式;
可扩展标识语言XML格式;
MDX格式。
5.根据权利要求1至3任一项所述的方法,其特征在于,客户端请求的属性包括下列至少之一:
客户端请求的名称;
客户端请求的请求日期;
客户端请求的解析元素;
客户端请求的格式。
6.根据权利要求1所述的方法,其特征在于,所述确定客户端请求的接收规则,包括:使用数据挖掘算法确定客户端请求的接收规则。
7.根据权利要求6所述的方法,其特征在于,所述数据挖掘算法包括下列至少之一:聚类算法、关联算法、序列算法、分类算法以及回归算法。
8.根据权利要求1、2、6、7中任一项所述的方法,其特征在于,所述数据缓存采用如下任意一种存储器实现:
持久化存储器;
非持久化存储器;
持久化存储器与非持久化存储器结合的结合存储器。
9.一种数据缓存装置,其特征在于,包括:
规则确定模块,配置为分析服务器数据库接收的客户端请求,确定客户端请求的接收规则;
数据生成模块,配置为根据所述接收规则预测未来第一指定时间段内发生的客户端请求并生成一组数据,其中,所述生成的数据为:以所述接收规则的确定时间为始,所述未来第一指定时间段内会发生的客户端请求请求查阅的数据;
数据补充模块,配置为判断所述服务器的数据缓存中是否存储有全部所述生成的数据,若否,则获取未存储在所述数据缓存中的部分数据,并添加到所述数据缓存中;
分析模块,配置为分析所述数据缓存中存储的数据;
确定模块,配置为以数据分析操作时间为始,确定未来第二指定时间段内不会被请求查阅的过期数据;
清除模块,配置为清除所述过期数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410086281.7A CN103886038B (zh) | 2014-03-10 | 2014-03-10 | 数据缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410086281.7A CN103886038B (zh) | 2014-03-10 | 2014-03-10 | 数据缓存方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103886038A CN103886038A (zh) | 2014-06-25 |
CN103886038B true CN103886038B (zh) | 2017-11-03 |
Family
ID=50954930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410086281.7A Active CN103886038B (zh) | 2014-03-10 | 2014-03-10 | 数据缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103886038B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156255A (zh) * | 2015-04-28 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种数据缓存层实现方法及系统 |
CN106126604A (zh) * | 2016-06-20 | 2016-11-16 | 华南理工大学 | 一种基于分布式数据仓库的社保数据联机分析处理系统 |
CN107729500B (zh) * | 2017-10-20 | 2021-01-05 | 锐捷网络股份有限公司 | 一种联机分析处理的数据处理方法、装置及后台设备 |
CN110046175B (zh) * | 2019-03-18 | 2023-02-28 | 创新先进技术有限公司 | 一种缓存更新、数据返回方法及装置 |
CN110221988B (zh) * | 2019-05-05 | 2021-04-30 | 福建天泉教育科技有限公司 | 一种第三方数据的缓存优化方法及系统 |
CN111563106A (zh) * | 2020-07-14 | 2020-08-21 | 成都市映潮科技股份有限公司 | 一种数据缓存方法、装置、系统及可读存储介质 |
CN112541101B (zh) * | 2020-12-11 | 2023-04-21 | 武汉旷视金智科技有限公司 | 订阅数据的推送方法、装置、电子设备及计算机存储介质 |
CN112818019B (zh) * | 2021-01-29 | 2024-02-02 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
CN101777081A (zh) * | 2010-03-08 | 2010-07-14 | 中兴通讯股份有限公司 | 一种提高网页访问速度的方法及装置 |
CN103051701A (zh) * | 2012-12-17 | 2013-04-17 | 北京网康科技有限公司 | 一种缓存准入方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8380740B2 (en) * | 2009-12-22 | 2013-02-19 | International Business Machines Corporation | Selective storing of mining models for enabling interactive data mining |
-
2014
- 2014-03-10 CN CN201410086281.7A patent/CN103886038B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
CN101777081A (zh) * | 2010-03-08 | 2010-07-14 | 中兴通讯股份有限公司 | 一种提高网页访问速度的方法及装置 |
CN103051701A (zh) * | 2012-12-17 | 2013-04-17 | 北京网康科技有限公司 | 一种缓存准入方法及装置 |
Non-Patent Citations (1)
Title |
---|
An Integration Approach of Data Mining with Web Cache Pre-Fetching;Yingjie Fu等;《Parallel and Distributed Processing and Applications》;20041231;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103886038A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103886038B (zh) | 数据缓存方法及装置 | |
US11625415B2 (en) | Data engine integration and data refinement | |
CN103177061B (zh) | 分区表中的唯一值估计 | |
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
JP5819376B2 (ja) | 列ベースのデータベースに対する列スマートな機構 | |
US7912812B2 (en) | Smart data caching using data mining | |
US11822545B2 (en) | Search integration | |
KR101806055B1 (ko) | 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 | |
US9367574B2 (en) | Efficient query processing in columnar databases using bloom filters | |
CN101576918B (zh) | 具备负载均衡功能的数据缓存系统 | |
US20170177665A1 (en) | Self-described query execution in a massively parallel sql execution engine | |
US11494339B2 (en) | Multi-level compression for storing data in a data store | |
US7080090B2 (en) | Allocation measures and metric calculations in star schema multi-dimensional data warehouse | |
US6408292B1 (en) | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions | |
US7167859B2 (en) | Database security | |
US8775397B2 (en) | Database access acceleration | |
US20150019528A1 (en) | Prioritization of data from in-memory databases | |
CN109154933A (zh) | 分布式数据库系统以及分布和访问数据的方法 | |
US9002903B2 (en) | Database system with data organization providing improved bit parallel processing | |
US20020035567A1 (en) | Chameleon measure and metric calculation | |
CN107908775A (zh) | 商品信息的动态展现方法、电子设备、存储介质 | |
US9582522B2 (en) | Management of database allocation during reorganization | |
CN103870497B (zh) | 用于基于列的数据库的列智能机制 | |
JP2004185465A (ja) | 多次元データベース処理方法及びその実施システム並びにその処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |