CN1708757B - 透明网络边缘数据高速缓存 - Google Patents

透明网络边缘数据高速缓存 Download PDF

Info

Publication number
CN1708757B
CN1708757B CN2003801023706A CN200380102370A CN1708757B CN 1708757 B CN1708757 B CN 1708757B CN 2003801023706 A CN2003801023706 A CN 2003801023706A CN 200380102370 A CN200380102370 A CN 200380102370A CN 1708757 B CN1708757 B CN 1708757B
Authority
CN
China
Prior art keywords
inquiry
cache
time stamp
result
server
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 - Lifetime
Application number
CN2003801023706A
Other languages
English (en)
Other versions
CN1708757A (zh
Inventor
卡利尔·S.·阿米瑞
斯瑞拉姆·派德马纳伯翰
朴商贤
莱纽·泰瓦瑞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1708757A publication Critical patent/CN1708757A/zh
Application granted granted Critical
Publication of CN1708757B publication Critical patent/CN1708757B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Laminated Bodies (AREA)
  • Adhesives Or Adhesive Processes (AREA)
  • Paper (AREA)

Abstract

本发明提供了一种用于根据本地应用所执行的查询动态高速缓存数据的系统(100)、装置(200)和方法(300),其中该系统包括远程服务器(108)、边缘服务器(109)上的本地数据库(104);该装置包括边缘数据高速缓存(202),该边缘数据高速缓存包括查询评估器(204)、高速缓存索引(206)、高速缓存资源库(208)、资源管理器(209)、包含检查器(207)、查询解析器(205)、及一致性管理器(210),所有这些部件与查询评估器信号通信;该方法用于动态高速缓存该远程服务器的先前数据库查询的结果(412)、将本地数据库与本地服务器相关联、将多个高速缓存结果存储在本地数据库的共享表(503)中、以及将多个高速缓存结果用于满足对于本地服务器的新数据库查询(410)中。

Description

透明网络边缘数据高速缓存
相关申请的交叉引用
本申请要求2002年12月23日提交并与本申请共同转让的、标题为“透明网络边缘数据高速缓存(TRANSPARENTEDGE-OF-NETWORK DATA CACHE)”的美国专利申请10/328,229(代理卷号YOR920020341US1/8728-600)的权益,在此整体引入其公开作为参考。
技术领域
本公开涉及分布式网络之上的数据库高速缓存。
背景技术
分布式web应用的增殖增加了对远程数据库服务器的应用查询的频率。为了改进这种查询的性能并增强数据可用性,这种应用可使用本地数据库高速缓存。例如,内容分布网络中的边缘服务器可使用邻近的数据库高速缓存来加速数据访问和在网络的边缘处更快地生成动态web内容。
在边缘服务器上高速缓存数据的典型技术依赖于:(i)整个数据库的显性复制或其在本地机上的显性部分;或者(ii)对先前查询响应的高速缓存和新查询语句相对于先前已高速缓存的响应的精确匹配。在该复制方案中,由管理员显性指定高速缓存的内容,该管理员必须确定在该边缘节点上将复制数据库表的哪些部分。一旦指定了高速缓存内容,该数据或者作为表名或者作为“物化视图”定义从源服务器复制到边缘高速缓存。
在查询响应高速缓存方案中,动态向高速缓存填充应用查询的响应。高速缓存中的数据通过查询响应的列表来描述,每个响应标志一个查询语句,该查询语句是生成了该响应的查询语句。只有当后续查询通常通过字符串比较匹配于一个对应于已高速缓存的响应的查询字符串时,该响应才用于答复该后续查询。查询响应高速缓存通过对数据进行动态高速缓存而消除对管理员控制的需要,但在分离的区域中低效存储数据,即每个查询响应一个区域。这导致了高的空间开销,因为在许多查询响应中可能复制相同的基本数据。这是因为查询响应常常重叠,通常包括基础数据库的重要和普通部分。此外,因为已高速缓存的查询响应仅用于满足原样重新提交的相同查询,而不能用于可能包含在该响应中的其他查询,所以该方案导致了有限的性能收益。例如,假定一个查找年龄小于30的所有雇员的社会保险号的初始查询。则SQL语句应该是:
SELECT employee.ssn FROM employee WHEREemployee.age<30
假设对于此查询的响应已被高速缓存,且高速缓存接收到一个查找年龄小于25的所有雇员的社会保险号的新查询,则SQL语句应该是:
SELECT employee.ssn FROM employee WHEREemployee.age<25
尽管由于所有年龄小于25岁的雇员也小于30岁,而新查询的响应包括在第一个查询的响应中,但基于精确匹配的查询响应高速缓存不能从该高速缓存来服务于该查询。
总之,显性管理员定义的数据高速缓存需要人工参与,并假定管理员对于每个边缘服务器上的工作负荷和资源具有熟悉的了解。查询响应高速缓存消除了管理员开销,但却遇到了有限的有效性和高的空间开销。而且,一致性管理也由于已高速缓存数据的表示与源服务器中的基本数据之间的不匹配而变得复杂。一致性控制一般需要或者当任何基本表改变时使所有的查询响应无效,或者维护复杂的依赖图。
因此,期望具有一种高速缓存,其不需要管理员指定其内容,或适应根据工作负荷方面的变化或根据该高速缓存所存在的机器上的资源可用性方面的变化的指定的高速缓存。进一步期望该高速缓存在存储开销和一致性维持方面是高效的。
发明内容
用于支持根据本地应用执行的查询的数据动态高速缓存的计算机系统和相应方法解决了先有技术的这些和其他缺点及不利之处。
一种示例性系统包括具有完整数据库的远程服务器;边缘服务器上包括完整数据库子集的本地数据库,该边缘服务器与远程服务器通信;边缘服务器上的本地数据库内的共享表,用于高速缓存来自完整数据库的结果、接收本地生成的数据、并在确保本地数据库与远程数据库之间的数据一致性的同时根据可用存储需求调整高速缓存的内容。
一种示例性装置包括边缘数据高速缓存,该边缘数据高速缓存包括查询评估器、高速缓存索引、高速缓存资源库、资源管理器、包含检查器、查询解析器、及一致性管理器,所有这些部件与查询评估器信号通信。
一种示例性的用于本地服务器满足针对至少一个远程服务器的数据库查询的相应方法包括动态高速缓存该远程服务器的先前数据库查询的结果;将本地数据库与本地服务器相关联;将多个高速缓存结果存储在本地数据库的共享表中;以及将多个高速缓存结果用于满足对于本地服务器的新数据库查询中。
本发明提供了一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;将本地数据库与所述本地服务器相关联;在所述本地服务器的共享表中存储多个高速缓存结果;及使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,其中存储的步骤包括:将在单个数据库表之上的简单和Top-N查询的结果插入到共享基本表中;将关联查询的结果保存在共享关联表中;构成包括共享基本表和共享关联表的共享表资源库;将复合查询的结果存储在分离表中,每个查询结果一个表;以及根据上述多个分离表构成精确匹配资源库。
本发明提供了一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;将本地数据库与所述本地服务器相关联;在所述本地服务器的共享表中存储多个高速缓存结果;及使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,其中所述使用步骤包括以下至少之一:如果查询是复合的,则在精确匹配资源库中搜索对所述新查询的响应;及如果所述新查询不是复合的,则从所述共享表资源库中的数据子选择对所述新查询的响应,其中搜索的步骤包括:如果在精确匹配资源库中发现上述新查询的SQL串,则将高速缓存中对应于该SQL串的查询结果返回给应用;如果在精确匹配资源库中未发现上述新查询的SQL串,则将新查询发送给源服务器;如果在精确匹配资源库中未发现上述新查询的SQL串,则将所接收到的查询结果插入到精确匹配资源库中;以及如果在精确匹配资源库中未发现上述新查询的SQL串,则将高速缓存中的查询结果与该新查询的SQL串相关联。
本发明提供了一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;将本地数据库与所述本地服务器相关联;在所述本地服务器的共享表中存储多个高速缓存结果;及使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,其中所述使用步骤包括以下至少之一:如果查询是复合的,则在精确匹配资源库中搜索对所述新查询的响应;及如果所述新查询不是复合的,则从所述共享表资源库中的数据子选择对所述新查询的响应,其中子选择的步骤包括:利用包含检查器试图证实上述新查询的结果集合的结果包含在已高速缓存查询结果的并集中;如果上述试图证实的步骤成功完成,则以本地表名替代该新查询中提及的表;如果上述试图证实的步骤成功完成,则在共享表资源库之上评估该新查询;以及如果该查询是Top-N查询,则计数从本地高速缓存中接收到的行数,如果该行数未超过应用所请求的行数,则通过重写该新查询并生成重写的查询、将重写的查询发送给源服务器并将从源服务器接收到的结果存储在共享表资源库中、将重写查询的谓词添加到共享表资源库的索引中、在该共享表资源库之上评估该新查询、及将评估步骤的结果返回给应用来进行处理。
本发明提供了一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;将本地数据库与所述本地服务器相关联;在所述本地服务器的共享表中存储多个高速缓存结果;及使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询;确保先前查询的结果的增量一致性,其包括步骤:向数据高速缓存订阅由源服务器传播并且包括对后端表施加的更新、删除和插入的刷新消息;只要当接收到刷新消息时,就将该更新、删除和插入施加到共享表资源库中的本地高速缓存的表;使在改变过的刷新消息中提及的任何精确匹配资源库中的任何共享关联表无效;将等于其结果包括在刷新消息中的任何事务的最大时戳的刷新消息时戳与该刷新消息相关联;将等于最后施加到高速缓存的刷新消息的时戳的已高速缓存设置时戳与先前查询的结果相关联;将新查询时戳与新查询相关联;将新查询时戳与高速缓存的设置时戳相比较;以及如果新查询时戳超过了已高速缓存的设置时戳,则插入对该新查询的响应;以及如果该新查询时戳超过了已高速缓存的设置时戳,则从数据库服务器中检索未决的刷新消息。
本发明提供了一种用于确保从数据库服务器检索到的一组查询结果的增量一致性的方法,该方法包括步骤:向边缘数据高速缓存订阅由源服务器传播并且包括施加到后端表的更新、删除和插入的刷新消息;只要当接收到刷新消息时,就将该更新、删除和插入透明地施加到本地高速缓存的表;将等于其结果包括在刷新消息中的任何事务的最大时戳的时戳与该刷新消息相关联;将等于最后施加到高速缓存的刷新消息的时戳的设置时戳与先前查询的结果相关联;将新查询时戳与新查询相关联;将该新查询时戳与上述设置时戳进行比较;以及如果该新查询时戳超过了该设置时戳,则插入对该新查询的响应;以及如果该新查询时戳超过了该设置时戳,则从数据库服务器中检索未决的刷新消息。
本发明提供了一种系统,该系统包括本地边缘服务器,所述本地边缘服务器用于基于由本地应用执行的查询动态高速缓存数据,并确保从数据库服务器检索的查询结果的集合的增量一致性,该系统还包括:用于动态高速缓存远程服务器的先前数据库查询的结果的装置;将本地数据库与所述本地服务器相关联的装置;在所述本地服务器的共享表中存储多个高速缓存结果的装置;及使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询的装置;用于向数据高速缓存订阅由源服务器传播并且包括施加到后端表的更新、删除和插入的刷新消息的装置;用于只要当接收到刷新消息时,就将该更新、删除和插入施加到本地高速缓存的表的装置;用于将等于其结果包括在刷新消息中的任何事务的最大时戳的时戳与该刷新消息相关联的装置;用于将等于最后施加到高速缓存的刷新消息的时戳的设置时戳与先前查询的结果相关联的装置;用于将新查询时戳与新查询相关联的装置;用于将该新查询时戳与上述设置时戳进行比较的装置;以及用于如果该新查询时戳超过了该设置时戳,则插入对该新查询的响应的装置;以及用于如果该新查询时戳超过了该设置时戳,则从数据库服务器中检索未决的刷新消息的装置。
根据下面结合附图对示例性实施例的描述,本公开的这些和其他方面、特征和优点将变得显而易见。
附图说明
本公开根据下列示例性附图教授一种透明网络边缘数据高速缓存,其中:
图1示出与源服务器连接的两个边缘服务器的示意图;
图2示出图1的边缘服务器的数据高速缓存的方框图;
图3示出图2的边缘服务器数据库高速缓存中的不同类查询的树状图;
图4示出图1的边缘服务器的整个查询处理的流程图;
图5示出图2的数据高速缓存所使用的普通模式共享存储技术的示意图;
图6示出在图1源服务器中的同一表上的两个查询的数据表示例;
图7示出一致性维护协议的示意图;
图8示出考虑了一致性的查询处理算法的流程图;
图9示出用于将结果插入高速缓存的算法的流程图;
图10示出用于执行更新事务的算法的流程图;以及
图11示出用于调整高速缓存占用空间的后台高速缓存清除算法的流程图。
具体实施方式
本公开的实施例提供了一种要由本地机维护的允许对于远程服务器的数据库查询的动态数据库高速缓存。该高速缓存利用本地数据库引擎维护先前查询结果的部分的但语义一致的“物化视图”。其被基于应用查询流而动态填充。工作于查询谓词的包含检查器用于确定新查询的结果是否包含于已高速缓存的结果并集中。普通本地表用于在重叠查询结果之间共享可能的物理存储器。通过将插入、删除和更新从源数据库传播到它们的已高速缓存本地副本,来维护数据一致性。后台清除算法通过驱除过剩的由一致性协议传播的行以及属于已标记要从该高速缓存驱除的查询的行,来持续或周期性删除普通本地表的内容。术语“查询响应”和“查询结果”在本公开中交替使用。
在下面的描述中,下列定义可能有助于理解示例性实施例的原理和/或操作:
数据库表:由关系数据库系统定义的关联表。
查询谓词:查询中指定的约束条件(例如SQL语句中WHERE子句),其用作选择在查询结果中返回基本表中的哪些行的标准。
查询结果:对数据库系统的SQL查询所返回的响应。查询结果看起来像具有行和列的表。
查询结果集合:对应于多个查询的多个结果集合。
增量一致性:数据库高速缓存中的数据在给定时间窗内相对于源数据库中的数据保持一致的需求。准确地,它意指已高速缓存数据在当前时刻Tc的状态与源数据库在时刻Tp的过去状态一致,其中Tp在预定的最大时间窗内。
查询/事务处理时戳:服务器生成的单调递增且与在源服务器上执行的所有查询和事务相关的唯一数字。该时戳反映了事务或查询相对于并发操作的序列顺序。
刷新消息:由源服务器发送到边缘高速缓存、反映最近对源数据库中表的改变(例如插入、更新、删除语句)的消息。对基本表的变化可在多个刷新消息中分批处理,但这些刷新消息以它们所报告的变化发生顺序进行传播。
立即更新可见性:在应用成功完成更新后,该同一应用查询必须查看对数据库更新的结果的属性。
单调状态转换:由应用提交给高速缓存的两个连续查询将查看及时前进的数据库状态的属性,其中第二个查询在接收到第一个查询的响应之后提交。也就是说,第二个查询将查看到比第一个查询查看到的状态在时间上是新近的或更近的数据库状态。
如图1中所示,具有“边缘数据高速缓存”的示例性网络实施例由参考标号100统一表示。网络100可以是较大规模应用系统的一部分。网络100包括连接到执行web请求的客户机的两个边缘服务器109和110,这两个边缘服务器还通过网络连接107连接到对主数据库和web站点提供宿主的源服务器108。源服务器108包括数据库101、应用服务器102和web服务器103。边缘服务器109、110每个都包括应用服务器105和web服务器106。然而,边缘服务器不具有源站点中存储的整个数据库的拷贝。而是,它使用新的边缘数据高速缓存104。边缘服务器接收到对动态内容的请求,且由边缘应用服务器105中存在的应用部件处理该请求。这些部件发出数据库查询,其被边缘数据高速缓存104截取并从本地数据库中对其进行处理,如果可能的话。如果该查询不能由本地数据库处理,则边缘数据高速缓存104向源数据库101转发该请求并从那里检索回结果。
转到图2,边缘数据高速缓存由参考标号200统一表示。边缘数据高速缓存200包括与主要部分202连接的Java小服务程序201。主要部分202包括JDBC接口203,其以信号通信与查询解析器205、包含检查器207、查询评估器204、高速缓存索引206、本地资源库208、一致性管理器210和资源管理器209连接。高速缓存功能实现于下列部件中:
查询解析器205将SQL串转换为“查询语句”数据结构,标识各列的列表的分析树、目标表以及该查询所访问的各种子句。具体地,将WHERE子句解析为以AND-OR规范形式存储的布尔判断。这允许包含检查器对查询谓词对执行等价和包含操作。
查询包含检查器207确定新查询的结果是否包括在先前已高速缓存的查询的结果中。包含可以被检查为对于较早查询、较早查询的真子集或多个较早查询的并集的真子集的精确匹配。
高速缓存索引206提供包含检查。当查询谓词复杂或已高速缓存查询的集合太长时,包含检查可能在计算上是高成本的。当接收到一个新的查询时,不是相对于所有先前已高速缓存的查询进行检查,而是仅集中于作用于相同表和列的查询。该高速缓存索引将已高速缓存的查询根据表名和列名组织在多级哈希表中。
查询评估器204是高速缓存的核心模块,其包括高速缓存逻辑。它确定访问是命中还是未命中,及在未命中时由后端返回的结果是否应当插入该高速缓存中。在将未命中的查询传递给后端以预取数据和改进高速缓存性能之前,它还可能重写这些在高速缓存中未命中的查询。
资源管理器209维护关于命中率和响应时间的统计数据,并维持高速缓存配置参数。它可改变配置参数以适应某些工作负荷,如果所收集到的统计数据指示这样一个需要的话。
高速缓存资源库208存储结果。在高速缓存未命中时,查询结果按照高速缓存评估器所确定的存储于本地数据库表中。本公开的实施例使用混合物理存储策略。一些查询使用每个查询结果一个表的模式,而其他查询则通过部分填充后端基本表的本地副本来共享物理存储器。
一致性管理器210响应从后端数据库接收到的刷新消息,对本地高速缓存的数据进行更新。
操作中,一个查询源自应用或应用部件,诸如Java小服务程序201。数据库高速缓存202接收到该查询。具体地,高速缓存203中的JDBC接口适配器负责与应用接口。该接口适配器是Java JDBC标准定义和所需的一组类的实现。然后,“查询语句”被传递给查询评估器204。该查询评估器是负责决定是本地还是远程执行该查询并负责控制高速缓存的操作的模块。在接收到查询语句时,查询评估器通过调用查询解析器205来解析所接收到的语句。该解析器将该语句分类到四类中的一类。该语句的处理依赖于其查询类别。
现在转到图3,参考标号300表示一个查询树。查询树300示出了不同的查询类别。高速缓存301接收的查询被组织为两类,可包含检查查询302和不可包含检查查询303。已高速缓存的可包含检查查询能满足任何其结果能被证明是已高速缓存的查询结果的子集的随后查询。作用于单个表或关联多个表、但不包括group-by子句且不包括合计运算符的查询作为可包含检查查询高速缓存。它们可进一步分为两类:全部结果或简单查询304和部分结果或Top-N查询305。
可对不可包含检查查询进行高速缓存,但使用SOL串的精确匹配来执行匹配。它们进一步分为两类:合计查询306或复合子句查询307。使用UDF、子查询或group-by子句的复合查询不由包含检查器处理,其作为精确匹配高速缓存。在其选择列表中使用诸如MIN、MAX、和AVG的合计运算符合计数据的查询也可作为精确查询高速缓存。但是,合计查询306可通过在其选择列表中插入合计运算符而转换为可包含检查查询302。当所估计的益处相当大时,高速缓存进行优化。
简单查询的处理如下。简单查询是那些其结果是基本表的行和列的子集的查询。因此,简单查询不具有任何“GROUP BY”子句、子查询、或用户定义的函数。它们是非Top-N查询,其根据使用基本比较原语的WHERE子句简单选择单个表或多个表的关联的一部分。下面给出简单查询的一个例子:
SELECT employee.id FROM employee WHEREemployee.age<25
如图4中所示,参考标号400表示高级处理算法。高级处理算法400用于处理高速缓存命中或高速缓存未命中。在接收到一个查询时,高速缓存索引用于检索对于同一表列表和列列表的查询。然后,在判断块410,调用包含检查器,以确定此查询是否包括在这些先前已高速缓存的查询中。
在高速缓存命中的情况下,在功能块412,对本地高速缓存执行查询,并返回结果。功能块412还将该查询发送给高速缓存资源库414,功能块412从该高速缓存资源库414接收结果。在高速缓存未命中的情况下,在将该查询发送给后端服务器之前,在功能块416和418重写该查询。进行下面的优化。首先,扩充选择列表,以包括在WHERE子句、order-by子句和having子句中提及的列。这一扩充的目的在于最大化能够执行在该高速缓存中命中的其他查询的可能性。第二,还在选择列表中添加主键列。高速缓存主键列对于在多个具有重叠结果的查询检索同一基本表的相同行时防止重复行被该高速缓存是需要的。在高速缓存未命中时,由后端返回的结果通常不被插入到高速缓存中。在判断块420处,可使用成熟的基于历史的算法,以在功能块422决定那些查询值得高速缓存。结果作为输出被提供,并被发送到高速缓存资源库414。
Top-N查询的处理如下。Top-N查询从通常根据order-by子句存储的结果集合的开始处获取指定数量的行。查询包含和评估算法不同于简单全部结果查询的情况。通过取消Fetch子句,将Top-N查询转换为简单查询。如上面所解释的那样对这些简单查询执行包含。在最后的步骤中,考虑Fetch子句。应该注意,虽然基本查询(没有Fetch子句)是高速缓存命中,但Fetch子句可使它成为高速缓存未命中。例如,考虑下面的两个查询Q1和Q2:
Q1:SELECT id FROM item WHERE cost<15 ORDER BY costFFNRO 20
Q1:SELECT id FROM item WHERE cost<5ORDER BY costFFNRO 20
如果这两个查询都不存在FETCH FIRST 20 ROWS ONLY算法(“FFNRO 20”)子句,则第二个查询的结果将包括在第一个查询的结果中,即高速缓存命中。但是,当存在该子句时,通过仅仅对查询语句的检查是不保证高速缓存命中的。这样,对Top-N查询的包含检查处理中的第二步是试图对已高速缓存数据进行本地执行。如果检索到了足够的行,则认为该查询是一个高速缓存命中,否则,认为它是一个高速缓存未命中。这种类型的高速缓存未命中称作“部分命中”,因为在本地高速缓存中仅发现了结果的一部分。
如果包含检查未发现任何匹配查询或结果集合不具有足够的行,则将原始查询QN转换为修改查询QN’,其中在Fetch子句中的N的值由较大N’的值(N’=N*扩充-倍数)。例如,在该试验中的默认倍数是2,请求取两倍数量的行。检索到多于应用所请求的行是一个试探,目的在于减少后一“部分命中”查询、即通过了包含检查步骤而未能发现所需数量的行的查询的情况。
合计查询的处理如下。合计查询在其选择列表中具有合计运算符(例如,MAX、MIN、AVG、SUM),或者是可包含检查的。考虑下面的查询,Q3:
Q3:SELECT MAX(cost)FROM item WHERE id=10
对于命中的匹配以两个步骤进行。首先,根据SQL串对Q3的精确匹配进行检查,并将整个结果集合返回给应用。接着,如果未发现精确匹配,则通过移除合计运算符将原始查询Q3修改为查询Q4:
Q4:SELECT cost FROM item WHERE id=10
如果对于修改后的查询Q4发现了包含匹配,则对本地高速缓存执行原始查询Q3。本地合计cost,并将结果返回给应用。在高速缓存未命中时,修改后的查询Q4在后端执行。如果结果集合大小在阈值内,则将这些结果存储在相应的本地表中,并本地执行原始查询。这使得该高速缓存能够服务于以后具有不同合计运算符的查询。如果结果集合大小出现太长,则原始查询Q3被发送给后端,并将结果存储在新的精确匹配表中。这允许该高速缓存能够服务于任何以后具有严格相同合计条件的查询。这一试探目的在于增加高速缓存命中率,而不会过度增加高速缓存的大小。
复合查询因为复合子句(例如,在WHERE子句中用户定义的函数或子查询)或因为group-by子句而是不可包含检查的。group-by子句生成可仅由具有严格相同的group-by子句和WHERE子句的查询使用的合计数据。同样地,包含检查是不充分的。而是,这种查询的结果存储于分离的结果表中,由查询的SQL串索引。对于这种查询的包含检查是基于SQL串的精确匹配的。这一查找过程是非常快速的,因为它是基于具有作为键的SQL串的哈希表之上的。如果该原样SQL串提交给高速缓存,则对相应的结果表执行本地查询,以检索整个表(即本地执行“SELECT*FROM LOCTAB”)。应该注意,这种查询是成本不高的,在边缘服务器上具有最少的处理时间。
转到图5,参考标号500表示本地资源库。本地资源库500示出查询结果怎样存储于本地高速缓存资源库501中。资源库501被分为两部分,一个用于存储复合或精确匹配查询502,而另一个用于存储可包含检查查询503。精确匹配查询存储于分离的表中,其仅用于响应其描述与已高速缓存查询的SQL串匹配的新查询。例如,查询Q5 504和Q6 505存储于分离的表中,而不管它们的结果是否重叠。
可包含检查查询存储于共享的表中。在同一基本表之上的查询存储于该表的同一本地副本中。例如,该图假定两个查询Q7和Q8从同一表中“SELECT”。由查询Q7 506检索到的元组被首先插入到高速缓存中。然后,由第二个查询Q8 507获取的行被插入到同一表中。当Q8的结果被插入时,已有行以新获取的值进行更新。因此,两个不同查询获取的相同行在该高速缓存中不重复。因为在将所有查询发送到后端服务器之前,要重写它们以获取主键,所以会发现相同的行。
现在转到图6,参考标号600表示高速缓存表结构。高速缓存表结构600示出在同一数据表(这里称作“employee”)之上的两个查询的特定示例,并示出它们的结果数据结构601、602怎样存储于边缘数据库高速缓存中的同一本地表603中。
如图7中所示,参考标号700表示一致性协议。一致性协议700包括边缘服务器部分701,其与后端服务器部分702信号通信。边缘服务器部分701包括DBProxy单元,其与高速缓存资源库704信号通信,以插入查询结果并执行查询。改变APPLY单元705与高速缓存资源库704信号通信,用于刷新表。
后端服务器部分702包括DBMS单元706,其与DB代理单元703信号通信,用于接收查询并提供结果。DBMS单元706还与另一高速缓存资源库707信号通信,用于对高速缓存资源库707进行写和读。高速缓存资源库707与变化捕获单元708信号通信,用于读取近来写入的数据。变化捕获单元708又以信号通信与变化施加单元705连接,用于刷新消息。
这样,通过订阅由源服务器传播的更新流,确保了数据一致性。传统物化视图方案通过对基本数据中的变化(“增量”)重新执行视图定义,来更新已高速缓存的视图。但是,因为边缘数据高速缓存高速缓存的潜在的大量查询(“视图”),所以其需要更有效的机制。由于对已高速缓存的数据作为后端表部分填充的副本进行维护,所以在源处对基本表所提交的改变可以简单“照原样”传播到已高速缓存的版本,而无需重新执行这些查询。将对基本表的更新、删除和插入(“UDI”)传播并施加到边缘高速缓存的部分填充的副本中。以后将在该高速缓存上执行的查询将从这些新传播的变化中检索出任何匹配的元组。这一方案假设大多数web环境特有的缓慢改变数据的特点,并丢弃潜在的不必要的数据传播,以降低判断已高速缓存的视图应怎样更新的处理开销。但是,当一个表正在经受繁重的更新工作负荷时,高速缓存资源管理器可以在指定时期内禁用本地副本。
每当可能时,由边缘应用发出的只读查询可从高速缓存中得到满足。更新事务通常被发送给后端数据库执行,而不是首先将它们施加本地高速缓存。因为边缘数据高速缓存是为大规模使用而设计的,所以一致性协议必须尽可能的松散地与源连接。因此,确保高速缓存一致性的责任尽可能多地落在了边缘高速缓存上,在该边缘高速缓存上资源更加自然地分布。后端服务器应该仅负责周期性的更新传播,它是一个可以卸载到分离过程或机器上的任务。尽管提供较强一致性保证可能引起会限制高速缓存有效性的高成本,现在描述一些诸如立即更新可见性和增量一致性的重要一致性保证怎样可以得到确保的问题。本公开依赖于数据传播器,其捕获所有对源处的表的UDI,并将它们打包在“刷新消息”中转发给边缘高速缓存。将数据变化传播给它们的事务标识符所标记的边缘处,并以事务提交顺序将它们施加到边缘高速缓存。将进入的反映在源站点处提交的事务结果的UDI流施加到本地已高速缓存的表中。
由于UDI以时戳顺序传播并施加到高速缓存中。在该部分中所使用的所有时戳指后端服务器侧提交时戳,所以高速缓存中各元组的值必须反映对应于来自源的上一个传播消息的时戳的数据库状态。更准确地,传播消息的时戳是包括在该消息中的任何更新事务中最大的时戳。因为本地表可以通过传播消息以及通过在未命中时的查询结果插入进行更新,所以在确保增量一致性时出现了挑战。
所保证的一致性属性。高速缓存为应用保证几个重要的一致性属性,即增量一致性、单调转换、和立即更新可见性。高速缓存对于应用来说呈现为真实后端数据库。但是,其内容通常不是与那些存储在后端数据库中的内容同步的。因为高速缓存向应用反映一个可能不同于当前状态的状态,所以其“输出”一个数据库的给定状态。增量一致性的属性要求高速缓存当前输出的数据库状态始终对应于数据库在以前时间点时的过去状态。输出状态与实际状态之间的延迟也是受限的。单调状态转换的属性意味着高速缓存所输出的数据库状态在时间上仅向前移动。立即更新可见性的属性要求如果应用提交一个更新,并随后发出一个查询,则该查询应该观察更新(和所有先前更新)的结果。
保证增量一致性和单调转换。假设高速缓存最初与一分钟前的数据库状态一致。如果一个在该高速缓存中未命中且在源处执行的最新查询的结果被插入,则该高速缓存将包括旧数据与新数据的混合。增量一致性要求已高速缓存的数据总是与数据库的单个过去版本一致。假定一个查询在源处原子地执行。当一个查询未命中且远程执行时,服务器返回其在该查询执行时的最后提交时戳及结果。
转到图8,参考标号800表示查询处理算法。查询处理算法800考虑一致性,并包括用于根据查询的包含检查记录高速缓存命中的功能块801。功能块801将控制传递给判断块802,以进行判断是否出现了高速缓存命中。如果确实出现了命中,则将控制传递给功能块803,以执行共享高速缓存的锁定、查询的本地执行、及共享高速缓存的解锁。但是,如果在块802未出现命中,则将控制传递给功能块804,以远程执行该查询、并将控制传递给判断块805。块805判断该远程执行的查询是否成功。如果成功,则将控制传递给返回块806,以返回已高速缓存的结果“rc”。如果未成功,则将控制传递给判断块807,以判断该结果是否仅是部分的。如果是,则将控制传递给功能块808,以独占地锁定该高速缓存、将结果插入到结果集合中、传播来自服务器的其他信息、并解锁该高速缓存。功能块808将控制传递给返回块809,以返回结果集合“rs”。如果块807的结果是假或否,则将控制直接传递给返回块809。
在操作上,在块807,通过将该查询的时戳与从源服务器接收到的上一个传播消息的时戳cache_ts进行比较,来开始结果插入。应该指出,在附图中,查询和高速缓存时戳分别由它们的长名query_ts(“tq”)和cache_ts(“tc”)来指示,而在别处,由它们的长或短名来指示。如果query_ts大于cache_ts,则该查询观察到了比高速缓存的状态更近的状态。在这一使用情况下,在块808,首先插入未命中的结果,并从源服务器中抽出任何未决的传播消息,以将整个高速缓存快进到更后的时间。最后,将该查询添加到索引中。但是,如果cache_ts大于query_ts,立即插入未命中的结果可能将已高速缓存的数据恢复到过去的值,撤销传播消息所施加的改变且不能满足单调性需求。由于这是一个罕见的竞态条件,所以在这种情况下结果的插入可能被跳过。这通常仅将对该查询的高速缓存延迟到一个后续未命中查询在插入结果时成功时,并且不会严重危及高速缓存有效性。应该指出,在块808中,作为propagate_from_server()的副作用,cache_ts可能会增加。
现在转到图9,参考标号900表示用于将结果插入到高速缓存中的算法。循环块901执行对于查询结果中的每个元组的循环。块901的循环包括判断块902,其用于判断该元组是否在该高速缓存中。如果该元组在该高速缓存中,则将控制传递给功能块903,以更新该元组。如果该元组不在该高速缓存中,则将控制传递给功能块904,以插入该元组。这样,在操作中,对高速缓存的结果集合插入如下进行:当在高速缓存中插入一个结果集合时,在块903,以新值复写已有的行,而在块904,将非已有行插入到表中。
如图10所示,参考标号1000表示用于执行更新事务的算法。功能块1001执行对于结果“rc”的远程查询,并将控制传递给判断块1002。如果该查询成功,则块1002将控制传递给返回块1003,以返回结果“rc”。如果该查询未成功,则块1002将控制传递给功能块1004,以从服务器传播该数据。块1004将控制传递给返回块1005,以返回结果“rc”。
立即更新可见性是这样保证的。将边缘应用提交给高速缓存的更新事务传送到源数据库(块1001)。此外,在更新事务完成之后,可在将更新结果返回给应用(1004)之前,通过从源数据库中抽出它们而快速获取更新的结果。
高速缓存空间开销可通过高速缓存置换来调整。为了限制空间开销并优化通常是有限的边缘资源的使用,边缘数据高速缓存依赖于后台垃圾收集进程,其从高速缓存安全驱除不用的数据,同时保持数据一致性。具体地,高速缓存置换的目的在于最大化有限数量可用空间的高速缓存的益处。与传统文件和存储页的置换形成对比,可在多个查询之间共享基本行。
高速缓存置换在本地数据库的使用达到高水印(“HWM”)值时触发。然后,置换开始,直到空间足够空闲并达到低水印(“LWM”)值之下时为止。在没有空间在本地表中插入更多行或创建新表时,不会按照对于一个查询未命中的需要触发置换。置换是后台进程,其可期望与查询服务和更新操作并发进行。
转到图11,参考标号1100表示高速缓存清除算法。算法1100包括功能块1101,其用于扩充表,以添加新列“accessedFlag”。块1101将控制传递给功能块1102,用于为本地表中的所有行将“accessedFlag”重置为假。块1102将控制传递给功能块1103,用于确定将保留在高速缓存中的查询的集合“S”。功能块1103将控制传递给功能块1104,用于重新执行集合“S ”中的所有查询,并将任何所选择行的“accessedFlag”设置为真。然后,块1104将控制传递给功能块1105,用于删除其“accessedFlag”为假的所有行。
用于高速缓存清除的算法1100称作组置换。此算法是实现简单的,不会增加命中、未命中、或更新传播的开销。在块1103,根据置换策略,标记一组“牺牲”查询,以便从高速缓存中删除。为了确保属于“牺牲”查询的非重叠行被正确标记,执行下面的步骤。首先,在块1102,将实现为在本地表创建期间定义的控制列的已访问标志与所有已高速缓存行关联,并被设为假。然后,在块1104,在后台执行非牺牲查询。这一后台执行可发生于扩充时期,以不会影响前台查询的性能。每当查询执行时,为任何所选择的行将控制列中相应的项设为真。在块1105,在这一执行周期结束时,任何其控制列(已访问标志)仍然为假的行可被安全删除。为了在垃圾收集周期已启动执行之后防止由高速缓存未命中或由一致性管理器插入或更新的行的删除,设置任何已更新或插入到本地表中的行的控制列。
在一种情况下,本公开的实施例获得了两个有利方面:查询相应高速缓存的益处,具体地,简易管理和适于在工作负载或在资源可用性方面的变化的能力;以及基本表复制的益处,具体地,非冗余数据存储的空间效率,及支持有效的基于更新的一致性协议的能力。
因此,本公开的一方面在于本地机用于通过在先前查询的动态高速缓存结果中应用高速缓存策略,来满足对于至少一个远程服务器的数据库查询。本公开的实施例的另一方面在于本地数据库与本地机相关联,并用于在共享表中存储多个查询结果。本公开的实施例的又一方面在于通过应用作用于查询谓词的包含检查器,将本地存储的查询结果用于满足新查询。包含检查器确保查询谓词所定义的新查询请求的数据逻辑上包括在已高速缓存于多个已高速缓存查询结果中的数据集合中,其是由先前查询的谓词并集所描述的。
本公开的实施例的另一方面在于可能时将存储在边缘高速缓存中的数据组织为在源数据库中定义的表的“部分副本”。从源服务器接收到的查询结果被插入到本地数据库中。将构成同一基本表的查询结果插入到同一本地高速缓存版本的基本表中。本公开的实施例的又一方面在于诸如包含子查询、合计或用户定义的函数的复合查询的结果本地存储为多个表,一个结果一个表,其中复合查询的结果不是简单的基本表的行和列的子集。
本公开的实施例的又一方面在于它是透明的,不需要对应用进行改变。此外,由于高速缓存逻辑存在于数据库之外,所以它与任何后端或本地数据库是兼容的,且不需要对数据库服务器进行改变。本公开的实施例的另一方面在于通过将对源处的基本表所发生的改变传播到边缘高速缓存,并通过在处理进入的查询时应用明了一致性的算法,来维护本地高速缓存的数据的一致性。本公开的实施例的又一方面在于高速缓存可通过从本地数据库中牺牲无用查询结果,而不危及一致性或正确性,调整本地使用的空间数量。
根据这里的教授,本领域的普通技术人员可以容易地探知本公开的这些和其他特征和优点。应该理解,本公开的教授可以各种硬件、软件、固件、专用处理器或它们的组合的形式来实现。
本公开的教授可以实现为例如硬件和软件的组合。此外,优选地,软件以有形实现于程序存储单元上的固件来实现。该软件可以上载到包括任何适当体系结构的机器上并由其执行。优选地,该机器实现于具有诸如一个或多个中央处理单元(“CPU”)的、随机存储器(“RAM”)、及输入/输出(“I/O”)接口的计算机平台上。该计算机还可包括操作系统和微指令代码。这里所描述的各过程和功能可以是可由硬件执行的微指令代码的一部分、或软件的一部分、或任何它们的组合。此外,各种诸如附加数据存储部件的其他外围部件可以与该计算机平台相连。
应该进一步理解,因为附图中所示的某些组成系统部件和方法优选以软件来实现,所以这些系统部件或处理功能块之间的实际连接可依本公开被编程的方式而不同。给定这里的教授,本领域的普通技术人员将能够设想本公开的这些和类似的实现或设计。
尽管这里参照附图对示例性实施例进行了描述,但应该理解,本公开并不限于这些确切的实施例,本领域的普通技术人员可以在其中实现各种变换和修改,而不脱离本公开的范围和实质。所有这样的变换和修改都旨在包括在如所附权利要求中陈述的本公开的范围内。

Claims (11)

1.一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:
在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;
将本地数据库与所述本地服务器相关联;
在所述本地服务器的共享表中存储多个高速缓存结果;及
使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,
其中存储的步骤包括:
将在单个数据库表之上的简单(304)和Top-N(305)查询的结果插入到共享基本表中;
将关联查询的结果保存在共享关联表中;
构成包括共享基本表和共享关联表的共享表资源库;
将复合查询的结果存储在分离表中,每个查询结果一个表;以及
根据上述多个分离表构成精确匹配资源库。
2.权利要求1的方法,其中插入的步骤包括:
只要首先接收到对于基本表的简单查询,就在高速缓存中创建单个本地表,以对应于源服务器中的基本表;
将上述简单查询的结果插入到上述本地表中;以及
将所有后续简单查询的结果插入到该本地表的基本表中。
3.权利要求1的方法,其中保存的步骤包括:
在高速缓存中创建本地关联表,以对应于关联查询中的每个关联条件和表列表;以及
将所有后续在同一表列表之上并且具有相同关联条件的关联查询的结果插入到本地关联表中。
4.一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:
在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;
将本地数据库与所述本地服务器相关联;
在所述本地服务器的共享表中存储多个高速缓存结果;及
使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,
其中所述使用步骤包括以下至少之一:
如果查询是复合的,则在精确匹配资源库中搜索对所述新查询的响应;及
如果所述新查询不是复合的,则从所述共享表资源库中的数据子选择对所述新查询的响应,
其中搜索的步骤包括:
如果在精确匹配资源库中发现上述新查询的SQL串,则将高速缓存中对应于该SQL串的查询结果返回给应用;
如果在精确匹配资源库中未发现上述新查询的SQL串,则将新查询发送给源服务器;
如果在精确匹配资源库中未发现上述新查询的SQL串,则将所接收到的查询结果插入到精确匹配资源库中;以及
如果在精确匹配资源库中未发现上述新查询的SQL串,则将高速缓存中的查询结果与该新查询的SQL串相关联。
5.一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:
在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;
将本地数据库与所述本地服务器相关联;
在所述本地服务器的共享表中存储多个高速缓存结果;及
使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询,
其中所述使用步骤包括以下至少之一:
如果查询是复合的,则在精确匹配资源库中搜索对所述新查询的响应;及
如果所述新查询不是复合的,则从所述共享表资源库中的数据子选择对所述新查询的响应,
其中子选择的步骤包括:
利用包含检查器试图证实上述新查询的结果集合的结果包含在已高速缓存查询结果的并集中;
如果上述试图证实的步骤成功完成,则以本地表名替代该新查询中提及的表;
如果上述试图证实的步骤成功完成,则在共享表资源库之上评估该新查询;以及
如果该查询是Top-N查询,则计数从本地高速缓存中接收到的行数,如果该行数未超过应用所请求的行数,则通过重写该新查询并生成重写的查询、将重写的查询发送给源服务器并将从源服务器接收到的结果存储在共享表资源库中、将重写查询的谓词添加到共享表资源库的索引中、在该共享表资源库之上评估该新查询、及将评估步骤的结果返回给应用来进行处理。
6.权利要求5的方法,其中试图的步骤包括下面的至少一个:
发现满足这样的条件的匹配已高速缓存查询,其中的条件为新查询的选择列表中的列的列表包括在匹配查询的选择列表中的列的列表中、新查询的谓词逻辑上意味着匹配查询的谓词、及新查询的各子句中提及的所有列包括在匹配查询的选择列表中;以及
发现满足这样的条件的匹配已高速缓存查询的集合,其中的条件为新查询的选择列表中的列的列表包括在每一个匹配查询的选择列表中的列的列表中、当所有的谓词由逻辑或运算符连接时新查询的谓词逻辑上意味着所有匹配查询谓词的逻辑和所构成的谓词、及新查询的各子句中提及的所有列包括在每一个匹配查询的选择列表中。
7.权利要求5的方法,其中重写的步骤包括步骤:
将已访问表的主键添加到上述查询的选择列表中;
如果资源管理器估计所得到的结果集合不太长或不值得高速缓存,则从上述选择列表中去掉合计运算符;以及
扩充该查询所请求的行数(N),以检索更多行。
8.一种本地服务器满足针对至少一个远程服务器的数据库查询的方法,该方法包括:
在边缘高速缓存中动态高速缓存所述至少一个远程服务器的先前数据库查询的结果;
将本地数据库与所述本地服务器相关联;
在所述本地服务器的共享表中存储多个高速缓存结果;及
使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询;
确保先前查询的结果的增量一致性,其包括步骤:
向数据高速缓存订阅由源服务器传播并且包括对后端表施加的更新、删除和插入的刷新消息;
只要当接收到刷新消息时,就将该更新、删除和插入施加到共享表资源库中的本地高速缓存的表;
使在改变过的刷新消息中提及的任何精确匹配资源库中的任何共享关联表无效;
将等于其结果包括在刷新消息中的任何事务的最大时戳的刷新消息时戳与该刷新消息相关联;
将等于最后施加到高速缓存的刷新消息的时戳的已高速缓存设置时戳与先前查询的结果相关联;
将新查询时戳与新查询相关联;
将新查询时戳与高速缓存的设置时戳相比较;以及
如果新查询时戳超过了已高速缓存的设置时戳,则插入对该新查询的响应;以及
如果该新查询时戳超过了已高速缓存的设置时戳,则从数据库服务器中检索未决的刷新消息。
9.权利要求4的方法,其中上述共享表清除包括:
根据共享表在每一表中构成控制列;
将控制列中的各项设为假;
识别要在共享表中进行维护的良好查询;
标记上述控制列中所有对应于属于对上述良好查询的响应的行的项;以及
删除共享表中其控制列项仍然为假的任何行。
10.一种用于确保从数据库服务器检索到的一组查询结果的增量一致性的方法(800),该方法包括步骤:
向边缘数据高速缓存订阅由源服务器传播并且包括施加到后端表(707)的更新、删除和插入的刷新消息(708、705);
只要当接收到刷新消息时,就将该更新、删除和插入透明地施加到本地高速缓存的表(704);
将等于其结果包括在刷新消息中的任何事务的最大时戳的时戳与该刷新消息相关联;
将等于最后施加到高速缓存的刷新消息的时戳的设置时戳与先前查询的结果相关联;
将新查询时戳与新查询相关联;
将该新查询时戳与上述设置时戳进行比较;以及
如果该新查询时戳超过了该设置时戳,则插入对该新查询的响应;以及
如果该新查询时戳超过了该设置时戳,则从数据库服务器中检索未决的刷新消息。
11.一种系统,该系统包括本地边缘服务器,所述本地边缘服务器用于基于由本地应用执行的查询动态高速缓存数据,并确保从数据库服务器检索的查询结果的集合的增量一致性,该系统还包括:
用于动态高速缓存远程服务器的先前数据库查询的结果的装置;
将本地数据库与所述本地服务器相关联的装置;
在所述本地服务器的共享表中存储多个高速缓存结果的装置;及
使用所述多个高速缓存结果来以本地服务器透明地满足新的数据库查询的装置;
用于向数据高速缓存订阅由源服务器传播并且包括施加到后端表的更新、删除和插入的刷新消息的装置;
用于只要当接收到刷新消息时,就将该更新、删除和插入施加到本地高速缓存的表的装置;
用于将等于其结果包括在刷新消息中的任何事务的最大时戳的时戳与该刷新消息相关联的装置;
用于将等于最后施加到高速缓存的刷新消息的时戳的设置时戳与先前查询的结果相关联的装置;
用于将新查询时戳与新查询相关联的装置;
用于将该新查询时戳与上述设置时戳进行比较的装置;以及
用于如果该新查询时戳超过了该设置时戳,则插入对该新查询的响应的装置;以及
用于如果该新查询时戳超过了该设置时戳,则从数据库服务器中检索未决的刷新消息的装置。
CN2003801023706A 2002-12-23 2003-10-14 透明网络边缘数据高速缓存 Expired - Lifetime CN1708757B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/328,229 2002-12-23
US10/328,229 US6950823B2 (en) 2002-12-23 2002-12-23 Transparent edge-of-network data cache
PCT/US2003/032778 WO2004061716A1 (en) 2002-12-23 2003-10-14 A transparent edge-of-network data cache

Publications (2)

Publication Number Publication Date
CN1708757A CN1708757A (zh) 2005-12-14
CN1708757B true CN1708757B (zh) 2010-04-28

Family

ID=32680768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2003801023706A Expired - Lifetime CN1708757B (zh) 2002-12-23 2003-10-14 透明网络边缘数据高速缓存

Country Status (12)

Country Link
US (1) US6950823B2 (zh)
EP (1) EP1581886B1 (zh)
JP (1) JP4416663B2 (zh)
KR (1) KR100745883B1 (zh)
CN (1) CN1708757B (zh)
AT (1) ATE472774T1 (zh)
AU (1) AU2003279289A1 (zh)
CA (1) CA2507014C (zh)
DE (1) DE60333230D1 (zh)
IL (1) IL169267A0 (zh)
TW (1) TWI262406B (zh)
WO (1) WO2004061716A1 (zh)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006502465A (ja) * 2002-01-11 2006-01-19 アカマイ テクノロジーズ インコーポレイテッド コンテンツ配信ネットワーク(CDN)で使用するためのJavaアプリケーションフレームワーク
US7499910B2 (en) * 2002-06-27 2009-03-03 Siebel Systems, Inc. Detecting and processing cache hits for queries with aggregates
US7277718B2 (en) * 2002-07-22 2007-10-02 Cingular Wireless Ii, Llc Methods and apparatus for formatting information for a communication
JP4007594B2 (ja) * 2002-09-26 2007-11-14 株式会社東芝 動画像符号化装置及び方法、動画像符号化方式変換装置及び方法
US7089235B2 (en) * 2003-04-17 2006-08-08 International Business Machines Corporation Method for restricting queryable data in an abstract database
US20040236726A1 (en) * 2003-05-19 2004-11-25 Teracruz, Inc. System and method for query result caching
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US7467131B1 (en) * 2003-09-30 2008-12-16 Google Inc. Method and system for query data caching and optimization in a search engine system
US9176719B2 (en) * 2004-02-26 2015-11-03 International Business Machines Corporation Resolving prerequisites for a client device in an open service gateway initiative (OSGI) framework
US7478396B2 (en) * 2004-03-22 2009-01-13 International Business Machines Corporation Tunable engine, method and program product for resolving prerequisites for client devices in an open service gateway initiative (OSGi) framework
US7337164B2 (en) * 2004-03-31 2008-02-26 Sap Ag Fast search with very large result set
US7840557B1 (en) * 2004-05-12 2010-11-23 Google Inc. Search engine cache control
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7395258B2 (en) * 2004-07-30 2008-07-01 International Business Machines Corporation System and method for adaptive database caching
US20060095403A1 (en) * 2004-11-03 2006-05-04 International Business Machines Corporation Method, system and program product for filtering model objects
US20060294088A1 (en) * 2005-06-27 2006-12-28 International Business Machines Corporation Method, system, and computer program product for caching dynamically generated queries
US8468152B2 (en) * 2005-08-04 2013-06-18 International Business Machines Corporation Autonomic refresh of a materialized query table in a computer database
GB0517585D0 (en) * 2005-08-30 2005-10-05 Ramakrishna Madhusudana Intuitive search which delivers fast results on the mobile phone
US20070143344A1 (en) * 2005-12-15 2007-06-21 International Business Machines Corporation Cache maintenance in a distributed environment with functional mismatches between the cache and cache maintenance
CN101005649A (zh) * 2006-01-19 2007-07-25 华为技术有限公司 一种多方通信业务的连接建立方法及系统
US7809882B1 (en) 2006-01-24 2010-10-05 Verizon Services Corp. Session independent backend data cache system
US7765275B2 (en) 2006-01-27 2010-07-27 International Business Machines Corporation Caching of private data for a configurable time period
US20070185836A1 (en) * 2006-02-09 2007-08-09 Handy-Bosma John H Method for caching faceted search results
US8384700B2 (en) * 2007-01-26 2013-02-26 Microsoft Corporation Linked shell
US7805425B2 (en) 2006-04-28 2010-09-28 Microsoft Corporation Efficient database lookup operations
JP4920303B2 (ja) * 2006-05-17 2012-04-18 株式会社野村総合研究所 データ処理システム
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US20080005721A1 (en) * 2006-06-29 2008-01-03 Augusta Systems, Inc. Method and System for Rapidly Developing Sensor-Enabled Software Applications
US7735060B2 (en) * 2006-06-29 2010-06-08 Augusta Systems, Inc. Method and system for rapidly developing and deploying sensor-enabled software applications
US8095923B2 (en) * 2006-06-29 2012-01-10 Augusta Systems, Inc. System and method for deploying and managing intelligent nodes in a distributed network
US7698505B2 (en) * 2006-07-14 2010-04-13 International Business Machines Corporation Method, system and computer program product for data caching in a distributed coherent cache system
US7660787B2 (en) * 2006-07-19 2010-02-09 International Business Machines Corporation Customized, personalized, integrated client-side search indexing of the web
US7962442B2 (en) * 2006-08-31 2011-06-14 International Business Machines Corporation Managing execution of a query against selected data partitions of a partitioned database
US7831620B2 (en) * 2006-08-31 2010-11-09 International Business Machines Corporation Managing execution of a query against a partitioned database
US20080065590A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation Lightweight query processing over in-memory data structures
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
US10296629B2 (en) * 2006-10-20 2019-05-21 Oracle International Corporation Server supporting a consistent client-side cache
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US7814234B2 (en) * 2006-10-30 2010-10-12 Microsoft Corporation Offline execution of web based applications
US8452756B2 (en) 2006-11-09 2013-05-28 International Business Machines Corporation Database execution detail repository
US7814095B2 (en) * 2006-12-27 2010-10-12 Sybase, Inc. Optimizing the navigation of one-to-one and one-to-many relationships using query batching in named transactions
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US7774354B2 (en) * 2007-08-02 2010-08-10 International Business Machines Corporation Method and system for response time optimization for task list retrieval from databases
US7752219B2 (en) * 2007-08-21 2010-07-06 International Business Machines Corporation Apparatus, system, and method for customized event processing using a JDBC resource adapter
US20090164521A1 (en) * 2007-12-20 2009-06-25 George Lo Method and system for integrating multiple authoring applications in a collaborative environment
US7912812B2 (en) * 2008-01-07 2011-03-22 International Business Machines Corporation Smart data caching using data mining
JP5235483B2 (ja) * 2008-04-30 2013-07-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースと仮想テーブルの整合性を維持する方法および装置。
US20100036805A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation System Maintainable and Reusable I/O Value Caches
US20100036804A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation Maintained and Reusable I/O Value Caches
US8200958B2 (en) * 2008-10-03 2012-06-12 Limelight Networks, Inc. Content delivery network encryption
US8301583B2 (en) 2008-10-09 2012-10-30 International Business Machines Corporation Automated data conversion and route tracking in distributed databases
US8458166B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Dynamic context definitions in distributed databases
US8285710B2 (en) 2008-10-09 2012-10-09 International Business Machines Corporation Automated query path reporting in distributed databases
US8458208B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Automated data source assurance in distributed databases
US8145652B2 (en) 2008-10-09 2012-03-27 International Business Machines Corporation Automated propagation of non-conflicting queries in distributed databases
US9183260B2 (en) 2008-10-09 2015-11-10 International Business Machines Corporation Node-level sub-queries in distributed databases
GB2465773A (en) * 2008-11-27 2010-06-02 Symbian Software Ltd Data Storage and Access
JP5181140B2 (ja) 2009-02-23 2013-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを検索するためのコンピュータ・システム、方法及びコンピュータ・プログラム
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US9111006B2 (en) * 2010-03-16 2015-08-18 Salesforce.Com, Inc. System, method and computer program product for communicating data between a database and a cache
US8898181B2 (en) * 2010-06-22 2014-11-25 Microsoft Corporation Subscription for integrating external data from external system
US9792307B2 (en) * 2010-07-27 2017-10-17 Oracle International Corporation Enterprise-based searching of new and updated data
US8612413B2 (en) * 2010-08-12 2013-12-17 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US20120130963A1 (en) * 2010-11-24 2012-05-24 Teradata Us, Inc. User defined function database processing
US8983902B2 (en) * 2010-12-10 2015-03-17 Sap Se Transparent caching of configuration data
US8412721B2 (en) * 2011-07-29 2013-04-02 International Business Machines Corporation Efficient data extraction by a remote application
US8560496B2 (en) * 2011-11-29 2013-10-15 Microsoft Corporation Database query across processes with change notification
US8843758B2 (en) * 2011-11-30 2014-09-23 Microsoft Corporation Migrating authenticated content towards content consumer
US10467212B2 (en) 2012-04-27 2019-11-05 Empire Technology Development Llc Multiple variable coverage memory for database indexing
US9026553B2 (en) * 2012-11-29 2015-05-05 Unisys Corporation Data expanse viewer for database systems
GB2510429A (en) 2013-02-05 2014-08-06 Ibm Assessing response routes in a network
EP2966572B1 (en) * 2013-03-04 2018-06-27 Kabushiki Kaisha Toshiba Database device, program, and data processing method
CN104111962B (zh) * 2013-04-22 2018-09-18 Sap欧洲公司 具有批量操作的增强型事务高速缓存
CN104216901B (zh) * 2013-05-31 2017-12-05 北京新媒传信科技有限公司 信息搜索的方法和系统
KR101515304B1 (ko) * 2013-11-08 2015-07-02 한국산업기술대학교산학협력단 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법
CN103559307A (zh) * 2013-11-18 2014-02-05 中国农业银行股份有限公司 一种查询的缓存方法及装置
US10311054B2 (en) * 2014-01-08 2019-06-04 Red Hat, Inc. Query data splitting
US10114874B2 (en) * 2014-02-24 2018-10-30 Red Hat, Inc. Source query caching as fault prevention for federated queries
US10498663B2 (en) * 2014-03-12 2019-12-03 Amazon Technologies, Inc. Profile-based cache management
GB2524072A (en) 2014-03-14 2015-09-16 Ibm Demand-driven dynamic aggregate
CN104268286A (zh) * 2014-10-21 2015-01-07 北京国双科技有限公司 一种查询热数据的方法
US10572442B2 (en) 2014-11-26 2020-02-25 Microsoft Technology Licensing, Llc Systems and methods for providing distributed tree traversal using hardware-based processing
CN109347925B (zh) * 2014-12-31 2021-07-09 华为技术有限公司 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系统
CN106708819A (zh) * 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种数据缓存的预热方法及其装置
US20170034248A1 (en) * 2015-07-30 2017-02-02 Bank Of America Corporation File Movement Service Utility
US10848582B2 (en) 2015-09-11 2020-11-24 Amazon Technologies, Inc. Customizable event-triggered computation at edge locations
US11895212B2 (en) * 2015-09-11 2024-02-06 Amazon Technologies, Inc. Read-only data store replication to edge locations
US20170195449A1 (en) * 2015-12-30 2017-07-06 Business Objects Software, Ltd. Smart proxy for datasources
CN107193813B (zh) 2016-03-14 2021-05-14 阿里巴巴集团控股有限公司 数据表连接方式处理方法及装置
CN107789829B (zh) * 2016-09-06 2020-12-08 盛趣信息技术(上海)有限公司 一种游戏物品数据传输的方法
CN106407374A (zh) * 2016-09-09 2017-02-15 浪潮软件股份有限公司 一种适用于移动开发的高性能缓存方法
US10380137B2 (en) * 2016-10-11 2019-08-13 International Business Machines Corporation Technology for extensible in-memory computing
CN107665228B (zh) * 2017-05-10 2019-12-20 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107466482B (zh) * 2017-06-07 2021-07-06 香港应用科技研究院有限公司 在蜂窝通信系统中联合确定计算卸载和内容预取的方法和系统
US10721719B2 (en) * 2017-06-20 2020-07-21 Citrix Systems, Inc. Optimizing caching of data in a network of nodes using a data mapping table by storing data requested at a cache location internal to a server node and updating the mapping table at a shared cache external to the server node
JP6812321B2 (ja) * 2017-08-25 2021-01-13 Kddi株式会社 データベース管理装置、データベース管理方法、及びデータベース管理プログラム
US10740318B2 (en) * 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
CN108989062B (zh) * 2018-07-25 2020-05-01 北京达佳互联信息技术有限公司 更新群成员数据的方法、装置、终端、系统及存储介质
US11487737B2 (en) * 2019-03-26 2022-11-01 Sap Se Take over table opening for operators
US11163756B2 (en) * 2019-04-16 2021-11-02 Snowflake Inc. Querying over external tables in database systems
US11080257B2 (en) * 2019-05-13 2021-08-03 Snowflake Inc. Journaled tables in database systems
US11455305B1 (en) * 2019-06-28 2022-09-27 Amazon Technologies, Inc. Selecting alternate portions of a query plan for processing partial results generated separate from a query engine
CN110557432B (zh) * 2019-07-26 2022-04-26 苏州浪潮智能科技有限公司 一种缓存池均衡优化方法、系统、终端及存储介质
US20210173888A1 (en) * 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
CN112632129B (zh) * 2020-12-31 2023-11-21 联想未来通信科技(重庆)有限公司 一种码流数据管理方法、装置及存储介质
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
US11727022B2 (en) 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
CN112883119B (zh) * 2021-04-30 2022-05-17 腾讯科技(深圳)有限公司 数据同步方法、装置、计算机设备及计算机可读存储介质
US11792147B2 (en) 2021-11-29 2023-10-17 Aidan Lok Communications networks
CN116910100B (zh) * 2023-09-08 2023-11-28 湖南立人科技有限公司 用于低代码平台的缓存数据处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897632A (en) * 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6275819B1 (en) * 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6393415B1 (en) * 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
US20020116457A1 (en) * 2001-02-22 2002-08-22 John Eshleman Systems and methods for managing distributed database resources

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2650180B2 (ja) * 1993-03-19 1997-09-03 サンケン電気株式会社 2方向性2端子サイリスタ
US6601062B1 (en) * 2000-06-27 2003-07-29 Ncr Corporation Active caching for multi-dimensional data sets in relational database management system
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US7035846B2 (en) * 2002-09-23 2006-04-25 International Business Machines Corporation Methods, computer programs and apparatus for caching directory queries

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897632A (en) * 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6275819B1 (en) * 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6393415B1 (en) * 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
US20020116457A1 (en) * 2001-02-22 2002-08-22 John Eshleman Systems and methods for managing distributed database resources

Also Published As

Publication number Publication date
CA2507014A1 (en) 2004-07-22
WO2004061716A1 (en) 2004-07-22
IL169267A0 (en) 2007-07-04
TW200426625A (en) 2004-12-01
US20040133538A1 (en) 2004-07-08
EP1581886A4 (en) 2007-07-18
EP1581886A1 (en) 2005-10-05
AU2003279289A1 (en) 2004-07-29
DE60333230D1 (en) 2010-08-12
US6950823B2 (en) 2005-09-27
CN1708757A (zh) 2005-12-14
CA2507014C (en) 2010-12-21
KR20050085133A (ko) 2005-08-29
TWI262406B (en) 2006-09-21
JP4416663B2 (ja) 2010-02-17
KR100745883B1 (ko) 2007-08-02
EP1581886B1 (en) 2010-06-30
ATE472774T1 (de) 2010-07-15
JP2006511876A (ja) 2006-04-06

Similar Documents

Publication Publication Date Title
CN1708757B (zh) 透明网络边缘数据高速缓存
US7962481B2 (en) Query based invalidation subscription
US6115703A (en) Two-level caching system for prepared SQL statements in a relational database management system
US8037040B2 (en) Generating continuous query notifications
US10353895B2 (en) Atomic visibility switch for transactional cache invalidation
US10296629B2 (en) Server supporting a consistent client-side cache
US6618719B1 (en) Database system with methodology for reusing cost-based optimization decisions
US9697253B2 (en) Consistent client-side cache
US6684203B1 (en) Using global temporary tables to transform queries
US6438538B1 (en) Data replication in data warehousing scenarios
US7395258B2 (en) System and method for adaptive database caching
US5448727A (en) Domain based partitioning and reclustering of relations in object-oriented relational database management systems
US6353833B1 (en) Caching of distributed dynamic SQL statements in a multiple node RDBMS
US20170147628A1 (en) Transactional cache invalidation for inter-node caching
US20050283471A1 (en) Multi-tier query processing
CN106354732A (zh) 一种支持并发协同的离线数据版本冲突解决方法
US20230315718A1 (en) Executing transactions on distributed databases
WO2003081464A2 (en) Database system comprising database access object with cache
Basu Associative caching in client-server databases
CA2249059C (en) Caching of distributed dynamic sql statements in a multiple node rdbms
Ports Application-level caching with transactional consistency
Liu et al. Design and implementation of virtual database management system based on XML
RK et al. Transactional Consistency and Automatic Management in an Application Data Cache
Campbell et al. DB2 11 for z/OS Technical Overview
Ghandeharizadeh et al. SQL Query To Trigger Translation: A Novel Consistency Technique for Cache Augmented SQL Systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20100428