CN111324632B - 利用客户端侧高速缓存的透明数据库会话恢复 - Google Patents
利用客户端侧高速缓存的透明数据库会话恢复 Download PDFInfo
- Publication number
- CN111324632B CN111324632B CN201911280176.6A CN201911280176A CN111324632B CN 111324632 B CN111324632 B CN 111324632B CN 201911280176 A CN201911280176 A CN 201911280176A CN 111324632 B CN111324632 B CN 111324632B
- Authority
- CN
- China
- Prior art keywords
- session
- database
- computer
- session information
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
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)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
客户端计算机与DBMS建立一个或多个会话。每个会话的会话上下文信息被高速缓存在客户端侧会话高速缓存中。当检测到会话断开时,会话恢复包括与DBMS建立新的会话,以及从存储在会话高速缓存中的断开的会话的会话信息中恢复断开的会话的会话上下文。
Description
技术领域
本公开涉及利用客户端侧高速缓存的透明数据库会话恢复。
背景技术
数据库系统的关键优势之一是数据库可以确保针对大多数系统故障恢复持久表。然而,系统故障对访问数据库系统的数据库应用来说仍然是一个破坏性事件,因为客户端-服务器数据库会话可能会断开,导致所有会话上下文信息的丢失。例如,数据库客户端可以将其地区(locale)设置为“德国”,以便对于由客户端建立的特定数据库会话,在存储在数据库会话上下文中的该本地值下执行所有后续查询。然而,如果服务器重新启动。地区设置将被重置为默认值,诸如“美国”,这会影响查询。应用程序员可以添加附加的防御代码,来防止出现这种系统故障以及随后丢失会话上下文信息的可能性。
发明内容
根据本公开的实施例,一种计算机系统中的方法,所述方法包括:与数据库系统建立第一数据库会话;将会话信息从所述计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;将所述第一数据库会话的会话信息高速缓存在所述计算机系统的高速缓存存储器中;以及响应于检测到所述第一数据库会话的断开,建立第二数据库会话,包括传送高速缓存在所述计算机系统的高速缓存存储器中的所述第一数据库会话的会话信息,以透明地恢复所述第一数据库会话的会话上下文。
根据本公开的实施例,一种其上存储有计算机可运行指令的非暂时性计算机可读存储介质,当所述计算机可运行指令由计算机设备运行时,使所述计算机设备执行以下操作:与数据库系统建立第一数据库会话;将会话信息从计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;将所述第一数据库会话的会话信息高速缓存在所述计算机系统的高速缓存存储器中;以及响应于检测到所述第一数据库会话的断开,建立第二数据库会话,包括传送高速缓存在所述计算机系统的高速缓存存储器中的所述第一数据库会话的会话信息,以透明地恢复所述第一数据库会话的会话上下文。
根据本公开的实施例,一种装置,包括:一个或多个计算机处理器;和计算机可读存储介质,包括用于控制所述一个或多个计算机处理器可操作以执行以下操作的指令:与数据库系统建立第一数据库会话;将会话信息从计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;将所述第一数据库会话的会话信息高速缓存在所述计算机系统的高速缓存存储器中;以及响应于检测到所述第一数据库会话的断开,建立第二数据库会话,包括传送高速缓存在所述计算机系统的高速缓存存储器中的所述第一数据库会话的会话信息,以透明地恢复所述第一数据库会话的会话上下文。
附图说明
关于下面的讨论,并且特别是附图,要强调的是,为了说明性讨论的目的,示出的细节代表示例,并且在提供对本公开的原理和概念方面的描述的原因中呈现。在这点上,除了从根本上理解本公开所需的内容外,没有试图显示实施细节。下面结合附图的讨论对于本领域技术人员来说是显而易见的是根据本公开的实施例可以如何被实践。相似或相同的附图标记可用于在各种附图和支持描述中标识或以其他方式指代相似或相同的元件。在附图中:
图1示出了根据本公开的一些实施例的系统。
图2示出了根据本公开的一些实施例在客户端计算机上执行的应用的细节。
图3示出了可以根据本公开的一些实施例配置的说明性计算机系统。
图4示出了根据本公开的一些实施例的客户端侧会话高速缓存(client-sidesession cache)的过程流程。
图5示出了根据本公开的一些实施例的用于从客户端侧会话高速缓存恢复会话的过程流程。
图6示出了说明根据本公开的一些实施例的从客户端侧会话高速缓存恢复会话的流程的序列图。
图7示出了说明根据本公开的一些实施例的在接管用例中从客户端侧会话高速缓存恢复会话的流程的序列图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了许多示例和具体细节,以便提供对本公开的透彻理解。然而,对于本领域的技术人员来说,显而易见的是,如权利要求中所表达的,本公开可以包括这些示例中的一些或全部特征,单独地或者与下面描述的其他特征相结合,并且可以进一步包括本文描述的特征和概念的修改和等同物。
图1示出了根据本公开的一些实施例的数据库系统100。数据库系统100可以包括数据库管理服务器(database management server,DBMS)102,数据库管理服务器102包括底层数据库102a以及用于访问和维护数据库102a的对应数据库服务。用户可以经由客户端计算机104访问DBMS 102。通信网络106可以提供客户端计算机104和DBMS 102之间的通信。通信网络106代表任何合适形式的通信基础设施,包括但不限于公共交换联网、局域网、广域网、到DBMS 102的直接连接(例如,用于管理用户)等等。
在一些实施例中,客户端计算机104上的用户可以运行一个或多个数据库应用108以与DBMS 102通信。每个应用108可以与DBMS 102创建一个或多个会话,以在数据库102a上做一些工作。DBMS 102中的会话管理器110可以管理与在客户端计算机104之间运行的应用108相关联的各种会话。根据本公开,客户端计算机104和DBMS 102可以交换会话上下文信息。在一些实施例中,例如,如图1所示,客户端计算机104可以设置会话上下文信息(例如,使用数据库命令),并且DBMS 102可以向客户端计算机104提供会话上下文信息。下面讨论本公开的这些方面。
在本公开的上下文中,会话是指应用108和DBMS 102之间的交互交换。例如,使用应用108的用户可以在DBMS 102上建立会话,以便访问数据库102a;例如,通过登录到DBMS。在给定会话期间,可以建立与该会话相关的附加信息。这种信息可以被称为会话上下文信息,因为它对特定会话是特定的,并且仅与特定会话相关。例如,用户可以设置指定其地理位置的会话地区(例如,为了时区的目的)。用户可以指定语言、货币单位等。用户可以在他们的会话期间更改某些会话设置。例如,用户可以在一个实例中指定以美元为货币单位,并且随后在相同会话中更改为韩元。会话上下文信息可以是特定于数据库(例如,当前数据库)的信息和用户临时对象(例如,临时表)等。
DBMS 102中的会话管理器110可以跟踪会话上下文信息,并且可以在会话期间向DBMS 102中的各种功能单元(未示出)提供这样的信息。例如,DBMS 102可以取决于用户的地区设置执行时区转换。如果用户指定了货币单位(例如,美元、韩元等),则DBMS 102可以执行合适的货币单位转换,等等。当会话终止时(例如,用户注销),会话上下文信息被“遗忘”。换句话说,会话上下文信息是暂时的,并且不在客户端计算机104上被持久化或不被会话管理器110持久化。当相同用户重新登录时,必须再次设置会话上下文。
图2示出了根据本公开的一些实施例的数据库应用108的一些细节。应用108可以共享访问DBMS 102的公共功能;例如,打开数据库、创建数据表等。这些公共功能可以在每个应用108可以链接到的客户端库202中提供。
客户端库202可以包括高速缓存管理器204,并且特别是到高速缓存功能的应用编程接口(application programming interface,API)。根据本公开,高速缓存管理器204可以为应用108提供会话高速缓存。例如,在一些实施例中,高速缓存管理器204可以维护应用108创建的每个会话的会话高速缓存206。在一些实施例中,会话高速缓存206可以是任何合适的持久存储器,诸如,非易失性存储器(例如,静态RAM)、磁盘存储等。
客户端库202可以包括连接管理器208。例如,连接管理器208可以与DBMS 102通信以建立/创建与DBMS 102的连接。例如,图2示出了DBMS 102与相应的应用A、B、C的三个连接A、B、C。连接管理器208可以使用任何合适的通信协议与DBMS 102通信。例如,在一些实施例中,连接管理器208可以使用TCP/IP协议以在互联网上进行通信。在其他实施例中,可以使用其他通信协议。例如,连接A、B、C可以用于支持应用108和DBMS 102之间的SQL处理(例如,发送查询和接收应答)。在一些情况下,应用108可以建立诸如图2所示的单个连接。在其他情况下(未示出),应用108可以与DBMS 102建立数个连接;例如,在具有多个线程的应用中,一些线程可以具有它自己与DBMS 102的连接。
图2示出了DBMS 102上的会话管理器110可以维护每个相应的连接A、B、C的对应会话数据A、B、C。会话数据可以包括与会话相关的任何合适的信息。例如,会话数据可以包括由应用定义的信息;例如,应用名称(例如,HDBStudio)、用户信息(例如,应用定义的用户名)、区分大小写(T/F)、地区等。会话数据可以由客户端库202定义;例如,操作系统帐户和其他系统级信息。用户可以设置会话数据,例如,通过使用适当的API,诸如SQL SET命令(例如,SET FOO="BAR")。
图3是用于实施本文描述的一个或多个实施例(例如,图1中的客户端计算机104、DBMS 102)的说明性计算系统300的简化框图。计算系统300可以单独地或者与其他元件相结合地执行根据本公开的操作和/或作为用于执行根据本公开的操作的装置。计算系统300还可以执行和/或作为用于执行本文描述的任何其他步骤、方法或过程的装置。
计算系统300可以包括能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。例如,计算系统300的示例包括工作站、膝上型计算机、服务器、分布式计算系统等。在基本配置中,计算系统300可以包括至少一个处理单元312和系统(主)存储器314。
处理单元312可以包括能够处理数据或解释和运行指令的任何类型或形式的处理单元。在一些实施例中,处理单元312可以是单处理器配置,并且在其他实施例中,处理单元312可以是包括一个或多个计算机处理器的多处理器架构。在一些实施例中,处理单元312可以从程序和数据模块330接收指令。这些指令可以使处理单元312执行根据本公开的各种公开实施例(例如,图4、图5)的操作。
系统存储器314(有时称为主存储器)可以是能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或存储介质,并且包括易失性存储器和/或非易失性存储器。系统存储器314的示例包括任何合适的字节可寻址存储器,例如,随机存取存储器(RAM)、只读存储器(ROM)、闪存或任何其他类似的存储器架构。虽然不是必需的,但是在一些实施例中,计算系统300可以包括易失性存储器单元(例如,系统存储器314)和非易失性存储设备(例如,数据存储316)两者。
在一些实施例中,除了处理单元312和系统存储器314之外,计算系统300还可以包括一个或多个组件或元件。例如,如图3所示,计算系统300可以包括经由系统总线324互连的内部数据存储316、通信接口320和I/O接口322。系统总线324可以包括能够促进包括计算系统300的一个或多个组件之间的通信的任何类型或形式的基础设施。例如,系统总线324的示例包括通信总线(诸如,ISA、PCI、PCIe或类似总线)和网络。
内部数据存储316可以包括非暂时性计算机可读存储介质,以提供数据、数据结构、计算机可运行指令等的非易失性存储,从而操作根据本公开的计算系统300。例如,内部数据存储器316可以存储各种程序和数据模块330,例如,包括操作系统332、一个或多个应用程序334、程序数据336和其他程序/系统模块338,以支持和执行本文公开的各种处理和操作。在一些实施例中,内部数据存储316可以为图2所示的会话高速缓存206提供持久存储。
通信接口320可以包括能够促进计算系统300和一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在一些实施例中,通信接口320可以促进计算系统300和包括附加计算系统的私有或公共网络之间的通信。例如,通信接口320的示例包括有线网络接口(例如,网络接口卡)、无线网络接口(例如,无线网络接口卡)、调制解调器和任何其他合适的接口。
在一些实施例中,通信接口320还可以表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统300和一个或多个附加网络或存储设备之间的通信。例如,主机适配器的示例包括SCSI主机适配器、USB主机适配器、IEEE 1394主机适配器、SATA和eSATA主机适配器、ATA和PATA主机适配器、光纤通道接口适配器、以太网适配器等。
例如,计算系统300还可以包括经由I/O接口322耦合到系统总线324的至少一个输出设备342(例如,显示器)以向管理员提供访问。输出设备342可以包括能够可视和/或可听地呈现从I/O接口322接收的信息的任何类型或形式的设备。
例如,计算系统300还可以包括经由I/O接口322耦合到系统总线324的至少一个输入设备344以供管理员访问。输入设备344可以包括能够向计算系统300提供计算机或人类生成的输入的任何类型或形式的输入设备。例如,输入设备344的示例包括键盘、定点设备、语音识别设备或任何其他输入设备。
参考图4和其他图,现在讨论将转向根据本公开的用于高速缓存会话上下文信息(会话高速缓存)的客户端计算机104中的过程的高级描述,例如,经由在客户端计算机104上运行的数据库应用108。在一些实施例中,例如,客户端计算机104可以包括计算机可运行程序代码(例如,应用108),当计算机可运行程序代码由处理单元(例如,图3的312)运行时,可以使客户端计算机104执行根据图4的过程。由计算机系统执行的操作流程不一定限于所示的操作顺序。
在操作402,客户端计算机104可以创建或以其他方式建立与DBMS 102的会话。例如,当用户调用应用108以在DBMS 102上工作时,用户可能必须通过登录序列来登录到DBMS102上。此活动可以创建登录会话。DBMS 102中的会话管理器110可以建立一些本地数据结构来存储和维护用户的登录会话的信息。
在操作404,客户端计算机104可以向DBMS 102发送会话上下文信息。例如,在登录过程中,客户端计算机104可以将用户的ID作为会话信息发送给DBMS 102。客户端计算机104可以访问一些本地存储的关于用户的信息(例如,来自偏好文件),诸如地区、语言、货币单位、用户的访问级别等,并将这些信息作为建立会话的一部分的默认设置发送。用户可以在登录会话期间更改这些设置和/或添加附加的会话信息。在一些实施例中,例如,在SQL数据库系统中,SET(设置)命令可用于设置会话信息:
SET key,value
其中:key(键)指定特定的会话属性,诸如地区、语言等;value(值)是要高速缓存的会话数据,诸如德语(用于地区)、英语(用于语言)等。
在操作406,客户端计算机104可以从DBMS 102接收会话上下文信息。例如,在一些实施例中,客户端计算机104可能不知道发送到DBMS的特定命令包含会话信息。直到DBMS102编译该命令,才可以确定该命令包含会话信息。因此,在一些实施例中,DBMS 102可以在响应或其他合适的消息中将这样的信息发送回客户端计算机104。然而,应当理解,在其他实施例中,在客户端计算机104上运行的应用108可以被配置为具有确定到DBMS 102的特定通信包含会话信息的能力,从而避免了该特定操作。
在操作408,客户端计算机104可以确定会话是否已经结束。例如,当连接断开并且无法恢复断开的连接时,如果使用已经注销等,就会发生这种情况。如果确定会话已经结束,则过程可以前进到操作412;否则,过程可以前进到操作410。
在操作410,客户端计算机104可以高速缓存会话上下文信息。例如,客户端计算机104中的连接管理器208可以从DBMS 102接收响应或其他合适的消息,该响应或其他合适的消息包含对应于会话的会话高速缓存206中的会话信息。在一些实施例中,连接管理器208可以调用高速缓存管理器204中合适的API来高速缓存接收到的会话信息。会话高速缓存206可以被构造为[key,value]([键,值])存储,其中key标识特定的会话属性,并且value是实际的会话数据;例如,key=monetary_unit(键=货币单元),value=US_dollars(值=美元)。如果在会话高速缓存206中没有找到键,则可以将新条目添加到会话高速缓存中。否则,用最新的值来更新现有条目。因此,仅高速缓存对会话信息所做的最新更新,而不高速缓存更新的历史。例如,如果会话属性monetary_unit(货币单元)被多次更新,则对于该属性仅高速缓存一个条目,并且它将包含最新更新。
在操作412,客户端计算机104可以清除已经结束的给定会话的会话高速缓存206。然而,为其他会话执行的任何会话高速缓存可以继续。
在应用108的运行过程中,用户可以设置新的会话信息或者更改先前设置的会话信息。客户端计算机104可以重复从操作404开始的过程,以高速缓存新的或更改后的会话信息。新的会话信息可以作为新的[key,value]对添加到会话高速缓存(高速缓存存储器)206中。可以通过使用key搜索会话高速缓存206来存储对现有会话信息的修改。
参考图5和其他图,现在讨论将转向根据本公开的用于重建断开的会话的客户端计算机104中的过程的高级描述,例如,经由在客户端计算机104上运行的数据库应用108。可以理解,可以对断开的每个会话执行这些操作。例如,在一些实施例中,客户端计算机104可以包括计算机可运行程序代码(例如,应用108),当计算机可运行程序代码由处理单元(例如,图3中的312)运行时,可以使客户端计算机104执行根据图5的过程。由计算机系统执行的操作流程不一定限于所示的操作顺序。
在操作502,客户端计算机104可以检测到与DBMS 102的会话(第一会话)已经断开。在一些情况下,当与DBMS 102的通信中断时,会出现会话断开,在这种情况下,客户端计算机104中的每个会话都将断开。取决于与DBMS 102的连接或通信的类型,可以通过任何合适的方式来检测或以其他方式确定与DBMS 102的中断。例如,在一些实施例中,连接管理器208可以使用TCI/IP协议与DBMS 102通信。在与DBMS 102通信期间发生的TCP/IP套接字错误(socket error)可以用来指示会话断开。在其他情况下,即使与DBMS 102的通信不受影响,会话断开仍然会发生。例如,如果DBMS 102中的数据表损坏,则该事件可能导致仅正在使用损坏的数据表的那些会话断开;其他会话不一定会受到影响。
在操作504,响应于检测到会话断开,客户端计算机104可以尝试与DBMS 102重新连接。在一些实施例中,例如,对于m次尝试,客户端计算机104可以每n个时间单位(秒、分钟)尝试重新连接。如果在m次尝试结束时,没有建立连接,则客户端计算机104可以抛出指示连接异常的错误(操作501)。
在操作506,客户端计算机104可以与DBMS 102重建断开的会话(第二会话)。在客户端计算机104已经与DBMS 102重新连接之后,客户端计算机104可以采取步骤来重建会话。例如,在一些实施例中,例如,客户端计算机104可以通过在序列中重复登录来使用户重新登录。
在操作508,客户端计算机104可以确定是否存在任何非默认会话上下文信息。在一些实施例中,会话可以具有一组默认会话属性的默认设置,使得当会话建立时,客户端计算机104可以(例如,从磁盘)读取默认会话设置并在DBMS 102中(例如,使用一系列设置命令)设置会话上下文。在一些实施例中,客户端计算机104可以存储会话标志,以指示已经对默认设置进行了更改,或者已经高速缓存了除默认会话信息之外的会话信息。会话标志可以被初始设置为“0”,并且当数据被高速缓存在会话高速缓存206中以指示存在非默认会话信息时,被设置为“1”。如果已经高速缓存了非默认会话信息,则过程可以前进到操作510;否则,过程可以前进到操作514。
在操作510,客户端计算机104可以确定是否存在任何高速缓存的会话上下文要恢复。如操作508中所讨论的,应该在会话高速缓存206中高速缓存会话上下文信息。然而,会话高速缓存206可能被清除。例如,如图4中所解释的,当会话结束时,可以终止给定会话的会话高速缓存。在这种情况下,可以终止给定会话的会话高速缓存,并且可以清除会话高速缓存206。如果没有高速缓存的会话上下文,则过程可以前进到操作514。
在操作512,客户端计算机104可以恢复或还原高速缓存的会话上下文。在一些实施例中,例如,客户端计算机104可以针对每个高速缓存的会话信息向DBMS 102发出一系列SET key,value操作。当所有高速缓存的会话信息已经被重新发送到DBMS 102时,可以认为先前会话上下文的恢复已经完成。下面描述的其余操作涉及处理在会话断开时正在进行的任何查询。
在操作514,客户端计算机104可以确定在会话断开时是否存在任何未决的活动查询。如果没有,可以认为过程完成;否则,过程可以进行到操作516。
在操作516,客户端计算机104可以确定是否有任何活动查询处于可重试状态。如果没有一个活动查询是可重试的,则客户端计算机104可以抛出异常来指示存在活动查询,但是没有一个是可重试的;例如,使得应用108可以知道去重试它们。
在操作518,客户端计算机104可以重试可重试查询。
图6是突出显示图5中描述的过程中的一些通信路径的序列图。例如,通信602示出应用108可以例如通过执行登录序列来建立与DBMS 102的会话。通信604示出应用108可以向DBMS 102发出SET命令以设置会话属性(例如,language=German(语言=德语))。通信606示出DBMS 102可以将会话信息发送回应用108。通信608示出应用108可以将会话信息高速缓存在会话高速缓存206中。如上所述,该序列可以在会话生命期间重复。在610,应用108检测到会话断开。通信612示出应用108尝试一次或多次重试以与DBMS 102重建新的会话。在614,应用108可以读取高速缓存的会话信息,并通过发出一系列SET命令来恢复先前的会话上下文(通信616)。
图7是在从充当主DBMS的第一DBMS(例如,102)到辅DBMS的转移的上下文中,突出显示图5中描述的过程中的一些通信路径的序列图。转移可能是故障转移(failover)的结果,其中主DBMS发生故障,并且辅DBMS接管。在其他场景中,转移可以是由辅DBMS定时接管主DBMS。图7中的通信路径类似于图6中解释的那些通信路径,并有一些变化。例如,通信712示出了在检测到(在610)与DBMS断开的会话之后,可以对辅DBMS 702进行会话重试。从主DBMS到辅DBMS的切换对于在客户端计算机104上运行的应用108来说是透明的。例如,在610,应用108仅经历它们相应的会话的断开。在710的重试期间,支持主DBMS和辅DBMS的底层通信基础设施可以执行恢复处理以使辅DBMS接管主DBMS,包括重定向客户端计算机104以与辅DBMS通信。当客户端计算机104和辅DBMS之间的通信被重建时,在614和716,可以建立新的会话,并且可以恢复先前会话的会话上下文。
结论
根据在客户端计算机上提供会话高速缓存的实施例,其中在客户端计算机和数据库管理系统(DBMS)之间建立的每个会话可以与会话高速缓存相关联。对与给定会话相对应的会话上下文信息的更新可以被高速缓存在相应的会话高速缓存中。当检测到与给定会话断开时,可以建立与DBMS的新的会话。与断开的会话相关联的会话信息可以从适当的会话高速缓存中读取,并用于在新建立的会话上恢复断开的会话的会话信息。
会话恢复的传统方法依赖于客户端计算机生成重做日志来跟踪与客户端计算机上的会话相关联的会话上下文信息的变化。可以记录会话信息的每个变化(例如,通过向DBMS发送SET命令)。当会话断开发生时,可以在新建立的会话上重放重做日志,以重复会话的变化序列。考虑到客户端计算机可以运行数个数据库应用,并且每个数据库应用可以与DBMS建立数个会话,根据管理重做日志存储的处理增加和存储重做日志的存储需求增加,存储重做日志的成本可能很高。在会话上下文频繁更新的动态情况下,这种处理和存储负担可能会加重。相比之下,根据本公开的实施例高速缓存对会话信息做出的最新更新,从而显著降低了对会话高速缓存的存储需求。
此外,使用重做日志的会话恢复需要重放重做日志。当有许多重做日志要重放时,客户端计算机可能需要相当长的时间才能重建断开的会话。相比之下,根据本公开的实施例仅高速缓存会话信息的最新更新;不需要重放日志,因此会话恢复会显著加快。
会话恢复的另一种方法依赖于DBMS管理来自连接到DBMS的所有客户端计算机(用户)的每个会话的会话上下文信息。在DBMS中管理如此多的会话可能影响DBMS的性能,这就要求DBMS花费大量的资源才能管理会话信息。相比之下,根据本公开的实施例有效地将大部分工作负荷从DBMS重新分配给每个客户端计算机。
以上描述示出了本公开的各种实施例以及如何实施特定实施例的各方面的示例。以上示例不应被认为是唯一的实施例,并且呈现这些示例是为了说明由所附权利要求限定的特定实施例的灵活性和优点。基于以上公开和所附权利要求,在不脱离由权利要求限定的本公开的范围的情况下,可以采用其他布置、实施例、实施方式和等同物。
Claims (20)
1.一种计算机系统中的方法,所述方法包括:
与数据库系统建立第一数据库会话,所述第一数据库会话的建立包括传送默认会话设置;
将非默认会话信息从所述计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;
如果标识第一属性的第一键不在高速缓存存储器中,则将所述第一数据库会话的非默认会话信息高速缓存在所述计算机系统的高速缓存存储器中,或者如果所述第一键在所述高速缓存存储器中,则将具有所述第一键的现有键-值条目的值更新为第一数据;
设置第一会话标志以指示非默认会话信息被高速缓存;
响应于检测到所述第一数据库会话的断开,建立第二数据库会话,所述第二数据库会话的建立包括传送所述默认会话设置;
基于所述第一会话标志来确定所述非默认会话信息被高速缓存;
使用为所述第一数据库会话高速缓存在所述计算机系统的高速缓冲存储器中的键-值条目发出一系列设置键-值操作,以透明地恢复具有非默认会话信息的第一会话上下文。
2.根据权利要求1所述的方法,其中,高速缓存所述会话信息包括从所述数据库系统接收包括被传送到所述数据库系统的会话信息的通信,并且高速缓存包含在所接收的通信中的会话信息。
3.根据权利要求1所述的方法,其中,所述第二数据库会话是与所述数据库系统建立的。
4.根据权利要求1所述的方法,其中,所述第二数据库会话是与不同于所述数据库系统的第二数据库系统建立的。
5.根据权利要求1所述的方法,还包括:当包括所述会话信息的数据量超过预定值时,终止对所述第一数据库会话的会话信息的高速缓存。
6.根据权利要求1所述的方法,包括:响应于从所述数据库接收到终止所述高速缓存的通信,终止对所述第一数据库会话的会话信息的高速缓存。
7.根据权利要求6所述的方法,还包括:当高速缓存被终止时,清除所述第一数据库会话的会话信息的高速缓存存储器。
8.一种其上存储有计算机可运行指令的非暂时性计算机可读存储介质,当所述计算机可运行指令由计算机设备运行时,使所述计算机设备执行以下操作:
与数据库系统建立第一数据库会话,所述第一数据库会话的建立包括传送默认会话设置;
将非默认会话信息从计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;
如果标识第一属性的第一键不在高速缓存存储器中,则将所述第一数据库会话的非默认会话信息高速缓存在所述计算机系统的高速缓存存储器中,或者如果所述第一键在所述高速缓存存储器中,则将具有所述第一键的现有键-值条目的值更新为第一数据;
设置第一会话标志以指示非默认会话信息被高速缓存;
响应于检测到所述第一数据库会话的断开,建立第二数据库会话,所述第二数据库会话的建立包括传送所述默认会话设置;
基于所述第一会话标志来确定所述非默认会话信息被高速缓存;
使用为所述第一数据库会话高速缓存在所述计算机系统的高速缓冲存储器中的键-值条目发出一系列设置键-值操作,以透明地恢复具有非默认会话信息的第一会话上下文。
9.根据权利要求8所述的非暂时性计算机可读存储介质,其中,高速缓存所述会话信息包括从所述数据库系统接收包括被传送到所述数据库系统的会话信息的通信,并且高速缓存包含在所接收的通信中的会话信息。
10.根据权利要求8所述的非暂时性计算机可读存储介质,其中,所述第二数据库会话是与所述数据库系统建立的。
11.根据权利要求8所述的非暂时性计算机可读存储介质,其中,所述第二数据库会话是与不同于所述数据库系统的第二数据库系统建立的。
12.根据权利要求8所述的非暂时性计算机可读存储介质,其中,当所述计算机可运行指令由所述计算机设备运行时,还使所述计算机设备当包括所述会话信息的数据量超过预定值时,终止对所述第一数据库会话的会话信息的高速缓存。
13.根据权利要求8所述的非暂时性计算机可读存储介质,其中,当所述计算机可运行指令由所述计算机设备运行时,还使所述计算机设备响应于从所述数据库接收到终止所述高速缓存的通信,终止对所述第一数据库会话的会话信息的高速缓存。
14.根据权利要求8所述的非暂时性计算机可读存储介质,其中,当所述计算机可运行指令由所述计算机设备运行时,还使所述计算机设备在高速缓存被终止时,清除所述第一数据库会话的会话信息的高速缓存存储器。
15.一种装置,包括:
一个或多个计算机处理器;和
计算机可读存储介质,包括用于控制所述一个或多个计算机处理器可操作以执行以下操作的指令:
与数据库系统建立第一数据库会话,所述第一数据库会话的建立包括传送默认会话设置;
将非默认会话信息从计算机系统传送到所述数据库系统,所述会话信息定义所述第一数据库会话的会话上下文;
如果标识第一属性的第一键不在高速缓存存储器中,则将所述第一数据库会话的非默认会话信息高速缓存在所述计算机系统的高速缓存存储器中,或者如果所述第一键在所述高速缓存存储器中,则将具有所述第一键的现有键-值条目的值更新为第一数据;
设置第一会话标志以指示非默认会话信息被高速缓存;
响应于检测到所述第一数据库会话的断开,建立第二数据库会话,所述第二数据库会话的建立包括传送所述默认会话设置;
基于所述第一会话标志来确定所述非默认会话信息被高速缓存;
使用为所述第一数据库会话高速缓存在所述计算机系统的高速缓冲存储器中的键-值条目发出一系列设置键-值操作,以透明地恢复具有非默认会话信息的第一会话上下文。
16.根据权利要求15所述的装置,其中,高速缓存所述会话信息包括从所述数据库系统接收包括被传送到所述数据库系统的会话信息的通信,并且高速缓存包含在所接收的通信中的会话信息。
17.根据权利要求15所述的装置,其中,所述第二数据库会话是与所述数据库系统建立的。
18.根据权利要求15所述的装置,其中,所述第二数据库会话是与不同于所述数据库系统的第二数据库系统建立的。
19.根据权利要求15所述的装置,其中,所述计算机可读存储介质还包括用于控制所述一个或多个计算机处理器可操作以执行以下操作的指令:当包括所述会话信息的数据量超过预定值时,终止对所述第一数据库会话的会话信息的高速缓存。
20.根据权利要求15所述的装置,其中,所述计算机可读存储介质还包括用于控制所述一个或多个计算机处理器可操作以执行以下操作的指令:响应于从所述数据库接收到终止所述高速缓存的通信,终止对所述第一数据库会话的会话信息的高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/222,775 US11663091B2 (en) | 2018-12-17 | 2018-12-17 | Transparent database session recovery with client-side caching |
US16/222,775 | 2018-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324632A CN111324632A (zh) | 2020-06-23 |
CN111324632B true CN111324632B (zh) | 2023-10-20 |
Family
ID=68848011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911280176.6A Active CN111324632B (zh) | 2018-12-17 | 2019-12-13 | 利用客户端侧高速缓存的透明数据库会话恢复 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11663091B2 (zh) |
EP (1) | EP3671482B1 (zh) |
JP (1) | JP7104016B2 (zh) |
CN (1) | CN111324632B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113489635B (zh) * | 2021-06-18 | 2023-08-18 | 深圳软牛科技有限公司 | 基于微信的消息恢复方法和相关设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394037A (zh) * | 2001-06-25 | 2003-01-29 | 华为技术有限公司 | 电信管理网的工作站与操作系统接口实现方法 |
CN1742462A (zh) * | 2003-02-21 | 2006-03-01 | 意大利电信股份公司 | 使用智能卡管理网络接入设备的方法和系统 |
CN101175113A (zh) * | 2006-11-01 | 2008-05-07 | 国际商业机器公司 | 管理对话式输入的方法和装置 |
CN102217341A (zh) * | 2011-05-31 | 2011-10-12 | 华为技术有限公司 | 非语音紧急业务会话建立方法、设备及系统 |
CN103782573A (zh) * | 2011-09-09 | 2014-05-07 | 甲骨文国际公司 | 对客户端和应用掩盖服务器停运 |
WO2015001671A1 (ja) * | 2013-07-05 | 2015-01-08 | 株式会社日立製作所 | 通信制御装置、通信制御装置の制御方法、及び情報処理システム |
CN104508663A (zh) * | 2012-07-27 | 2015-04-08 | 微软公司 | 会话失败后的自动事务重试 |
CN105634951A (zh) * | 2014-11-05 | 2016-06-01 | 中兴通讯股份有限公司 | 一种标签交换路径lsp的平滑重启gr的恢复方法及装置 |
CN106549906A (zh) * | 2015-09-17 | 2017-03-29 | 中兴通讯股份有限公司 | 实现端到端通话加密的方法、终端及网络侧网元 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862689B2 (en) * | 2001-04-12 | 2005-03-01 | Stratus Technologies Bermuda Ltd. | Method and apparatus for managing session information |
US20080126831A1 (en) * | 2006-07-27 | 2008-05-29 | Downey Audra F | System and Method for Caching Client Requests to an Application Server Based on the Application Server's Reliability |
US8229969B1 (en) * | 2008-03-04 | 2012-07-24 | Open Invention Network Llc | Maintaining web session data spanning multiple application servers in a session database |
US8433680B2 (en) * | 2008-07-01 | 2013-04-30 | Oracle International Corporation | Capturing and restoring database session state |
US8213911B2 (en) * | 2009-01-28 | 2012-07-03 | Virtual Hold Technology Llc | Mobile communication device for establishing automated call back |
US9600371B2 (en) * | 2011-09-09 | 2017-03-21 | Oracle International Corporation | Preserving server-client session context |
EP2968237A4 (en) * | 2013-03-15 | 2016-08-31 | Univ Johns Hopkins | METHOD AND COMPOSITIONS FOR IMPROVING COGNITIVE FUNCTION |
-
2018
- 2018-12-17 US US16/222,775 patent/US11663091B2/en active Active
-
2019
- 2019-12-10 EP EP19214758.5A patent/EP3671482B1/en active Active
- 2019-12-12 JP JP2019224632A patent/JP7104016B2/ja active Active
- 2019-12-13 CN CN201911280176.6A patent/CN111324632B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394037A (zh) * | 2001-06-25 | 2003-01-29 | 华为技术有限公司 | 电信管理网的工作站与操作系统接口实现方法 |
CN1742462A (zh) * | 2003-02-21 | 2006-03-01 | 意大利电信股份公司 | 使用智能卡管理网络接入设备的方法和系统 |
CN101175113A (zh) * | 2006-11-01 | 2008-05-07 | 国际商业机器公司 | 管理对话式输入的方法和装置 |
CN102217341A (zh) * | 2011-05-31 | 2011-10-12 | 华为技术有限公司 | 非语音紧急业务会话建立方法、设备及系统 |
CN103782573A (zh) * | 2011-09-09 | 2014-05-07 | 甲骨文国际公司 | 对客户端和应用掩盖服务器停运 |
CN107688487A (zh) * | 2011-09-09 | 2018-02-13 | 甲骨文国际公司 | 用于恢复数据库会话的状态的方法和系统 |
CN104508663A (zh) * | 2012-07-27 | 2015-04-08 | 微软公司 | 会话失败后的自动事务重试 |
WO2015001671A1 (ja) * | 2013-07-05 | 2015-01-08 | 株式会社日立製作所 | 通信制御装置、通信制御装置の制御方法、及び情報処理システム |
CN105634951A (zh) * | 2014-11-05 | 2016-06-01 | 中兴通讯股份有限公司 | 一种标签交换路径lsp的平滑重启gr的恢复方法及装置 |
CN106549906A (zh) * | 2015-09-17 | 2017-03-29 | 中兴通讯股份有限公司 | 实现端到端通话加密的方法、终端及网络侧网元 |
Non-Patent Citations (1)
Title |
---|
基于CAN FD的车载Bootloader研究与实现;刘乐乐;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;1-88 * |
Also Published As
Publication number | Publication date |
---|---|
JP2020098598A (ja) | 2020-06-25 |
US20200192766A1 (en) | 2020-06-18 |
EP3671482C0 (en) | 2024-04-03 |
US11663091B2 (en) | 2023-05-30 |
CN111324632A (zh) | 2020-06-23 |
JP7104016B2 (ja) | 2022-07-20 |
EP3671482B1 (en) | 2024-04-03 |
EP3671482A1 (en) | 2020-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8533171B2 (en) | Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover | |
RU2595482C2 (ru) | Обеспечение прозрачной отработки отказа в файловой системе | |
US7689862B1 (en) | Application failover in a cluster environment | |
US9286298B1 (en) | Methods for enhancing management of backup data sets and devices thereof | |
US11144405B2 (en) | Optimizing database migration in high availability and disaster recovery computing environments | |
US20140081927A1 (en) | Data node fencing in a distributed file system | |
US11709743B2 (en) | Methods and systems for a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system | |
US20070220323A1 (en) | System and method for highly available data processing in cluster system | |
US20120259819A1 (en) | Method and system for performing a clean file lock recovery during a network filesystem server migration or failover | |
US9846624B2 (en) | Fast single-master failover | |
US12050558B2 (en) | Facilitating immediate performance of volume resynchronization with the use of passive cache entries | |
WO2022036901A1 (zh) | 一种Redis副本集的实现方法及装置 | |
CN106339278A (zh) | 一种网络文件系统的数据备份及恢复方法 | |
JP2001109726A (ja) | 分散コンピュータ・システム内のプロセッサを再構成する方法、システム、および、記憶装置 | |
US11550677B2 (en) | Client-less database system recovery | |
CN111901176B (zh) | 故障确定方法、装置、设备及存储介质 | |
CN111324632B (zh) | 利用客户端侧高速缓存的透明数据库会话恢复 | |
CN117667523A (zh) | 提升Oracle DG高可用性的数据库集群维护方法及系统 | |
US20050068888A1 (en) | Seamless balde failover in platform firmware | |
CN109753292B (zh) | 一种在多单实例数据库服务中部署多个应用的方法及装置 | |
CN113760862A (zh) | 一种增量数据断点续传方法、装置、设备及存储介质 | |
CN111563010B (zh) | 一种基于双机冗余系统的数据同步方法、系统及存储介质 | |
JP2008242742A (ja) | クラスタシステム | |
US20240320104A1 (en) | Providing status notifications of file-copy operations to backup clients | |
US10579482B2 (en) | Method of checkpointing the working environment of a session of a user on a server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |