数据库高速缓存的制作方法

文档序号:19250712发布日期:2019-11-27 20:11阅读:299来源:国知局
数据库高速缓存的制作方法

本发明涉及数据库技术。特别地,它涉及高速缓存数据库请求结果。



背景技术:

数据库高速缓存在高速缓存中存储保存在数据库系统中的选择的数据。然后从高速缓存中回答数据库请求以减少响应时间。例如,将经常从数据库请求的选择的数据存储在高速缓存中。数据库请求(针对所述数据库请求,没有数据存储在高速缓存中)在请求时被处理,并且随后从数据库中回答。而且,在请求时利用数据库系统的处理资源和时间处理如下数据库请求:针对所述数据库请求,数据库不包括任何结果。

一种一般方案(例如,由http://www.ehcache.org/documentation/2.8/recipes/cachenull.html上的开源高速缓存ehcache的文档提出的)是在数据库没有输出针对给定请求的结果时高速缓存零值。

在us2010/0036805a1中也描述了高速缓存零或null值,其涉及维护针对数据库请求的输入/输出(i/o)值高速缓存。响应于在数据库处接收到请求,根据预定标准确定是否创建了用于从高速缓存返回结果的高速缓存条目,以用于随后再次接收到相同或类似请求的事件。如果通过处理请求找不到匹配值,那么返回null值并将其包括在高速缓存中。

另外,us2016/0042278a1涉及内容递送网络中内容的预测调整,以刷新存储在一个或多个高速缓存中的内容。来自数据库的所有数据或经常请求的数据部分存储在高速缓存中,从而对数据库的内容进行镜像。取决于内容和/或高速缓存的尺寸,从高速缓存提供所有内容或内容的部分。高速缓存管理确定内容是否陈旧并且要被刷新。

qiongluo等人的论文“middle-tierdatabasecachingfore-business”涉及与web相关的数据库系统,其中由基于浏览器的客户端通信地耦合的web应用服务器通过使用后端数据库来操作。web应用服务器由中间层数据库高速缓存进行扩展,无需对web应用进行任何修改。一种高速缓存方案是全表级高速缓存,根据该高速缓存方案,中间层数据库高速缓存维护后端数据库的表的完整副本。

alexandroslabrinidis等人的教科书“cachingandmaterializationforwebdatabases”描述了web数据库的系统架构以及这种架构中的高速缓存和实现的各方面。



技术实现要素:

第一方面针对一种用于处理数据库请求以从数据库系统的高速缓存检索结果(下文中也称为数据检索请求)的方法。高速缓存存储数据库系统的一个或多个数据库的数据空间的表示。所述表示包括数据库系统的一个或多个数据库的数据空间能够针对其能够输出结果的任何数据库请求的一个或多个结果。通过利用存储的所述表示,高速缓存处的所述方法响应于接收到数据库请求而确定一个或多个数据库的数据空间是否能够输出针对所述数据库请求的一个或多个结果。如果是肯定的,那么返回针对所述数据库请求的一个或多个结果,否则返回无效通知。

另一方面涉及一种用于处理数据库请求的高速缓存,所述数据库请求被配置为执行前述方面的方法。

另一方面针对一种数据库系统,包括被配置为执行前述方面的方法的高速缓存。

另一方面针对一种用于使用高速缓存根据前述方面处理数据库请求的计算机程序,包括存储在计算机可读存储介质上的代码指令,以在计算机上执行所述程序时执行前面所述的方法。

附图说明

将参考附图描述本机制。类似的标号一般指示完全相同或功能相似的元件。

图1是数据库系统的概述,其包括高速缓存和数据库。

图2可视化通信网络中的示例实现。

图3示出了图示高速缓存初始化/更新和高速缓存利用的序列图。

图4用改变历史补充图2的通信网络。

图5可视化存储两个或更多个结果的高速缓存。

图6图示了用于利用无效通知的图1中系统的扩展。

图7示出了图示从数据空间检索附加结果的流程图。

图8示出了图示高速缓存的响应的三个序列图。

图9图示了实现集群负载平衡器的数据库系统的应用。

图10是计算机器的内部架构的示例性示意图。

具体实施方式

在图1中示例性地示出了包括高速缓存101和数据库102的数据库系统100的概述。数据库系统100包括计算机器104,计算机器104包括一个或多个处理器,用于输出包含在一个或多个数据库102中的数据的一个或多个处理结果,并且数据空间能够输出一个或多个结果。高速缓存101被布置为处理从客户端103接收的数据库请求。结果由计算机器104在初始化时(因此也称为预处理结果)和/或是高速缓存101的更新时预处理。因此高速缓存101存储数据空间106的表示105。

数据空间106由存储在数据库系统100的一个或多个数据库102中的数据定义。换句话说,由至少一个数据库102存储的数据形成数据空间106。表示105包括当任意数据库请求在计算机器104上被预处理时,数据库系统100的一个或多个数据库102的数据空间106能够针对所述任意数据库请求输出结果的针对所述数据库请求的一个或多个结果。存储在高速缓存101中的结果(即,表示105)或者是数据空间106的数据的变换,和/或是数据空间106的子集。至少一个数据库102的数据空间106和表示105的非限制性示例在下面给出。

在示例实施例中,数据库系统100的至少一个数据库102是以表形式存储数据空间106的数据的关系型数据库。在其它示例实施例中,数据库102是nosql(不仅是结构化查询语言)数据库,其以半结构化json(java脚本对象表示法)、xml(可扩展标记语言)或其它文档存储数据空间106的数据。但是,实施例不限于示例性提到的数据库,并且适用于保持任何类型的数据的任何类型的数据库系统。

要注意的是,如通常那样,如本文所述的一个或多个数据库102存储有限量的数据。例如,在关系型数据库的情况下,有限量的数据存储在给定数量的数据库表中。而且,如通常那样,如本文所述的一个或多个数据库102采用有限数量类型的检索操作。例如,在sql数据库的情况下,数据检索请求使用指示一个或多个数据库表和键值的select语句。也可以采用更复杂的子操作,诸如join之类。还可以通过定义可允许的键值或键值范围来限制数据检索请求。在任何情况下,假设检索操作的类型/数量以及数据量二者都是有限的,那么如由高速缓存101存储的数据空间106的表示105也是有限的,其中高速缓存101以保持针对数据空间106能够为其输出结果的任何数据检索请求的至少一个预处理结果的方式进行存储。下面进一步给出非限制性用例。

在示例实施例中,客户端103是机器用户,诸如应用、服务器和/或终端之类。

在非限制性示例实施例中,数据库系统100被布置为回答来自客户端103的关于图2中所示的通信网络200中服务器202之间的路由201的可用性的任何数据库请求。在这个示例实施例中,数据库102存储所有路由,这些路由是两个服务器之间的直接连接,其间没有中间服务器。因此,数据库102的数据空间106由相邻服务器之间的这些直接路由的集合给出,并且能够在任何一对服务器之间输出所有可用路由,即,通信网络200中的服务器202的所有置换(permutation)还包括通过直接路由的级联计算出的与中间服务器202的间接连接。

高速缓存101存储数据空间106的表示105,即,通过直接路由(没有中间的其它服务器)或间接路由(具有中间服务器)连接的所有服务器对202的列表。未通过任何路由连接的服务器对不是表示105的一部分,并且因此不存储在高速缓存中。在其它实施例中,表示105至少包括用于每对互连服务器的每个路由。

可以以各种方式初始化高速缓存101(即,由从数据空间106导出的表示105填充)。例如,表示105通过诸如将数据库请求指引到数据库102之类的预处理来导出,并在高速缓存101中存储针对任何请求检索到的至少一个结果。例如,可以对数据库系统100中可允许的所有数据检索请求进行置换并将其指引到数据库102,并且将针对每个请求的至少一个结果存储在高速缓存101中。可选地,避免高速缓存101中的重复以便最小化存储器要求,即,如果表示105已经在初始化阶段期间包括指向数据库102的、针对给定数据检索请求的至少一个预处理结果,那么不再向高速缓存添加针对给定数据检索请求的进一步的结果。

在网络路由数据库系统的示例中,可以通过为每个服务器对检索是否在相应的两个服务器202之间存在路由来完成通过预处理的初始化。每对互连服务器的一个或多个路由201由数据库系统100的计算机器104预处理。通过预处理从数据空间106获得的每对互连服务器的至少一个路由形成表示105并存储在高速缓存101中。在预处理没有输出用于一对服务器的路由201的情况下,这意味着该对服务器的两个服务器202没有通过任何路由连接,并且因此没有结果存储在高速缓存101中。

例如,对于服务器对(1,2),路由“a”存储在高速缓存101的表示105中,作为连接通信网络200中的服务器1和服务器2的路由的结果。在另一个示例中,对于服务器对(2,7),路由“e”被存储为连接服务器2和服务器7的路由的结果。在另一个示例中,对于服务器对(2,7),路由“e”和“f-g”存储在高速缓存101的表示105中,作为连接通信网络200中的服务器2和服务器7的路由的结果。

因此,在这个示例实施例中,高速缓存101在表示105中存储在计算机器104上预处理时输出的针对服务器对202的任何数据库请求的一个路由。在其它示例实施例中,高速缓存101在表示105中存储在计算机器104上预处理时输出的针对任何请求的服务器对202的多个路由或所有路由。在其它示例实施例中,高速缓存101将所有路由存储在高速缓存101的表示105中。

高速缓存101被布置为通过利用存储的表示105来响应于从客户端103接收数据库请求而确定一个或多个数据库102的数据空间106是否能够输出针对数据库请求的一个或多个结果。如果是肯定的,那么高速缓存101返回存储在表示105中的、针对数据库请求的一个或多个结果,否则,高速缓存101返回无效通知,因为数据空间106不能为这个数据库请求输出结果。

在图2的示例实施例中,响应于从客户端103接收到针对通信网络200中的服务器1和服务器3之间的路由的数据库请求,高速缓存返回路由“a-b”作为数据库请求的结果。在另一个示例实施例中,高速缓存返回路由“a-b”、“a-e-h-i-d-c”和“a-f-g-h-i-d-c”作为客户端103的数据库请求的结果。在另一个示例实施例中,在路由“b”和“i”中存在断开,使得通信网络被划分为两个断开的子网。第一子网包括服务器1、2、6、7、8并且第二子网包括服务器3、4、5。因此,第一子网中的服务器1和第二子网中的服务器3之间没有可用的路由。响应于从客户端103接收到针对服务器1和服务器3之间的路由的数据库请求,高速缓存101返回无效通知,因为高速缓存101的表示105没有存储针对服务器1和服务器3之间的连接的路由,因为数据空间106不能输出服务器1和服务器3之间的路由202。

在图2的一些示例实施例中,除了路由之外,结果还包括参数,例如,在给定条件下结果的可用性的政策。网络路由的结果包括例如指示结果的路由或一个或多个子路由仅被单向使用的参数,例如,图2中的路由b仅用于从服务器2到服务器3的方向的通信,但反过来不行。因此,服务器2和服务器3之间唯一可用的连接结果是路由b本身。路由e-h-i-d-c-b由b的单向参数指示为不可用,因为它从c指向b,这不受支持。结果路由b以及e-h-i-d-c-b都可以存储在高速缓存101中,但是伴随有指示相应结果中的路由是否可用的参数。在另一个示例中,网络路由仅在具体时隙可用。例如,如果服务器3、4和5属于另一个网络集群,服务器1、2、6、7和8仅在夜间被共享以支持通过附加资源的处理,那么路由b和i仅限于从晚上10点到早上6点的服务器通信。因此,包括路由b和/或i作为路由或子路由的所有结果都包括指示相应结果何时可用/不可用的时间参数。其它依赖时间的参数是例如消息从起点(origin)服务器发送到目的地服务器的最大允许时间,和/或取决于在将消息发送到下一个服务器进行进一步处理之前处理组合路由上的中间服务器处的消息的既定时间的最大允许时间。在第三个示例中,结果的参数指示谁有资格请求结果,使得结果仅可用于具体的请求源或用户。如果除结果的参数中指示的源之外的另一个源尝试从高速缓存101请求结果,那么结果不可用。

us2010/0036805a1和us2016/0042278a1中的系统和方法响应于第一次接收数据库请求而处理数据库请求,然后当再次接收到该请求时使用高速缓存来从高速缓存回答数据库请求。响应于第一次接收数据库请求,系统没有关于该数据库请求的结果的可用性的信息。因此,尽管由于数据库请求无效最终没有输出结果,但是在数据库请求时也处理第一次接收的数据库请求。在对第一次接收到的数据库请求的处理没有输出结果的情况下,一些已知系统在高速缓存中存储null,以防止系统再次接收到数据库请求时处理先前处理过的不输出结果的数据库请求。相反,本文描述的高速缓存101已经包括数据库系统100的数据库102的数据空间106能够针对其输出结果的任何数据库请求的一个或多个结果。

因此,高速缓存101能够自主地回答任何数据库请求,而无需参考数据库系统100的数据库102。虽然,对于给定的数据检索请求,数据库102可以存储比高速缓存101更多的结果,但是高速缓存101能够返回针对数据检索请求的至少一个预处理结果。如果高速缓存101不包括针对给定数据检索请求的任何预处理结果,那么因此在高速缓存101处已经确定数据库102也不保持任何结果。因此,一个优点是数据库系统100减少一般由与非高速缓存数据相关的无效数据库请求造成的任何处理负载,例如,不输出结果的不可能的搜索。

在一些实施例中,图3中所示的以下两种机制一方面涉及初始化和/或更新高速缓存101中的表示105,另一方面涉及利用高速缓存101以从高速缓存101响应数据库请求。为了初始化或更新302高速缓存101的表示105,第一种机制例如通过计算机器104在数据库系统100的数据库102上生成任何既定的数据库请求。针对任何数据库请求输出的一个或多个结果存储在高速缓存101的表示105中。在处理数据库请求时没有输出结果的情况下,对于这个数据库请求,没有任何内容存储在高速缓存101的表示105中。重复相同的处理,以便重新初始化高速缓存101或执行高速缓存101的完整更新。

在其它实施例中,通过将数据空间106的数据映射到形成表示105的数据的给定变换处理来完成初始化,而不将数据库请求的置换指向数据库102。例如,高速缓存101可以存储存储在数据库102中的数据的物化视图,并且数据检索请求从高速缓存101中检索视图。

与计算机器104上的结果300的初始化或更新分开,从高速缓存101回答301数据库请求。客户端103的数据库请求305在高速缓存101处被接收。如果数据库请求的一个或多个结果存储在高速缓存101的表示105中,那么高速缓存101通过将一个或多个结果返回到客户端103来响应306数据库请求。否则,高速缓存通过返回无效通知来响应306。

在一些实施例中,高速缓存101的表示105包括多个数据记录。每个数据记录包括键-值组合。数据库请求包括一个或多个数据记录的键并且针对数据库请求的一个或多个结果包括所述一个或多个数据记录的一个或多个值。

在一些实施例中,键-值组合表示通信网络中的起点节点和目的地节点之间的连接路径。键指定通信网络中的起点节点和目的地节点,并且值是从起点节点到目的地节点的一个或多个路径。起点节点直接或经由一个或多个中间节点连接到目的地节点。

在示例实施例中,图2的通信网络200中的起点节点和/或目的地节点以及中间节点是由局域网(lan)、无线局域网(wlan)和/或广域网(wan)连接的服务器202。但是,通信网络200中的连接类型不限于服务器或特殊类型的网络。服务器202构成通信网络200,其中服务器202随后或并行地针对共同任务、交换数据或处理操作数据库请求而工作。为了与另一个服务器通信,查询数据库系统100以便确定是否存在到另一个服务器的任何路由和/或哪条路由可用。

在图2的示例实施例中,高速缓存101的表示105通过键-值对为通信网络200中的每对服务器存储一个或多个路由201。键-值对包括作为键的服务器对,其包括通信网络200中的所有服务器202的起点服务器和目的地服务器的置换,以及作为值的起点和目的地服务器202之间的一个或多个路由201。

例如,对于一对服务器(2,3),通信网络中将起点服务器2和目的地服务器3互连的可用路由201是“b”、“e-h-i-d-c”、“f-g-h-i-d-c”。作为服务器对(2,3)的结果,键值对<(2,3),(b)>例如存储在高速缓存101的表示105中。在另一个示例中,存储键-值对<(2,3),(b,e-h-i-d-c)>或者<(2,3),(b,f-g-h-i-d-c)>,其中高速缓存101被配置为存储两个路由201,其中对于每个服务器对可用。在高速缓存101被配置为存储用于任何服务器对的所有可用路由201的又一个示例中,键值对<(2,3),(b,e-h-i-d-c,f-g-h-i-d-c)>存储在表示105中。在子路由b和i被中断并且在起点服务器2和目的地服务器3之间没有可用路由201的示例中,高速缓存101不存储用于服务器对(2,3)的键值对。

在诸如us2016/0042278a1之类的已知镜像系统中,其存储数据库中包括的数据的所有部分并且随后镜像数据库的内容,高速缓存消耗与数据库本身一样多的存储资源。此外,在那些已知系统中并未减少输出结果的处理时间,而是仅从请求时在数据库上处理数据库请求转移到在高速缓存上处理数据库请求。对于客户端,这不会减少任何响应时间-既不针对输出结果的有效数据库请求,也不针对在请求时不输出结果的无效结果。作为键-值对存储针对任何有效数据库请求的预处理结果的高速缓存101不仅如先前所解释的那样立即直接回答任何数据库请求,而且在存储器和响应时间方面以比镜像系统更高效的方式存储这些结果。而且,无效通知立即回答无效请求。此外,任何请求都直接从高速缓存101回答。

在一些实施例中,存储在高速缓存101中的表示105包括比数据库系统100的一个或多个数据库102的数据空间106能够输出的对于一个或多个数据库请求的更少的结果。较少的结果形成结果子空间。结果子空间是基于高速缓存101的表示105中的结果随时间保持有效的概率给出的。在存在至少一个数据库102的数据空间106能够针对其输出多于一个结果的数据库请求的情况下,这多个结果的子集,但不是所有结果,存储在高速缓存101中。在数据空间106仅能够输出一个结果的情况下,这个结果存储在高速缓存101的表示105中。在没有结果被输出的情况下,对于数据库请求,没有任何内容存储在高速缓存101的表示105中。

用于选择比数据空间106输出的结果的数量少的结果的子集的选择标准是高速缓存101的表示105中的结果随时间保持有效的概率。该概率可以以与数据库102中的数据和/或在高速缓存101中的预处理结果相关联的指示符的形式存储。这个概率例如通过评估高速缓存的表示105中的结果的改变频率的历史来获得。在高速缓存101的初始化中或者还在更新高速缓存101时,预先处理包括数据空间106的数据库系统100的数据库102上的任何数据库请求,输出一个或多个结果。可以按间隔或在通过监视数据空间106检测到改变时执行高速缓存101的更新。但是,更新处理不限于那些示例。更新触发结果的重新计算以存储在高速缓存101的表示105中。通过再次处理数据库102上的单个数据库请求或作为任何数据库请求的完全重新计算来获得结果。基于更新历史,获得高速缓存101的表示105中的结果随时间保持有效的概率。

在图4中,图2的通信网络200补充了由于通信网络200的子路由在两天内的中断而引起的改变的历史400。改变的历史可以被存储在数据库系统100的数据库102中、可以通过内部或外部监视而被聚合、或者以任何其它合适的方式实现。根据中断的历史400,起点服务器o和目的地服务器d之间的路由保持不变的概率通过假设过去未被中断的路由201具有更高保持不变的概率并且在将来也不被中断来确定。在不考虑输出三个路由r1:a-b-c-d,r2:a-e-h-i和r3:a-f-g-h-i的历史400的情况下,在12月6日处理起点服务器o和目的地服务器d之间的路由的更新。

考虑过去一天x1中的历史401,该历史显示在12月5日路由r1没有中断,路由r2有2次中断(即,在12月5日在子路由e中表现出2次中断),并且路由r3有3次中断(即,在12月5日在子路由f中表现出2次中断,并且在子路由g中表现出1次中断)。因此,考虑过去一天401的历史,将来保持不变的概率最高的路由是r1。因此,选择路由r1:a-b-c-d并将其存储在高速缓存101的表示105中。

在另一个示例中,考虑过去两天x2中的历史402,即,12月4日和5日。在这个示例中,事实证明,路由r3在将来保持不变的概率最高。因此,将选择路由r3并将其存储在高速缓存101的表示105中。

但是,确定高速缓存101的表示105中的结果随时间保持有效的概率不限于这个示例中的方法。

与其中每次当数据库中的对应数据改变时更新存储在高速缓存中的数据的us2010/0036805a1相反,通过存储在表示105中的结果的有效性来选择要存储在高速缓存101中的结果的优点在于:高速缓存101最佳地保留存储结果与数据库系统100中数据库102的数据空间106输出的结果的一致性。与存储在高速缓存中的结果保持有效的时间相关地,更新次数减少。由此,最小化高速缓存101的更新次数,从而节省用于这种更新的系统资源。

在一些实施例中,存储在高速缓存101中的表示105包括用于数据库请求的两个或更多个结果,其在数据库系统100的一个或多个数据库102的数据空间106上预处理数据库请求时输出。从高速缓存101返回针对数据库请求的一个或多个结果包括返回两个或更多个结果中具有指示随时间保持有效的最高概率的指示符的一个或多个结果。

在示例实施例中,响应于接收到针对这种数据库请求的数据库请求,返回存储在高速缓存101中的两个或更多个结果的全部。在另一个示例实施例中,首先仅由高速缓存101返回具有最高有效性的结果。如果可用,那么返回附加结果,其中从客户端103接收到请求对返回的第一结果的一个或多个替代的附加数据库请求。在示例实施例中,高速缓存101存储高速缓存101的表示105中的结果随时间保持有效的概率连同相应的结果。响应于接收到客户端103的数据库请求,高速缓存101返回具有最高概率的结果。

在其它示例实施例中,高速缓存将两个或更多个结果存储在排序列表中,使得列表中的结果的位置按照最高概率第一的次序指示概率的关系。因此,没有附加的存储器用于存储概率本身。响应于接收到客户端103的数据库请求,高速缓存101返回排序列表的一个或多个第一元素。因此,返回具有最高有效性的结果。

在图5中,在表500中示出了在处理图4中的通信网络200中的所有服务器对的服务器202之间的连接上的任何数据库请求时输出的所有结果。在这个示例实施例中,高速缓存101在表示105中存储其中两个输出结果(如果可用的话)。存储在高速缓存101中的结果通过高速缓存101的表示105中的结果随时间保持有效的最高概率(即,具有针对每个服务器对的所有输出结果的最高有效性)来选择。高速缓存101将用于任何一对服务器502的输出并选择的路由501存储在表示105中的排序列表501中。

在图5的示例实施例中,高速缓存101的表示105为服务器对(1,2)存储在处理针对数据空间106上服务器1和服务器2之间的连接的数据库请求时输出的唯一结果,即,路由“a”。对于服务器对(1,3),数据空间106在处理表500的第二行的四个可能路由s1至s4时输出第四列。在图4中的通信网络200中示出了中断的数量400。例如,对于服务器对(1,3),在表1中示出由一天x1的历史记录和两天x2的历史记录确定的中断次数。

在这个示例中,表示105存储对于每对服务器具有最高有效性的两个结果。因此,对于具有一天x1的历史的一对服务器(1,3),高速缓存101存储s1作为第一结果,指示该服务器对(1,3)具有最高概率,并存储s3作为第二结果,指示服务器对(1,3)的概率低于s1但概率高于从数据空间106输出的服务器对(1,3)的任何其它结果。利用两天x2的历史,高速缓存101出于相同的原因而存储s1作为第一结果,以及s4作为第二结果。

但是,以相同的方式,从数据空间106输出的多于两个路由也存储在高速缓存101的表示105中(如果可用的话)。对于服务器对(1,2),高速缓存101的表示105仅存储路由“a”作为第一结果而不存储第二结果。如果在处理时没有输出结果,那么不在高速缓存101中针对服务器对存储任何内容。因此,高速缓存101能够回答关于两个相应服务器202之间的路由201的可用性的任何数据库请求。此外,示例实施例的高速缓存101被配置为按照最高有效性的次序返回替代结果(如果可用的话)。

在一些实施例中,响应于针对接收到的数据库请求返回无效通知,累积为其返回无效通知的接收到的数据库请求的出现次数。然后,或者通过解决(troubleshoot)识别出的问题或者通过重构,来优化由数据库系统100管理的系统。因此,对于图2的通信网络,响应于确定无效通知的出现次数超过预定义阈值,通过包括新路由来优化通信网络,其中无效通知指示针对其从若干客户端103接收到数据库请求的丢失路由。

在示例实施例中,在高速缓存处接收从客户端103向高速缓存101的数据库请求。高速缓存的表示105没有针对数据库请求的可用结果。为了利用响应于接收到的数据库请求而返回的无效通知,图1的数据库系统100通过对图6中所示的这种数据库请求的附加分析来扩展。响应于向客户端返回无效通知,在高速缓存101的表示105中没有结果可用于其的接收到的数据库请求被存储601。在从客户端103重复接收到相同数据库请求,并且再次针对这个数据库请求返回无效通知的情况下,累积这个请求的出现次数。数据库请求以及对应的累积例如存储在另一个高速缓存600中。在其它示例实施例中,具有对应累积的数据库请求存储在与表示105相同的高速缓存101中。在一些示例实施例中,为所有客户端103共同存储针对其返回无效通知的数据库请求的出现的累积。在其它示例实施例中,分别为每个客户端103存储针对数据库请求返回的无效通知的累积。但是,实施例不限于以这种方式存储数据库请求及它们对应的无效通知的累积。

例如,图6中的数据库请求req003已经在高速缓存101处被接收,并且在#invalid(无效)=5次之前返回了无效通知601。现在,再次收到req003。高速缓存101的表示105仍然没有可用的结果(n/a)。无效通知被返回到客户端103,并且针对req003存储的无效通知的累积601增加1,从而产生req003:#invalid=6。

针对#invalid的阈值602由管理员预先确定或由阈值功能自动预先确定。另外,在一些示例实施例中,为具有对应累积的所有存储的数据库请求共同设置阈值602。在其它示例实施例中,分别为每个数据库请求设置阈值602。在其它示例实施例中,为数据库请求的组设置阈值602。但是,设置阈值不限于这些方法。

在已经返回无效通知的一个或多个存储的数据库请求601的#invalid出现次数超过预定阈值602的情况下,为这些请求生成报告和/或警报并将所述报告和/或警报推送到优化器604。例如,优化器604是评估针对其返回无效通知的频繁接收的请求的管理员。在评估的基础上,执行针对数据库系统100的优化。在另一个示例中,管理员评估关于数据空间的解决问题的报告。在另一个示例中,优化器604是评估报告和/或自动对数据库系统100执行优化调整的软件代理。优化器604的功能和类型不限于这些示例。

例如,关于图4的通信网络,高速缓存101在12月5日重复地从客户端103接收到针对从服务器2到服务器6的通信路由的数据库请求。在子路由e、f和g被中断的时间期间重复接收到该数据库请求,因而在重复接收到该数据库请求时从服务器2不能到达服务器6。对于每次接收到数据库请求,将无效通知返回给客户端103,并且返回针对这个数据库请求的无效通知的出现次数被累积在分开的高速缓存600中。当第四次接收到该数据库请求并且无效通知返回给客户端103时,所述出现次数超过预定阈值,该阈值被设置为例如3。报告(至少包括数据库请求和出现次数)作为警报发送给监视通信网络的软件代理。响应于这个警报,软件代理注意到网络中服务器6不可用的问题并提供故障排除动作。

在另一个示例中,高速缓存频繁地接收关于包括作为目的地服务器的服务器9的路由的数据库请求,该服务器9到目前为止在图2中的通信网络200中当前不可用。服务器9是许多客户103的热门目的地。由于服务器9未连接到通信网络200,因此高速缓存101返回针对包括服务器9作为目的地的所有数据库请求的无效通知。当针对那些数据库请求(这些请求可以不同,但都包括服务器9作为目的地)的无效通知的出现次数超出阈值时,输出一个或多个警报和/或报告并将其发送到例如分析工具。评估一个或多个报告的分析工具总结了许多客户端103要求连接到服务器9以在通信网络中可用。然后可以关于客户端103的要求优化通信网络。

因此,累积数据库请求的无效通知的出现以及当出现次数超过预定阈值时报告和/或发出警报允许对其结果存储在高速缓存101中的数据库系统100或基础系统配置进行优化和/或故障排除。它还允许针对从其接收数据库请求的客户端103的(可能改变的)要求调整数据库系统100。

在一些实施例中,高速缓存101被布置为检索从数据库系统100的数据库102的数据空间106输出的一个或多个附加结果,其中除了从高速缓存101的表示105返回的结果之外还返回一个或多个附加结果。

在示例实施例中,响应于从客户端103接收到数据库请求,高速缓存101附加地针对接收到的数据库请求检索从数据库系统100的数据库102的数据空间106输出的结果。在用于图2的通信网络200的应用中利用高速缓存101的示例实施例中,在高速缓存101处接收来自客户端103的请求针对服务器对(1,4)的可用路由的数据库请求。这个示例实施例中的高速缓存101为任何服务器对存储一个结果(如果可用的话)。对于服务器对(1,4),它存储键-值对<(1,4),a-b-c>。响应于从客户端103接收到数据库请求,高速缓存101检索从数据空间106输出的附加结果“a-e-h-i-d”并返回键-值对<(1,4),a-b-c>和<(1,4),a-e-h-i-d>二者。

除了避免加载无效数据库请求之外,高速缓存101的这个实施例的优点一方面是以存储高效的方式从高速缓存101的表示105回答任何有效数据库请求,并且另一方面在期望时提供数据库请求的替代结果,因此仅在请求替代结果的情况下消耗处理时间。

在一些实施例中,高速缓存101的表示105用至少一个附加检索到的结果来更新。

在示例实施例中,高速缓存101根据图7中所示的流程图从数据库102的数据空间106中检索一个或多个附加结果。这例如在如下情况下出现,其中请求要求比存储在高速缓存101中的结果更多的结果,或者后续请求除了响应于第一请求而来自高速缓存101的至少一个结果之外还要求进一步的结果。响应于接收到数据库请求700,高速缓存101查找701针对数据库请求的结果是否在高速缓存101的表示105中可用。如果这是错误的,因为没有存储结果或者存在指示结果不可用于当前请求的参数,例如,针对图2的网络示例解释的,那么高速缓存101返回无效通知702。如上面所解释的,这个一般路径由图7中从701到702到end以及从703到end的虚线箭头指示。如果结果在表示105中可用,那么返回结果703,如在一般示例中那样。在这个示例实施例中,响应于第一请求,高速缓存101评估来自数据库102的、针对已经返回的结果的补充结果704是否是当前或后续请求所要求的。如果要求一个或多个补充结果,那么高速缓存101尝试从数据库102的数据空间106检索一个或多个补充结果704。从数据库102检索补充结果704的选项由图7中的实线指示。

从数据库102检索一个或多个补充结果704存在不同的可能性。例如,除了来自高速缓存101的返回结果703之外,当前请求或后续请求还要求来自数据库102的所有可用结果,例如,高速缓存101返回具有随时间保持不变的最高概率的结果,但是请求源按照自己的不同标准决定哪一个结果最适合其目的,并且已经返回的结果不太适合那些个体标准,最佳结果的选择取决于自己的标准并且因此需要所有结果。在另一个示例中,要求超出已经从高速缓存返回703的结果之外的一个或多个补充结果。在第三示例中,从数据库102检索704一个或多个补充结果,以核实高速缓存的结果的有效性。检索补充结果不限于这些示例。但是,从数据库102中检索当前或后续请求所要求的补充结果包括用于高速缓存101的协调(reconciliation)705的选项,该选项维持、更新或移除高速缓存101的当前结果和/或其参数,例如指示可用性。当处理高速缓存的更新时,在本描述的进一步过程中解释关于高速缓存101的这种协调705的细节。

在为图4的通信网络200实现高速缓存101的示例实施例中,在12月5日在高速缓存101处接收来自客户端103的请求针对服务器对(1,5)的可用路由的数据库请求。高速缓存101将自上次更新高速缓存101以来输出的最有效路由存储为键-值对<(1,5),a-e-h-i>。在存储了这个结果701之后,高速缓存101尝试检索从数据空间106输出的附加结果703。从数据空间106输出附加结果。在数据库102上处理数据库请求时,输出新路由“a-b-c-d”,因为数据空间106自上次更新以来已经改变,并且具有高速缓存101的表示105中的结果随时间保持有效的最高概率的路由现在与附加地从数据空间106输出的新路由201相关联。路由“a-e-h-i”和“a-b-c-d”的概率被比较706,并且由于新路由“a-b-c-d”具有高速缓存101的表示105中的结果随时间保持有效的更高概率,因此先前存储在高速缓存101中的键-值对<(1,5),a-e-h-i>被包括新路由作为值的键-值对<(1,5),a-b-c-d>代替608。然后将替换后的键-值对607返回到客户端103。

与us2010/0036805和us2016/0042278a1的系统和方法相比,这个实施例的技术效果是,对于无效的数据库请求,仍然避免在请求时间期间数据库系统上的任何负载,因为无效的数据库请求仍然是通过无效通知702直接从高速缓存101回答的。并且另一方面,对于每个有效的数据库请求,高速缓存能够返回一个或多个结果。其中存储在高速缓存101中的结果通过数据空间106的数据变换、数据空间106上的数据搜索、或者从数据空间106中选择变换和/或搜索结果而输出。但是,响应于在高速缓存101处接收到数据库请求,有效数据库请求被部分更新并且有效数据库请求被证明。因此,确保在请求时,返回的结果在处理数据库请求时输出的所有结果中是最有效的结果。

总结上面提到的示例实施例,高速缓存101根据高速缓存101的配置从表示105返回结果。但是,高速缓存101关于返回结果的配置不限于那些示例。根据图8中的示例a,响应于从客户端103接收到数据库请求800a,如果结果781a存储在表示105中,那么高速缓存101返回结果781a。否则,高速缓存101返回无效通知。

根据图8a中的示例b,高速缓存101的表示105存储多于一个输出结果,以及高速缓存101的表示105中的结果随时间保持有效的概率的指示。响应于从客户端103接收到数据库请求800b,高速缓存101返回最有效的结果801b。

根据示例c,高速缓存101的表示105存储在处理时输出的、针对任何数据库请求的一个或多个结果。响应于接收到数据库请求800c,在表示105中存储针对这个数据库请求的结果的高速缓存101检索从数据空间106输出的附加结果802。从数据空间106输出的附加检索到的结果803被可选地用于协调在高速缓存101的表示105中存储的结果和/或除了在表示105中存储的结果之外还将替代结果返回801c到客户端103。在这些示例的任何一个当中,如果针对数据库请求没有结果存储在高速缓存101中,那么高速缓存101响应于接收到数据库请求而直接返回无效通知。因此,在数据库请求时避免了无效数据库请求在数据库系统100上使用的任何处理负载,而与高速缓存101回答有效数据库请求的方式无关。

在一些实施例中,高速缓存101存储两个或更多个表示,其中每个表示105包括数据库102的数据空间106(不同于其它表示的数据库102的数据空间106)能够针对其输出结果的任何数据库请求的一个或多个结果。

在示例实施例中,数据库系统100包括来自不同租户的多个数据库102。租户通过来自其相应客户端103的数据库请求来利用数据库系统100。在一些示例实施例中,客户端103的数据库请求请求在其相应租户的数据空间102上处理的结果。在其它示例实施例中,客户端103的数据库请求请求作为来自不同租户的数据空间106上的处理结果的组合的结果。例如,在包括来自不同提供者(租户)的多个服务器的云环境中,客户端103希望利用来自不同提供商的服务器的资源。

在一些实施例中,高速缓存101的表示105包括针对任何数据库请求的一个或多个预测结果,通过评估结果的历史来预测在处理任意数据库请求时输出的结果。

在示例实施例中,根据通信网络200中的干扰历史400,预先计算下个月每一天的预报(prognosis)。然后,高速缓存101的表示105具有针对下个月每一天展示预测结果的时间粒度,以及高速缓存101的表示105中的结果随时间保持有效的预测概率。根据预测的干扰次数,对于每天存储的每个结果,计算高速缓存101的表示105中的结果随时间保持有效的概率。于是,在高速缓存101处接收的数据库请求包括日期,其中针对所述日期从高速缓存101的表示105返回所请求的结果。

在一些实施例中,基于高速缓存101的表示105中的结果随时间保持有效的概率来更新高速缓存101。

在示例实施例中,数据库系统100由图9中所示的集群负载平衡器900实现,其包括在表示105中针对任何服务器集群901、可用于接收任务的一个或多个服务器902进行存储的高速缓存101。为了分配任务,高速缓存101从负载平衡器900接收数据库请求,其请求包括随后向其分配任务的服务器902的服务器集群901。

集群负载平衡器900为每个服务器集群901存储相应服务器集群901中包括的相应服务器902的利用率(utilization)903。如果服务器集群901包括表现出50%或更低的利用率903的服务器902,那么集群负载平衡器900将任务分配给服务器集群901和/或其中的相应服务器902。

通过由处理机器104在数据空间106上确定相应服务器集群901中表现出50%或更低的利用率903的所有服务器902来初始化高速缓存101。处理为服务器集群a输出904结果4和5,为服务器集群b仅输出结果3,并且为服务器集群c输出结果2、3和4。高速缓存101对于任何服务器集群901仅存储处理时输出的一个服务器。

在相应服务器集群901中的服务器902的利用率小于另一个服务器的利用率的情况下,该服务器可用于从集群负载平衡器900随时间接收分配的任务的概率高于该另一个服务器的概率。例如,服务器集群a中利用率为35%的服务器5具有可用于接收任务的更高可能性,因为服务器5的工作负载低于集群a的利用率为45%的服务器4。服务器集群a的服务器4接近超过50%的利用率,并且因此在这个示例中不再可用于接收任务。

服务器5的利用率可以从35%变为40%或更多。只要它不超过服务器4的利用率,可用于接收任务的概率就仍然高于服务器4的可用于接收任务的概率。因此,存储在集群负载平衡器900的数据空间106中的数据可以改变,但是针对服务器集群a的输出结果(是服务器4和5)仍然保持。另一方面,利用率也可以在不改变输出结果的情况下减小,并且因此不影响将任务分配到服务器集群a中的相应服务器902的决定。关于处理的结果而作出关于分配的决定,例如,当选择一个结果存储在高速缓存101中时,服务器4增加利用率超过50%从而不输出结果,或者服务器4的利用率降低至35%以下并且因此被给予高于服务器5的优选性。因此,在计算机器104上处理结果时,高速缓存101存储具有在处理时输出的结果保持不变的最高概率的结果,而不是存储具有结果与之相关的数据空间106的数据改变的最高概率的结果。

因此,在上述图9的示例中,高速缓存101为服务器集群a存储利用率为35%的服务器4,为服务器集群b存储利用率为30%的服务器3,为服务器集群c存储利用率为25%的服务器2。

高速缓存101从集群负载平衡器900接收数据库请求,以从服务器集群b提供可用于接收任务的服务器902。高速缓存101返回服务器3,因为这是具有随时间保持可用的最高概率的服务器,具有最低利用率903。然后,集群负载平衡器900将任务分配给服务器集群b中的服务器3。

在另一个示例中,每个服务器集群901包括控制相应服务器集群901内的任务分配的附加自身负载平衡器。集群负载平衡器900在数据空间106中存储相应服务器集群901中的所有服务器902的利用率903。在初始化高速缓存101时,高速缓存101为每个服务器集群901存储在相应服务器集群903的所有服务器902中具有最低利用率903的一个服务器902的利用率903。在另一个示例中,存储每个服务器集群901中的服务器902的所有利用率903的均值。因此,高速缓存101为服务器集群a存储59%的平均利用率,为服务器集群b存储61%的平均利用率,并且为服务器集群c存储54%的平均利用率。

高速缓存101从集群负载平衡器900接收数据库请求,以提供在服务器集群901的所有存储的利用率当中具有存储的最低利用率903的服务器集群901。高速缓存101返回具有25%的存储的利用率的服务器集群c或具有54%的存储的平均利用率的服务器集群c。然后,集群负载平衡器900将任务分配给服务器集群c,其中另外包括在服务器集群c中的负载平衡器进一步将任务分配给服务器集群c的一个或多个服务器902。

在另一个示例中,服务器集群c受到故障影响或不再连接到集群负载平衡器900。响应于故障或连接丢失,高速缓存101执行更新。因此,由于高速缓存101的这种更新,在高速缓存101中没有存储针对服务器集群c的结果。可替代地,已经存储在高速缓存101的表示105中的针对服务器集群c的结果用如下参数更新,所述参数定义到服务器集群c的连接不再可用直到另行通知或相应的时间段为止。高速缓存101从集群负载平衡器900接收数据库请求,以提供可用于接收任务的服务器集群c的服务器902。然后,高速缓存101返回无效通知,因为集群负载平衡器900不能将任务分配给服务器集群c。在高速缓存从集群负载平衡器900接收提供具有服务器集群901的所有存储的利用率中的存储的最低利用率903的服务器集群901的数据库请求的示例中。高速缓存101返回服务器集群a,其平均利用率59%存储在用于服务器集群a的高速缓存101中。或者高速缓存101返回服务器集群b,其中具有服务器集群901中的最低利用率的服务器902的利用率30%存储在高速缓存101中。

在这个实施例中,高速缓存101的更新考虑不直接与数据库102的数据空间106的数据相关但是与数据空间106中的数据的聚合相关的输出结果。

如已经提到的,如图3所示的高速缓存300的初始化和/或更新是一种机制,其一般而言与回答请求301的机制分开。但是,可以以任何合适的方式执行高速缓存的更新。因此,更新机制不限于本文描述的实施例。

在一些实施例中,更新高速缓存101包括响应于确定第二结果比第一结果具有随时间保持有效的更高概率而针对相同数据库请求用第二结果替换表示105的第一结果。

在一些实施例中,更新高速缓存101包括替换结果的值。在一些实施例中,更新高速缓存101包括从高速缓存101的表示105中移除存储的结果,其中更新高速缓存101导致由高速缓存的表示存储的结果不再存在于数据库106的数据空间106中。在一些实施例中,更新高速缓存101包括更新结果的一个或多个参数,例如,定义在哪些条件下结果可用。

在一些示例实施例中,在识别出数据库系统100中的数据库102的数据空间106已经改变时,更新高速缓存101的表示105。然后,由计算机器104在识别出改变时重新计算受改变影响的高速缓存101的表示105中的结果和/或它们的参数。在为重新计算的数据库请求输出多于一个结果时,选择具有高速缓存101的表示105中的结果随时间保持有效的最高概率的结果,以在更新时存储在高速缓存101的表示105中。在高速缓存101在表示105中存储多于一个结果的情况下,再次选择具有最高概率的结果。

在一些示例实施例中,高速缓存101在循环调度的基础上更新。因此,为了确定输出的结果或它们的参数是否也已经改变,重新计算数据空间106中与针对其的结果相关的数据自上次调度的更新以来已经改变的任何数据库请求。在一些其它示例实施例中,重新计算任何数据库请求的全部,以更新高速缓存101的整个表示105。例如,在图2的通信网络200中引入新服务器9。高速缓存101的表示105为服务器202的任何置换(即,任何服务器对)存储一个或多个输出结果。因此,通过添加新服务器而被触发的更新使得在考虑包括新引入的服务器9的所有新服务器对的情况下,完全重新计算高速缓存101的表示105。在对任何数据库请求的结果的重新计算输出多于一个结果的情况下,选择一个或多个结果以便以高速缓存101的表示105中的结果随时间保持有效的最高概率的次序存储在高速缓存101中。

在其它示例实施例中,当要求从数据库102检索704一个或多个补充结果时,更新高速缓存101的表示105,如图7中所示。一般而言,在与回答请求的机制301分离的机制300中更新高速缓存101。如已经提到的,然后通过存储的结果703或无效通知702(等效于图3,306)从高速缓存101直接且充分地回答请求。在请求或后续请求要求对从高速缓存101返回的结果的一个或多个补充结果的情况下,存在用于高速缓存101的协调705的附加选项,在一般分离的机制300、301中将这两者组合。

如已经提到的,存在从数据库102检索一个或多个补充结果的不同可能性,并且因此,取决于从数据库102检索到的补充结果,存在用于高速缓存的协调705的不同可能性。如果当前请求或后续请求除了已经从高速缓存101返回的结果之外还要求数据库102上当前可用的所有结果,那么高速缓存101的协调包括在高速缓存101中添加用于该请求的至少一个检索到的补充结果,并且因此或者扩大存储在表示105中的针对请求的结果和/或替换存储在表示105中的针对请求的结果。

为了选择来自所有补充结果的哪些结果要被存储以用于高速缓存101的更新,将随时间保持不变的概率与已经存储在高速缓存101中的结果进行比较。在补充结果的概率与已经存储在高速缓存101中的结果的概率相同或更低的情况下,不执行更新。在补充结果的概率高于已经存储在高速缓存101中的结果的情况下,存储的结果被具有随时间保持不变的该更高概率的补充结果替换。如果从数据库102中的检索指示当前完全没有可用于该请求的结果,例如,在图2中,服务器已经完全从网络中移除,并且根本不再有到这个服务器的路由,那么通过从高速缓存101中移除针对该请求的所有结果来更新高速缓存101。在一些其它示例中,结果及其随时间保持不变的概率等于从数据库102检索到的补充结果,但参数已经改变。于是,更新结果的参数。将检索到的补充结果(无论它们是否被添加到705中的高速缓存)返回703。如前面已经解释的,对高速缓存进行协调仅是从数据库检索补充结果时的附加选项,但不限于在当前或后续请求要求补充结果时执行。

在另一个示例中,当前或后续请求要求从已经存储在高速缓存101的表示105中的一个或多个结果之外检索来自数据库102的一个或多个补充结果。因此,高速缓存101在任何情况下检索与已经存储在表示105中的结果不同的结果或没有结果。然后,将针对不同结果的随时间保持不变的概率与已经存储在高速缓存101中的结果的概率进行比较。在补充结果的概率等于或低于已经存储在高速缓存101的表示105中的结果的概率的情况下,结果不被更新。否则,在高速缓存101的协调中,高速缓存101中具有较低保持不变的概率的已经存储的结果被具有更高保持不变的概率的补充结果替换。还可以更新结果参数的改变。如果没有从数据库102检索到补充结果,那么在这个示例中,这仅仅意味着数据库不输出超出已经存储在高速缓存101中的结果之外的附加结果。由于根本不再存在从数据库102检索的针对请求的结果与只是没有补充结果对于高速缓存101是无法区分的,因此这意味着已存储的结果是否可以通过更新而被删除对于高速缓存101也是无法区分的。因此,在这个示例中,高速缓存101维护或替换存储在高速缓存101中的结果和/或结果的参数,但是在高速缓存101的协调中不从高速缓存101中移除结果。

在另一个示例中,当前或后续请求要求检索一个或多个补充结果704,以便检查返回的结果703的有效性。这例如是在定期地更新高速缓存的情况下的选项,以便仅关于当前请求触发中间更新。在补充结果具有保持不变的相等或更低的概率的情况下,使用从数据库102检索到的一个或多个补充结果对高速缓存101进行协调然后在高速缓存101中维持结果。在补充结果的概率更高的情况下,协调更新高速缓存101。在未从数据库102检索到补充结果的情况下,协调移除存储在高速缓存101中的结果。协调更新在此期间已改变的结果的参数。

基于高速缓存101的表示105中的结果随时间保持有效的概率来更新高速缓存101提供了响应于从客户端103接收数据库请求而将可靠结果返回到客户端103,所述可靠结果与在数据库系统100中从数据库102的数据空间106输出结果的高概率一致。此外,这最小化了如前面已经解释的高速缓存101的更新的次数。

图10是计算机器104的内部部件的图形表示。计算机器104包括指令集,用于在由计算机器104执行时使计算机器104执行本文所讨论的任何方法。计算机器104包括一个或多个处理器1001、主存储器1002和网络接口设备1003,它们通过总线1004相互通信。可选地,计算机器104还可以包括静态存储器1005和盘驱动器单元。可以提供视频显示器、字母数字输入设备和光标控制设备作为用户接口1006的示例。网络接口设备1003至少将计算机器104连接到客户端103以及数据库系统100的数据库102。

在计算机器104还托管高速缓存101的实施例中,高速缓存101可以保持在主存储器101中。实施上述方法中的任何一个或全部的计算机可执行指令集(即,计算机程序代码)完全或至少部分地驻留在机器可读介质(例如,主存储器1002)中或其上(示为功能实体,包括接收和处理数据库请求的功能的数据库请求处理1007,包括确定操作和高速缓存更新功能1008和/或一个或多个处理器1001和/或静态存储器1005)。指令还可以经由因特网通过网络接口设备1003作为传播信号被发送或接收。包括用户接口和网络通信的计算机器104的基本操作由操作系统控制,该操作系统也位于主存储器1005、一个或多个处理器1001和/或静态存储器1005中。

一般而言,被执行以实现本发明实施例的例程(无论被实现为操作系统的一部分还是被实现为特定应用、组件、程序、对象、模块或指令序列,或甚至其子集)都可以在本文被称为“计算机程序代码”,或简称为“程序代码”。程序代码通常包括在各种时间驻留在计算机中的各种存储器和存储设备中的计算机可读指令,并且当由计算机中的一个或多个处理器读取和执行时,使该计算机执行执行操作所需的操作和/或实施本发明的实施例的各个方面的元素。用于执行本发明实施例的操作的计算机可读程序指令可以是例如汇编语言或者以一种或多种编程语言的任意组合编写的源代码或目标代码。

本文描述的各种程序代码可以基于在本发明的特定实施例中实现的应用来识别。但是,应当认识到的是,以下的任何特定程序命名仅仅是为了方便而使用,并且因此本发明不应当限于仅在由这种命名识别和/或暗示的任何特定应用中使用。此外,给定其中计算机程序可以被组织成例程、过程、方法、模块、对象等的通常无限数量的方式,以及其中程序功能可以在驻留在典型计算机内的各种软件层(例如,操作系统、库、api、应用、小应用程序(applet)等)之间分配的各种方式,应当认识到的是,本发明的实施例不限于本文描述的程序功能的特定组织和分配。

本文描述的任何应用/模块中体现的程序代码能够作为各种不同形式的程序产品单独地或统一地分布。特别地,可以使用其上具有计算机可读程序指令的计算机可读存储介质来分布程序代码,以使处理器执行本发明的实施例的各个方面。

固有地是非瞬态的计算机可读存储介质可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实现的易失性和非易失性、可移除和不可移除的有形介质。计算机可读存储介质还可以包括随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存存储器或其它固态存储器技术,便携式光盘只读存储器(cd-rom)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁性存储设备,或者可以用于存储期望信息并可以被计算机读取的任何其它介质。计算机可读存储介质不应当被认为本身是瞬态信号(例如,无线电波或其它传播电磁波、通过诸如波导的传输介质传播的电磁波、或通过导线传送的电信号)。计算机可读程序指令可以经由网络从计算机可读存储介质或外部计算机或外部存储设备下载到计算机、另一种类型的可编程数据处理装置或另一个设备。

存储在计算机可读介质中的计算机可读程序指令可以用于指引计算机、其它类型的可编程数据处理装置或其它设备以特定方式工作,使得存储在计算机可读介质中的指令产生包括指令的制品,所述指令实现在流程图、序列图和/或框图中指定的功能、动作和/或操作。计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的一个或多个处理器。以产生机器,使得指令在经由一个或多个处理器执行时使得执行一系列计算,以实现在流程图和/或序列图中指定的功能、动作和/或操作。

本文使用的术语仅用于描述特定的实施例,而不旨在限制本发明的实施例。还将理解的是,当在本说明书中使用时,术语“包括”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。此外,就在具体实施方式或权利要求中使用术语“包含”、“具有”、“由...组成”或其变体的程度而言,以类似于术语“包括”的方式,这些术语旨在是包含性的。

虽然已经通过各种实施例的描述示出了全部发明,并且虽然已经相当详细地描述了这些实施例,但是意图不是将所附权利要求的范围限定或以任何方式限制到这种细节。附加的优点和修改对于本领域技术人员将是容易看出的。因此,本发明的更广泛的方面不限于所示出和描述的特定细节、代表性装置和方法以及说明性示例。因此,在不背离总体发明性概念的精神或范围的情况下,可以从这些细节中进行偏离。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1