CN104298675B - 用于缓存管理的方法和装置 - Google Patents
用于缓存管理的方法和装置 Download PDFInfo
- Publication number
- CN104298675B CN104298675B CN201310301249.1A CN201310301249A CN104298675B CN 104298675 B CN104298675 B CN 104298675B CN 201310301249 A CN201310301249 A CN 201310301249A CN 104298675 B CN104298675 B CN 104298675B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- web request
- inquiry operation
- identification
- 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.)
- Expired - Fee Related
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于缓存管理的方法和装置。该方法包括:识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;以及响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。通过上述方式,能够自动生成缓存策略,避免手动配置造成的耗时和低效,从而能够自动优化Web系统中对数据库数据的访问,提高系统性能。
Description
技术领域
本发明涉及Web系统中的数据处理技术,并且更具体地,涉及在Web系统中用于缓存管理的方法和装置。
背景技术
Web系统已逐渐成为一种供用户获取大量信息的普遍使用的网络架构。在Web系统中,用户可以通过在诸如个人计算机、移动设备等的用户终端上选择网页中包含的链接,利用例如HTTP协议向Web服务器发送Web请求。Web服务器接收到Web请求之后,可以根据Web请求中携带的信息来调用作为执行结构化查询语言(Structured Query Language,SQL)的Java应用编程接口的Java数据库连接(Java DataBase Connection,JDBC),从而对数据库中存储的数据进行对应的操作。举例来说,当用户希望查看某一链接所指向的内容时,用户向Web服务器发送Web请求,Web服务器通过JDBC从数据库获取与该链接对应的内容,并将该内容返回给用户。
众所周知的是,对数据库进行访问通常需要利用复杂的操作并花费大量的时间。因此,为了避免对数据库的频繁访问造成资源的消耗,常常将经常被访问的数据库数据与这些数据对应的链接关联地存储在Web服务器的缓存(例如,高速缓存或者可用作缓存的其它存储器)中。这样,当不同的用户需要访问同一链接指向的内容时,Web服务器可以直接从它的缓存中获取对应数据并向用户返回,而不用再不断进行数据库的频繁访问。
但是,目前,被关联地存储在缓存中的数据库数据和链接(被称为缓存策 略(policy))是由系统管理员、内容提供商等手动配置的。手动配置不仅耗时且效率低下,而且由于在手动配置中潜在人为错误的存在,可能错误配置关联的数据库数据和链接,甚至可能遗漏某些有必要进行缓存的数据库数据和链接,从而影响Web访问的效率。因此,有必要改进对缓存策略的手动配置方式。
发明内容
本发明的实施例提供了一种用于缓存管理的方法和装置,能够自动地将数据库数据与其对应的链接关联存储在缓存中,从而避免手动配置缓存策略造成的耗时和低效。
根据本发明的一方面,提供了一种用于缓存管理的方法,包括:识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;以及响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。
根据本发明的另一方面,提供了一种用于缓存管理的装置,包括:Web请求识别部件,被配置为识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;查询操作识别部件,被配置为识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;以及关联存储部件,被配置为响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。
根据上述技术方案,通过识别Web请求和查询操作,可以确定与Web请 求和查询操作相关的信息。在涉及同一用户的Web请求和查询操作两者时间间隔不大于设定时间的情况下,可以将Web请求中包含的链接和查询操作中包含的数据标识所指示的数据库数据关联存储在缓存中。借助于Web请求和查询操作的相关信息,能够自动地将数据库数据与其对应的链接关联存储在缓存中,从而能够避免手动配置缓存策略造成的耗时和低效,使得可以自动优化Web系统中对数据库数据的访问,提高Web系统的性能。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2是根据本发明实施例的Web系统的大致架构的示意图;
图3是根据本发明实施例的用于缓存管理的方法的流程图;
图4是根据本发明实施例的用于缓存管理的另一方法的流程图;
图5是根据本发明实施例的用于针对调用Web请求的标准函数和调用查询操作的标准函数添加代码的例子;
图6是根据本发明实施例的对Web请求和查询操作进行识别得到的Web请求映射表和查询操作映射表以及基于这两个表得到的关联表的例子;
图7是根据本发明实施例的确定Web请求中的链接和查询操作中的数据标 识正确关联的概率的例子;
图8是根据本发明实施例的用于缓存管理的装置的结构框图;以及
图9是根据本发明实施例的用于缓存管理的另一装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是 任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从 而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网 (WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
接下来参照图2,描述根据本发明实施例的Web系统400的大致架构的示意图。在这里,Web系统400可以是处于云网络环境下的系统,也可以是处于其它网络环境下的系统,本发明对此不做特别限制。当Web系统400处于云网络环境下时,Web系统中的各网络设备(例如服务器、数据库等)可以对应于云网络中的各节点。
如图2所示,Web系统400可以包括诸如Web服务器420和数据库服务器(用于对数据库进行操作的网络节点)430之类的服务器以及数据库440。用户终端410通过向Web系统400发送请求来访问网络中的相应信息。用户通过运行用户终端410上的应用程序(例如,浏览器程序),可以向Web服务器420发送Web请求。Web服务器420在软件层面上可以对应于Web容器(container),在Web容器中运行的应用程序可以通过解析Web请求来调用数据库服务器430中的JDBC。数据库服务器430在软件层面上可以对应于数据库容器(也被称为DB容器),在数据库容器中运行的应用程序通过使用JDBC中的接口函数可以访问数据库440。通过向数据库440发送JDBC中的SQL语句来执行对应的数据库操作。
例如,当用户希望访问网页上的链接URL1以获取与URL1对应的信息时,用户在用户终端410呈现的网页中点击URL1,由此触发一个包含URL1的Web请求。运行在Web服务器420上的应用程序通过解析该Web请求,调用数据库服务器430中的JDBC。JDBC根据来自Web服务器420的调用信息,确定需要在数据库440中读取的数据对应的数据标识(例如,需要读取的数据所在的表格的表格名称),并将用于使数据库440返回数据标识相应数据的命令发送给数据库440。响应于此,数据库440通过数据库服务器430和Web服务器420将与URL1对应的数据Data1返回给用户。
需要注意的是,虽然在上述例子中描述了用户通过多个服务器或者多个容器来访问数据库中的数据,但是本领域技术人员可以容易地想到,在一些Web系统中,用户也可以只通过一个服务器(例如Web服务器)或一个容器来访问数据库。在这种情况下,处理Web请求的应用程序和对数据库进行访问的应用程序处于同一个容器中。也就是说,这种情况下的Web容器和数据库容器实际上是同一个容器。
由于Web服务器等对数据库440的访问通常操作复杂并且耗时,因此希望能够将经常被访问或者与特定链接具有关联关系的数据等存储在缓存中,从而提高访问数据库的效率。例如,在上述例子中,可以将URL1和Data1对应存储在缓存中作为一项缓存策略(链接和对应数据库数据的关联存储可以被称为缓存策略,例如,URL1和Data1的关联存储为一项缓存策略)。这样,当其它用户访问URL1时,可以直接获取与其对应的数据而不需反复访问数据库440。在图3中所示的方法500能够自动生成缓存策略,从而不仅可以提高访问数据库的效率,还可以解决现有手动配置方式带来的低效问题等。
如图3所示,在S510中,识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;在S520中,识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;在S530中,响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指 示的数据与所述链接关联存储在缓存中。
根据本发明的实施例,方法500可以由Web网络中的网络侧设备执行,具体而言,可以由Web容器和数据库容器中的应用程序来执行。例如,S510可以由Web容器中的应用程序执行,S520可以由数据库容器中的应用程序执行,S530可以由Web容器、数据库容器或其它另外的容器中运行的应用程序来执行。只要可以实现根据本发明实施例的方法,对于应用程序具体所处于的位置,本发明不做特别限定。
当Web网络接收到用于从数据库获取数据的Web请求时,通过对Web请求进行分析,可以确定Web请求包含的待访问链接,并可以确定在Web容器中调用Web请求的时间。通过采用已有的技术,基于对Web请求的处理可以触发用于访问数据库以进行读取操作的相应查询操作。在用于读取数据的查询操作被触发的情况下,通过对查询操作进行分析,可以确定查询操作中包含的用于指示数据库中的数据的数据标识,并可以确定在数据库容器(数据库容器可以与Web容器是同一容器)中调用查询操作的时间。在调用Web请求的时间和调用查询操作的时间不大于设定时间的情况下,可以将数据标识指示的数据与Web请求中包含的链接关联存储在缓存中,作为缓存策略(例如高速缓存策略)。上述设定时间可以是预先设定好的时间,也可以是根据需要动态配置的时间。将在下面详细描述上述方法的具体操作和细节。
根据本发明实施例的方法,通过对Web请求和查询操作进行识别或分析,可以在不影响现有对Web请求的响应流程的情况下获取Web请求和查询操作的相关信息,从而能够根据所获取的相关信息来自动地将数据库数据与其对应的链接关联存储在缓存中。这样,能够避免手动配置缓存策略造成的耗时和低效,使得可以自动优化Web系统中对数据库数据的访问,提高Web系统的性能。
接下来,参考图4详细描述根据本发明实施例的用于缓存管理的方法600的流程。在图4中,以存在Web容器和数据库容器为例进行描述。本领域技术人员在与图4相关内容的教导下,可以容易地想到当Web容器和数据库容器是同一容器时的操作。
在S610中,识别来自用户的用于从数据库获取数据的Web请求。从而,可以通过对Web请求进行分析,确定调用该Web请求的时间和该Web请求中包含的信息,并可以生成与Web请求有关的映射表格。
根据本发明的一个实施例,可以通过在用于调用Web请求的标准函数之前添加代码,来识别该来自用户的用于从数据库获取数据的Web请求。
由于所有类型的Web请求(包括用于从数据库获取数据的Web请求、用于删除数据库中数据的Web请求、用于修改数据库中数据的Web请求等)需要被预先定义好的标准函数调用之后才能进行相应的处理,因此可以在该标准函数附近添加代码来监视Web请求的调用。本发明实施例通过至少在标准函数之前添加额外的代码,可以获取与Web请求相关的信息。具体而言,由于通常可以以一定的信息结构(例如HTTP协议中规定的结构)来携带Web请求的信息,因此通过对这样的信息结构进行分析,可以确定Web请求涉及的数据库操作方法(例如获取数据等)、Web请求包含的链接、Web请求包含的用户标识等。此外,通过额外代码的添加还可以确定调用上述标准函数的时间,也就是调用Web请求的时间。
在添加代码的过程中,例如,可以在Web容器中的应用程序的二进制代码级别中找到用于调用Web请求的标准函数的二进制代码,并在它的前面添加代码来监视该标准函数的调用。通过在二进制代码级别进行用于识别Web请求的代码的添加,可以避免改变当前Web系统的源代码,从而对于开发Web系统 的开发者不造成影响。此外,由于并不改变Web系统的源代码,因此不会引入潜在的风险。当然,也可以在源代码级别添加代码来识别Web请求。
图5给出了如何针对标准函数添加代码以识别或分析Web请求和之后描述的查询操作的例子。在图5的左侧示出了Web系统的软件架构。如图5的左侧所示,用户通过用户终端上的客户端程序向Web容器发送Web请求,Web容器中的应用程序调用数据库容器中的JDBC,JDBC通过SQL对数据库进行操作。Web容器和数据库容器构成Web系统的运行环境。可以通过分别在Web容器和数据库容器中嵌入注入模块来向其中的应用程序添加代码。
在图5中的上半部分示出了用于在Web容器中针对调用Web请求的标准函数嵌入用于识别或分析Web请求的代码的例子。如图5所示,假设this.service.service(req)是用于调用Web请求的标准函数,在该标准函数之前添加代码MappingAnalyzer.trackReq(req),通过该代码可以对Web请求进行识别或分析,以得到如将在之后描述的图6中的Web请求映射表中的内容。在this.service.service(req)之后,还可以添加代码MappingAnalyzer.trackExit(),用于确定Web请求已被this.service.service(req)正确处理。当然,也可以不在this.service.service(req)之后添加代码。虽然在图5示出了在源代码级别添加用于识别Web请求的代码,但是也可以在二进制代码级别进行二进制代码的添加。
通过对Web请求进行识别或分析,可以确定Web请求中包含的希望访问的链接和调用Web请求的时间。此外,还可以确定与Web请求有关的其它信息,例如,包括如下中的至少一项:该Web请求所在的线程号、发送该Web请求的用户的Cookie信息(含有用户标识)、希望对数据库进行的操作方法、该Web请求被Web容器中的应用程序处理后送出Web容器时经转换的用户标识等。
例如,如图6中的Web请求映射表所示,对Web请求识别之后,可以得到包括如下的信息:Web请求所在的线程号、发送该Web请求的用户的用户标识(接收的用户标识)、调用该Web请求的时间戳、希望访问的链接、希望对数据库进行的操作方法、送出Web容器时经转换的用户标识(发送的用户标识)。
图6中的Web请求映射表示出了对于两个Web请求Req1和Req2进行识别得到的结果,分别存储在Web请求映射表的第二行和第三行。Req1由用户User1发出,Req2由用户User2发出。从Req1和Req2的识别结果可以看到,接收的用户标识和发送的用户标识是不同的,这是因为Web容器为了保证安全性可以对用户标识进行转换。虽然用户标识不同,但是,Web容器可以知道uid1和uid3指向发出Req1的用户User1,uid2和uid4指向发出Req2的用户User2。此外,在Web请求映射表中存储的链接以路径的形式存储并省略了根路径,但是链接也可以以完整路径、IP地址等其它形式进行存储。对于数据库的操作方法,在这里示出了如POST(张贴)和GET(获取)这样的标准数据库操作方法,其中GET操作对应于希望从数据库获取数据。本发明的实施例针对获取数据或读取数据的操作来生成缓存策略。
在S620中,识别针对S610中的用户向数据库发送的用于从数据库获取数据的查询操作。从而,可以通过对用于从数据库获取数据的查询操作进行分析,确定调用该查询操作的时间和该查询操作中包含的信息,并可以生成与查询操作有关的映射表格。
在S620中识别的查询操作是针对S610中的用户而发送的查询操作,并且该查询操作可以由数据库容器发送到数据库以获取对应的数据库数据。根据本发明的一个实施例,可以通过在用于执行查询操作的标准函数中添加代码,来识别该针对所述用户向数据库发送的用于从数据库获取数据的查询操作。
由于所有类型的查询操作(包括用于从数据库获取数据的查询操作、用于删除数据库中数据的查询操作、用于修改数据库中数据的查询操作等)需要通过预先定义好的标准函数的执行才能进行相应的处理,因此可以在该标准函数中添加代码来监视查询操作的执行。本发明实施例通过至少在标准函数中添加额外的代码,可以获取与查询操作相关的信息。例如,由于通常可以以一定的信息结构(例如HTTP协议中规定的结构)来携带查询操作的信息,因此通过对这样的信息结构进行分析,可以确定查询操作涉及的数据库操作(例如获取数据等)、查询操作包含的与待处理的数据库数据对应的数据标识、查询操作包含的用户标识等。此外,通过额外代码的添加还可以确定调用上述标准函数的时间,也就是调用查询操作的时间。
在添加代码的过程中,例如,可以在数据库容器中的应用程序的二进制代码级别中找到用于执行查询操作的标准函数的二进制代码,并在它的二进制代码内部(例如它的二进制代码的开始位置)添加代码来监视该标准函数的执行。通过在二进制代码级别进行用于识别查询操作的代码的添加,可以避免改变当前Web系统的源代码,从而对于开发Web系统的开发者不造成影响。此外,由于并不改变Web系统的源代码,因此不会引入潜在的风险。
当然,也可以在源代码级别添加代码来识别查询操作。在图5中的下半部分示出了用于在数据库容器中针对执行数据库查询操作的标准函数嵌入用于识别或分析查询操作的代码的例子。如图5所示,假设executeQuery(String sql)是用于执行数据库查询操作的标准函数,在该标准函数中添加代码MappingAnalyzer.trackDB(sql),通过该代码可以对查询操作进行识别或分析,以得到如将在之后描述的图6中的查询操作映射表中的内容。虽然在图5示出了在源代码级别添加用于识别查询操作的代码,但是也可以在二进制代码级别进行二进制代码的添加。
通过对查询操作进行识别或分析,可以确定查询操作中包含的用于指示数据库中的数据(或者与希望访问的链接对应)的数据标识和调用查询操作的时间。此外,还可以确定与查询操作有关的其它信息,例如,包括如下中的至少一项:该查询操作所在的线程号、该查询操作所针对用户的Cookie信息(含有用户标识)、该查询操作对数据库进行的操作等。
例如,如图6中的查询操作映射表所示,对查询操作识别之后,可以得到包括如下的信息:查询操作所在的线程号、该查询操作所针对用户的用户标识、调用该查询操作的时间戳、该查询操作对数据库进行的操作。
图6中的查询操作映射表示出了对于两个查询操作Query1和Query2进行识别得到的结果,分别存储在查询操作映射表的第二行和第三行。Query1对应于Req1,是由Req1经由Web容器处理之后在数据库容器中触发的。也就是说,Query1和Req1针对同一用户User1。类似地,Query2对应于Req2,是由Req2经由Web容器处理之后在数据库容器中触发的。也就是说,Query2和Req2针对同一用户User2。关于查询操作对于数据库的操作,在这里示出了如INSERT(插入)和SELECT(选择)这样的标准数据库操作。在该例子中,由于Req1的操作方法为POST,因此Query1需要对数据库进行INSERT操作。这里,根据Req1包含的链接“/userinfo”,Query1需要处理数据库中表格标识为Users的表格。由于Req2的操作方法为GET,因此Query2需要对数据库进行SELECT操作。这里,根据Req2包含的链接“/wigets”,Query2需要处理数据库中表格标识为wigetInstance的表格。
如Web请求映射表所示,由于在Web容器中对用户标识进行了转换,因此Web容器接收的用户标识和发送的用户标识是不同的。此时,可以通过判断Web容器发送的用户标识与数据库容器接收的用户标识相同,将两个容器中指向同一用户的用户标识关联起来,从而确定针对同一用户的Web请求和查询操 作。例如,Web容器针对Req1将原本携带的用户标识uid1转换为uid3,并将携带uid3的信息发送给数据库容器,以使数据库容器中将接收到的用户标识携带在Query1中。由于Query1携带的用户标识和Web容器转换后的用户标识都为uid3,所以可以确定Req1和Query1是针对同一用户的。
也就是说,在Web容器和数据库容器是不同容器的情况下,通过对Web请求进行跟踪(例如,利用容器对用户标识的转换关系以及前一容器发出的用户标识与后一容器接收到的用户标识相等),可以确定Web请求经由Web容器在数据库容器中触发了哪个查询操作,从而确定所触发的查询操作与Web请求是针对同一用户的。特别地,当Web系统中存在多个Web容器和一个数据库容器的情况下,可以利用BCI(Byte Code Interception,字节码插入)来跟踪用户标识的转换。例如,可以记录每个Web容器中进行的用户标识转换,再根据前一容器发送的用户标识与紧跟在该容器之后的容器接收的用户标识相等,来跟踪同一用户在不同容器中的用户标识,从而确定相对应的Web请求和查询操作。
在S630中,根据S610中的Web请求映射表和S620中的查询请求映射表,针对与同一用户有关的Web请求中包含的链接和查询操作中包含的数据标识建立关联关系。还可以在关联关系中存储链接和数据标识正确关联的概率。
可以自定义多种方式来确定链接和数据标识之间正确关联的概率值。在图7中给出了一种确定概率值的例子。
当Web容器和数据库容器是同一容器时,如果Web请求所在的线程号(Web_threadid)等于查询操作所在的线程号(JDBC_threadid)、Web请求中包含的用户标识(usertoken1)等于查询操作中包含的用户标识(usertoken2)、并且调用Web请求的时间戳(timestamp1)与调用查询操作的时间戳(timestamp2) 之间的时间间隔不大于设定时间T,那么认为该Web请求中包含的链接与该查询操作中包含的数据标识正确关联的概率例如为1。
当Web容器和数据库容器是不同容器时,无论Web_threadid是否等于JDBC_threadid(在图7的表格中取通常情况Web_threadid不等于JDBC_threadid),如果usertoken1等于usertoken2并且timestamp1和timestamp2之间的时间间隔不大于T,那么认为该Web请求中包含的链接与该查询操作中包含的数据标识正确关联的概率例如为80%。
当Web容器和数据库容器是不同容器时,无论Web_threadid是否等于JDBC_threadid(在图7的表格中取通常情况Web_threadid不等于JDBC_threadid),如果usertoken1不等于usertoken2并且timestamp1和timestamp2之间的时间间隔不大于T,那么认为该Web请求中包含的链接与该查询操作中包含的数据标识正确关联的概率例如为50%。
当Web容器和数据库容器是不同容器时,无论Web_threadid是否等于JDBC_threadid以及usertoken1是否等于usertoken2,如果timestamp1与timestamp2之间的时间间隔大于T,那么认为该Web请求中包含的链接与该查询操作中包含的数据标识正确关联的概率例如为0。
设定时间T可以是基于多次测量的从用户发送Web请求到该用户从数据库接收到与该Web请求对应的数据之间的时间间隔中的最大值而确定的。具体而言,在一个Web系统中,用户可以通过用户终端发送多个用于从数据库获取数据的Web请求。每发出一个Web请求,用户测量从发出该Web请求到从数据库接收到与该Web请求对应的数据所花费的时间。这样,通过多次得到的测量结果,可以确定从发出一个Web请求到接收到与其对应的数据所需要的最大值。如果timestamp1与timestamp2之间的时间间隔大于最大值了,那么说明对应的 Web请求和查询操作虽然是针对同一用户的,但是它们之间没有对应关系。设定时间T可以被设置为等于多次测量的最大值,也可以被设置为略小于该最大值,还可以被设置为小于该最大值的任一值,以便于根据需要捕获到具有不同响应时间的相关联的链接和对应数据。
例如,根据图7所示的确定概率值的方式,在图6所示的例子中,由于这里t2和t4之间的差值小于作为多次测量最大值的设定时间T,因此在关联表中存储如图所示的信息。根据本发明的实施例,由于需要缓存的数据为对数据库进行读取操作得到的数据,因此相对应的希望对数据库进行的操作方法和查询操作对数据库进行的操作是固定的(这里,分别为GET和SELECT)。所以,在图6所示的这些表格中,也可以只存储与数据库读取操作有关的Web请求和查询操作,从而省略对操作方法和操作相关信息的存储。
本领域技术人员还可以设计其它规则并选择不同的概率值来表征针对同一用户的Web请求中的链接和查询操作中的数据标识正确关联的概率。例如,可以只对某些根路径下的链接建立关联关系。再例如,可以将上述的50%设计成70%并将上述的80%设计成50%。
根据本发明的实施例,可以只将调用Web请求的时间与调用查询操作的时间之间的时间间隔不大于设定时间的那些Web请求和查询操作关联存储在例如如图6所示的关联表中,以供后面描述的验证操作所用。除上述条件之外,还可以将满足具有高于预定值(例如70%)的概率的链接和数据标识关联存储在如图6所示的关联表中,以供后面描述的验证操作所用。这里,需要注意的是,由于在数据库的一个表格中可能会同时存储多个链接指向的数据,因此在关联表中可能存在多个链接对应同一个数据标识的情况。在这种情况下,仍可以针对每个链接在关联表中与相关联的数据标识对应存储,也就是说,每个链接可以占据关联表中的一行。
在S640中,针对S630中获得的关联表,验证链接与数据标识正确关联的概率是否高于预定阈值。该预定阈值可以是能够表明链接和数据标识正确关联的值。例如,可以验证概率是否基本上为1(例如高于99.999%等)或者是否高于85%等。通过验证概率高于预定阈值,可以确保链接与数据标识是正确关联的。
本发明的实施例需要验证概率是否高于预定阈值是为了确保自动生成的缓存策略是正确的,使得对当前的Web系统的准确性没有任何负面影响。如果对正确性的要求不是很高、而更关注于更快且更多地向用户返回数据的话,也可以将概率超过一定值的链接和数据标识关联存储在关联表中而无需S640中的验证。还可以不考虑正确关联的概率,只要针对同一用户的Web请求和查询操作之间的时间间隔不大于设定时间并确保该查询操作是由该Web请求触发的,就可以将对应的链接和数据标识存储在关联表中,甚至在此基础上无需S640中的验证。
可以通过多种方式来验证链接与数据标识正确关联的概率是否高于预定阈值。根据本发明的一个实施例,可以通过在数据库中修改数据并判断针对同一Web请求返回的数据是否被同步修改来对概率进行验证。
具体而言,假设数据标识DID指示数据库中的数据Data1,当发送包含链接URL1的Web请求时返回Data1。为了验证URL1和DID正确关联的概率,可以首先在数据库中临时修改与数据标识DID对应的数据Data1,例如将Data1修改为Data2。然后,可以再发送一个包含URL1的Web请求。接着,确定在发送包含URL1的Web请求之后是否接收到修改后的数据Data2。响应于确定接收到修改后的数据Data2,确定URL1和DID正确关联的概率高于预定阈值。在通过该验证确定URL1和DID正确关联的情况下,可以将URL1和DID本来指示的数据Data1关联存储在缓存中作为缓存策略。
上述验证过程可以只进行一次,也可以进行多次,对此不做特别限制。并 且,在上述验证过程中可以有用户的参与(例如由用户再次发送包含链接的Web请求等),也可以由网络中的应用程序独自实现。此外,上述验证过程可以在上线的Web系统的备份系统中进行,也可以在待上线的Web系统的测试阶段中在Web系统本身进行。
在S650中,响应于验证链接与数据标识正确关联的概率高于预定阈值,将数据标识指示的数据与链接关联存储在缓存中。从而,缓存策略被自动创建。
此外,需要注意的是,由于多个链接指向的数据可以存储在数据库的一个表格中,而缓存可以以数据库表格为单位进行数据存储,因此在缓存中可以存在与多个链接关联存储的数据为同一个数据库表格的情况。当然,也可以只将链接与它所指向的那些数据关联存储在缓存中。
自动生成缓存策略之后,可以利用现在已经存在的一些技术来管理和使用缓存。例如,可以通过配置ETag来对缓存进行管理,可以利用Web容器中的动态高速缓存机制来使用缓存等。
利用上述方法,可以自动创建缓存策略,从而能够避免现有的手动配置方式带来的低效、耗时等问题。特别是在大规模的Web系统中,这种自动生成缓存策略的方式,可以极大地改善系统性能并更多更全面地得到缓存策略。同时借助于对正确关联概率的验证,可以使得所得到的缓存策略更准确,不对现有Web系统的准确性造成不利影响。通过为应用程序添加二进制代码以识别Web请求和查询操作,可以在不影响源代码的情况下支持缓存策略的自动生成,并能够避免改变源代码引起的潜在风险。并且,在很多现有的遗留系统中并不能访问源代码和在源代码级别建立缓存策略,但是,通过利用例如字节码插入技术在二进制代码级别插入代码以对Web请求和查询操作进行识别或分析,并借助于本发明实施例提供的方法,可以在无需访问源代码的Web系统中自动建立缓存策略。另外,通过识别或分析与Web请求和查询操作相关的信息,可以简单地找到有价值的可缓存点(即,哪些链接可以被缓存)。此外,缓存策略的自 动生成可以避免在现有方式中根据经验等插入缓存带来的系统不连续的问题。
上面描述了根据本发明实施例的用于缓存管理的方法。接下来,参考图8和图9描述根据本发明实施例的用于缓存管理的装置的结构框图。
如图8所示,装置1000包括Web请求识别部件1010、查询操作识别部件1020和关联存储部件1030。装置1000可以对应Web系统中的一个或多个网络侧设备,其中的部件可以全部位于一个网络侧设备中,也可以部分位于一个网络侧设备中、部分位于另一个网络侧设备中。这些部件可以由所在设备中的处理器来执行。
Web请求识别部件1010可被配置为识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接。查询操作识别部件1020可被配置为识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识。关联存储部件1030可被配置为响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。
Web请求识别部件1010、查询操作识别部件1020和关联存储部件1030的上述操作和/或功能可以参考上述结合图2至7描述的相关内容,为了避免重复,在此不再赘述。
通过利用上述装置,借助于Web请求和查询操作的相关信息,能够自动地将数据库数据与其对应的链接关联存储在缓存中,从而能够避免手动配置缓存策略造成的耗时和低效,使得可以自动优化Web系统中对数据库数据的访问,提高Web系统的性能。
图9所示的装置1100中的Web请求识别部件1110、查询操作识别部件1120和关联存储部件1130分别与图8所示的装置1000中的Web请求识别部件1010、 查询操作识别部件1020和关联存储部件1030基本相同。
根据本发明的实施例,关联存储部件1130可以包括验证子部件1150和关联存储子部件1160。验证子部件1150可被配置为验证所述链接与所述数据标识正确关联的概率是否高于预定阈值。关联存储子部件1160可被配置为响应于所述概率高于所述预定阈值,将所述数据标识指示的数据与所述链接关联存储在缓存中。
根据本发明的实施例,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是同一容器的情况下,Web请求识别部件1110可被进一步配置为识别所述Web请求中包含的线程号和用户标识,查询操作识别部件1120可进一步被配置为识别所述查询操作中包含的线程号和用户标识,以及验证子部件1150可被配置为响应于所述Web请求和所述查询操作中包含的线程号和用户标识分别相等,确定所述概率高于所述预定阈值。
根据本发明的实施例,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是不同容器的情况下,Web请求识别部件1110可进一步被配置为识别所述Web请求中包含的用户标识和该用户标识经Web容器转换后的用户标识,并且查询操作识别部件1120可以包括第一识别子部件和第二识别子部件。其中,第一识别子部件可被配置为识别所述查询操作中包含的用户标识,第二识别子部件可被配置为响应于所述查询操作中包含的用户标识与所述转换后的用户标识相等,识别所述查询操作是针对所述用户的。并且,在该情况下,验证子部件1150可以包括估计单元1152和验证单元1154。估计单元1152可被配置为通过判断所述Web请求和所述查询操作中包含的用户标识是否相等,估计所述链接与所述数据标识正确关联的概率。验证单元1154可被配置为在所估计的概率高于预定值的情况下,验证所述链接与所述数据标识正确关联的概率是否高于所述预定阈值。
根据本发明的实施例,验证子部件1150可以包括第一确定单元1158和第二确定单元1159。第一确定单元1158可被配置为在数据库中所述数据标识指 示的数据被修改之后,确定针对包含所述链接的另一Web请求返回的数据是否是修改后的数据。第二确定单元1159可被配置为响应于确定针对该另一Web请求返回的数据是修改后的数据,确定所述概率高于所述预定阈值。
根据本发明的实施例,Web请求识别部件1110可被配置为通过在用于调用Web请求的标准函数之前添加代码,识别所述来自用户的用于从数据库获取数据的Web请求,并且查询操作识别部件1120可被配置为通过在用于执行查询操作的标准函数中添加代码,识别所述针对所述用户向数据库发送的用于从数据库获取数据的查询操作。
根据本发明的实施例,Web请求识别部件1110可被配置为识别在所述Web请求被所述用于调用Web请求的标准函数调用的情况下的时间戳,以确定调用所述Web请求的时间。并且,查询操作识别部件1120可被配置为识别在所述查询操作被所述用于执行查询操作的标准函数执行的情况下的时间戳,以确定调用所述查询操作的时间。
根据本发明的实施例,Web请求识别部件1110可被配置为识别所述Web请求中包含的希望对数据库进行的操作方法,以确定所述Web请求是用于从数据库获取数据的Web请求。并且,查询操作识别部件1120被配置为识别所述查询操作中包含的对数据库进行的操作,以确定所述查询操作是用于从数据库获取数据的查询操作。
根据本发明的实施例,所添加的代码可以是二进制代码。
根据本发明的实施例,上述的设定时间可以是基于多次测量的从用户发送Web请求到该用户从数据库接收到与该Web请求对应的数据之间的时间间隔中的最大值而确定的。
上述各部件、子部件和单元的上述操作和/或功能可以参考上述结合图2至7描述的相关内容,为了避免重复,在此不再赘述。
根据本发明实施例提供的上述装置,可以自动创建缓存策略,从而能够避免现有的手动配置方式带来的低效、耗时等问题。特别是在大规模的Web系统 中,这种自动生成缓存策略的方式,可以极大地改善系统性能并更多更全面地得到缓存策略。同时借助于对正确关联概率的验证,可以使得所得到的缓存策略更准确,不对现有Web系统的准确性造成不利影响。通过为应用程序添加二进制代码以识别Web请求和查询操作,可以在不影响源代码的情况下支持缓存策略的自动生成,并能够避免改变源代码引起的潜在风险。并且,在很多现有的遗留系统中并不能访问源代码和在源代码级别建立缓存策略,但是,通过利用例如字节码插入技术在二进制代码级别插入代码以对Web请求和查询操作进行识别或分析,并借助于本发明实施例提供的方法,可以在无需访问源代码的Web系统中自动建立缓存策略。另外,通过识别或分析与Web请求和查询操作相关的信息,可以简单地找到有价值的可缓存点(即,哪些链接可以被缓存)。此外,缓存策略的自动生成可以避免在现有方式中根据经验等插入缓存带来的系统不连续的问题。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种用于缓存管理的方法,包括:
识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;
识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;以及
响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。
2.根据权利要求1所述的方法,其中,所述将所述数据标识指示的数据与所述链接关联存储在缓存中包括:
验证所述链接与所述数据标识正确关联的概率是否高于预定阈值,其中所述概率与下述因素至少之一相关:Web请求所在的线程号与查询操作所在的线程号之间的关系、Web请求中包含的用户标识与查询操作中包含的用户标识之间的关系、调用Web请求的时间戳与调用查询操作的时间戳之间的关系、或者在数据库中所述数据标识指示的数据被修改之后,针对包含所述链接的另一Web请求返回的数据与修改后的数据之间的关系;以及
响应于所述概率高于所述预定阈值,将所述数据标识指示的数据与所述链接关联存储在缓存中。
3.根据权利要求2所述的方法,其中,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是同一容器的情况下,
所述识别来自用户的用于从数据库获取数据的Web请求包括:
识别所述Web请求中包含的线程号和用户标识,
所述识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作包括:
识别所述查询操作中包含的线程号和用户标识,以及
所述验证所述链接与所述数据标识正确关联的概率是否高于预定阈值包括:
响应于所述Web请求和所述查询操作中包含的线程号和用户标识分别相等,确定所述概率高于所述预定阈值。
4.根据权利要求2所述的方法,其中,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是不同容器的情况下,
所述识别来自用户的用于从数据库获取数据的Web请求包括:
识别所述Web请求中包含的用户标识和该用户标识经Web容器转换后的用户标识,
所述识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作包括:
识别所述查询操作中包含的用户标识;以及
响应于所述查询操作中包含的用户标识与所述转换后的用户标识相等,识别所述查询操作是针对所述用户的,以及
所述验证所述链接与所述数据标识正确关联的概率是否高于预定阈值包括:
如果所述Web请求和所述查询操作中包含的用户标识相等,则判断所述链接与所述数据标识正确关联的概率高于预定阈值。
5.根据权利要求2所述的方法,其中,所述验证所述链接与所述数据标识正确关联的概率是否高于预定阈值包括:
在数据库中所述数据标识指示的数据被修改之后,确定针对包含所述链接的另一Web请求返回的数据是否是修改后的数据;以及
响应于确定针对该另一Web请求返回的数据是修改后的数据,确定所述概率高于所述预定阈值。
6.根据权利要求1所述的方法,其中,
所述识别来自用户的用于从数据库获取数据的Web请求包括:通过在用于调用Web请求的标准函数之前添加代码,识别所述来自用户的用于从数据库获取数据的Web请求,
以及,所述识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作包括:通过在用于执行查询操作的标准函数中添加代码,识别所述针对所述用户向数据库发送的用于从数据库获取数据的查询操作。
7.根据权利要求6所述的方法,其中,
所述识别来自用户的用于从数据库获取数据的Web请求包括:
识别在所述Web请求被所述用于调用Web请求的标准函数调用的情况下的时间戳,以确定调用所述Web请求的时间,以及
所述识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作包括:
识别在所述查询操作被所述用于执行查询操作的标准函数执行的情况下的时间戳,以确定调用所述查询操作的时间。
8.根据权利要求1所述的方法,其中,
所述识别来自用户的用于从数据库获取数据的Web请求包括:
识别所述Web请求中包含的希望对数据库进行的操作方法,以确定所述Web请求是用于从数据库获取数据的Web请求,以及
所述识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作包括:
识别所述查询操作中包含的对数据库进行的操作,以确定所述查询操作是用于从数据库获取数据的查询操作。
9.根据权利要求1所述的方法,其中,所述设定时间是基于多次测量的从用户发送Web请求到该用户从数据库接收到与该Web请求对应的数据之间的时间间隔中的最大值而确定的。
10.一种用于缓存管理的装置,包括:
Web请求识别部件,被配置为识别来自用户的用于从数据库获取数据的Web请求,以确定调用所述Web请求的时间和所述Web请求中包含的希望访问的链接;
查询操作识别部件,被配置为识别针对所述用户向数据库发送的用于从数据库获取数据的查询操作,以确定调用所述查询操作的时间和所述查询操作中包含的用于指示数据库中的数据的数据标识;以及
关联存储部件,被配置为响应于调用所述Web请求的时间与调用所述查询操作的时间之间的时间间隔不大于设定时间,将所述数据标识指示的数据与所述链接关联存储在缓存中。
11.根据权利要求10所述的装置,其中,所述关联存储部件包括:
验证子部件,被配置为验证所述链接与所述数据标识正确关联的概率是否高于预定阈值,其中所述概率与下述因素至少之一相关:Web请求所在的线程号与查询操作所在的线程号之间的关系、Web请求中包含的用户标识与查询操作中包含的用户标识之间的关系、调用Web请求的时间戳与调用查询操作的时间戳之间的关系、或者在数据库中所述数据标识指示的数据被修改之后,针对包含所述链接的另一Web请求返回的数据与修改后的数据之间的关系;以及
关联存储子部件,被配置为响应于所述概率高于所述预定阈值,将所述数据标识指示的数据与所述链接关联存储在缓存中。
12.根据权利要求11所述的装置,其中,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是同一容器的情况下,
所述Web请求识别部件进一步被配置为识别所述Web请求中包含的线程号和用户标识,
所述查询操作识别部件进一步被配置为识别所述查询操作中包含的线程号和用户标识,以及
所述验证子部件被配置为响应于所述Web请求和所述查询操作中包含的线程号和用户标识分别相等,确定所述概率高于所述预定阈值。
13.根据权利要求11所述的装置,其中,在接收所述Web请求的Web容器和发送所述查询操作的数据库容器是不同容器的情况下,
所述Web请求识别部件进一步被配置为识别所述Web请求中包含的用户标识和该用户标识经Web容器转换后的用户标识,
所述查询操作识别部件包括:
第一识别子部件,被配置为识别所述查询操作中包含的用户标识;以及
第二识别子部件,被配置为响应于所述查询操作中包含的用户标识与所述转换后的用户标识相等,识别所述查询操作是针对所述用户的,以及
所述验证子部件包括:
验证单元,被配置如果为所述Web请求和所述查询操作中包含的用户标识相等,则判断所述链接与所述数据标识正确关联的概率高于所述预定阈值。
14.根据权利要求11所述的装置,其中,所述验证子部件包括:
第一确定单元,被配置为在数据库中所述数据标识指示的数据被修改之后,确定针对包含所述链接的另一Web请求返回的数据是否是修改后的数据;以及
第二确定单元,被配置为响应于确定针对该另一Web请求返回的数据是修改后的数据,确定所述概率高于所述预定阈值。
15.根据权利要求10所述的装置,其中,
所述Web请求识别部件被配置为通过在用于调用Web请求的标准函数之前添加代码,识别所述来自用户的用于从数据库获取数据的Web请求,
以及,所述查询操作识别部件被配置为通过在用于执行查询操作的标准函数中添加代码,识别所述针对所述用户向数据库发送的用于从数据库获取数据的查询操作。
16.根据权利要求15所述的装置,其中,
所述Web请求识别部件被配置为识别在所述Web请求被所述用于调用Web请求的标准函数调用的情况下的时间戳,以确定调用所述Web请求的时间,以及
所述查询操作识别部件被配置为识别在所述查询操作被所述用于执行查询操作的标准函数执行的情况下的时间戳,以确定调用所述查询操作的时间。
17.根据权利要求10所述的装置,其中,
所述Web请求识别部件被配置为识别所述Web请求中包含的希望对数据库进行的操作方法,以确定所述Web请求是用于从数据库获取数据的Web请求,以及
所述查询操作识别部件被配置为识别所述查询操作中包含的对数据库进行的操作,以确定所述查询操作是用于从数据库获取数据的查询操作。
18.根据权利要求10所述的装置,其中,所述设定时间是基于多次测量的从用户发送Web请求到该用户从数据库接收到与该Web请求对应的数据之间的时间间隔中的最大值而确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310301249.1A CN104298675B (zh) | 2013-07-18 | 2013-07-18 | 用于缓存管理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310301249.1A CN104298675B (zh) | 2013-07-18 | 2013-07-18 | 用于缓存管理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104298675A CN104298675A (zh) | 2015-01-21 |
CN104298675B true CN104298675B (zh) | 2017-06-16 |
Family
ID=52318403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310301249.1A Expired - Fee Related CN104298675B (zh) | 2013-07-18 | 2013-07-18 | 用于缓存管理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298675B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106790322B (zh) * | 2015-11-19 | 2020-05-12 | 中国移动通信集团公司 | 缓存策略形成方法及装置 |
CN108153777B (zh) * | 2016-12-05 | 2022-02-22 | 北京国双科技有限公司 | 数据访问信息的获取方法及装置 |
CN107508795B (zh) * | 2017-07-26 | 2020-03-13 | 中国联合网络通信集团有限公司 | 跨容器集群的访问处理装置及方法 |
CN107861966B (zh) * | 2017-08-24 | 2020-08-04 | 平安普惠企业管理有限公司 | 缓存检测方法、设备及计算机可读存储介质 |
CN107800767A (zh) * | 2017-09-12 | 2018-03-13 | 努比亚技术有限公司 | 一种访问响应管理方法、服务器及计算机可读存储介质 |
CN110019352B (zh) * | 2017-09-14 | 2021-09-03 | 北京京东尚科信息技术有限公司 | 用于存储数据的方法和装置 |
CN110750498B (zh) * | 2018-07-19 | 2023-01-06 | 成都华为技术有限公司 | 对象访问方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350030A (zh) * | 2007-07-20 | 2009-01-21 | 株式会社东芝 | 用于缓存数据的方法及装置 |
CN103020115A (zh) * | 2012-11-13 | 2013-04-03 | 深圳市同洲电子股份有限公司 | 一种数据缓存的方法、缓存服务器及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402049B2 (en) * | 2010-05-27 | 2013-03-19 | International Business Machines Corporation | Metadata cache management |
-
2013
- 2013-07-18 CN CN201310301249.1A patent/CN104298675B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350030A (zh) * | 2007-07-20 | 2009-01-21 | 株式会社东芝 | 用于缓存数据的方法及装置 |
CN103020115A (zh) * | 2012-11-13 | 2013-04-03 | 深圳市同洲电子股份有限公司 | 一种数据缓存的方法、缓存服务器及系统 |
Non-Patent Citations (2)
Title |
---|
"Transactional consistency and automatic management in an application data cache";Dan R.K.Ports et al.;《Usenix Symposium on Operating Systems Design & Implementation》;20101231;第33卷(第2期);第279-292页 * |
"移动数据库中一种缓存策略";初妍 等;《郑州大学学报(理学版)》;20071231;第39卷(第4期);第48-51页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104298675A (zh) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298675B (zh) | 用于缓存管理的方法和装置 | |
CN107948203B (zh) | 一种容器登录方法、应用服务器、系统及存储介质 | |
CN103299594B (zh) | 用于可扩展的认证框架的系统和方法 | |
CN103475726B (zh) | 一种虚拟桌面管理方法、服务器和客户端 | |
US11711467B2 (en) | System and methods for chatbot and search engine integration | |
US10592399B2 (en) | Testing web applications using clusters | |
KR101719500B1 (ko) | 캐싱된 플로우들에 기초한 가속 | |
WO2020024895A1 (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
WO2020024896A1 (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
US20100306833A1 (en) | Autonomous intelligent user identity manager with context recognition capabilities | |
US11163499B2 (en) | Method, apparatus and system for controlling mounting of file system | |
US11281730B1 (en) | Direct leg access for proxy web scraping | |
JP2023536302A (ja) | サーバレス・マルチテナント・クラウド・サービスに対するシャドー実験 | |
US20140337536A1 (en) | Method and apparatus for data communication | |
US20170126650A1 (en) | Detecting Social Login Security Flaws Using Database Query Features | |
TW202026980A (zh) | 一種電子支付方法、裝置、系統和存儲介質 | |
WO2020024898A1 (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN109697607B (zh) | 一种电子转账方法、装置和存储介质 | |
CN111800511B (zh) | 同步登录态的处理方法、系统、设备及可读存储介质 | |
US9648103B2 (en) | Non-uniform file access in a distributed file system | |
US9398041B2 (en) | Identifying stored vulnerabilities in a web service | |
CN110177096A (zh) | 客户端认证方法、装置、介质和计算设备 | |
CN116132089A (zh) | 一种基于云平台管理的自适应验证方法及系统 | |
CN114297495A (zh) | 业务数据查找方法、装置、电子设备及存储介质 | |
US11138537B2 (en) | Data volume-based server hardware sizing using edge case analysis |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170616 Termination date: 20200718 |
|
CF01 | Termination of patent right due to non-payment of annual fee |