CN109063132A - 闩锁请求方法、闩锁授权方法、装置及终端设备 - Google Patents

闩锁请求方法、闩锁授权方法、装置及终端设备 Download PDF

Info

Publication number
CN109063132A
CN109063132A CN201810872377.4A CN201810872377A CN109063132A CN 109063132 A CN109063132 A CN 109063132A CN 201810872377 A CN201810872377 A CN 201810872377A CN 109063132 A CN109063132 A CN 109063132A
Authority
CN
China
Prior art keywords
latch
request
database
blocked
authorization
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.)
Granted
Application number
CN201810872377.4A
Other languages
English (en)
Other versions
CN109063132B (zh
Inventor
韩朱忠
王海龙
薛慧
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.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
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 Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN201810872377.4A priority Critical patent/CN109063132B/zh
Publication of CN109063132A publication Critical patent/CN109063132A/zh
Application granted granted Critical
Publication of CN109063132B publication Critical patent/CN109063132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了闩锁请求方法、闩锁授权方法、装置及终端设备。所述方法包括:接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。利用该方法能够有效地避免每次数据库节点发起第一闩锁请求均引发一次与第一数据库的信息交互,有效地减少了全局数据库间的并发冲突,提高了数据库集群的工作效率。

Description

闩锁请求方法、闩锁授权方法、装置及终端设备
技术领域
本发明实施例涉及数据库技术领域,尤其涉及闩锁请求方法、闩锁授权方法、装置及终端设备。
背景技术
闩(LATCH)是数据库管理系统中一种轻量级资源锁,用于快速、短时间锁定资源,防止用户访问某个正在被修改的共享资源。
闩一般提供两种封锁模式:共享模式和独占模式,分别用S和X表示。共享模式顾名思义就是以只读方式锁定一个对象,阻止其他用户修改对象,并允许多个用户同时以共享模式封锁。一个对象一旦被以独占模式锁定后,其他用户不再允许访问此对象,修改对象之前必须先以独占模式封锁对象。多个用户同时对同一个对象进行X封锁,会产生冲突,后发起请求的用户会被阻塞,直到先请求的用户释放闩锁后被唤醒;如果多个用户分别请求S封锁和X封锁,也会产生闩锁冲突。
共享存储数据库集群允许多个数据库实例同时访问、修改同一个数据库的数据页,因此需要将闩扩展成为一种全局并发访问控制机制。一种比较直观的做法是将闩直接扩展为全局对象,指定一个实例作为控制实例,所有实例直接向控制实例发起闩锁请求。这种方式可以达到并发控制的目的,但所有闩封锁、闩锁授权、闩锁释放操作,都需要通过网络在数据库实例间进行传递,会影响数据库管理系统的整体性能。
发明内容
本发明实施例提供了闩锁请求方法、闩锁授权方法、装置及终端设备,能够有效避免每次闩封锁都引发一次数据库实例间的信息交互。
第一方面,本发明实施例提供了一种闩锁请求方法,包括:
接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;
根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;
如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
第二方面,本发明实施例还提供了一种闩锁授权方法,包括:
接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;
根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;
如果查找结果满足请求授权条件,则向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
第三方面,本发明实施例还提供了一种闩锁请求装置,包括:
请求接收模块,用于接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;
请求查询模块,用于根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;
请求发送模块,用于当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
第四方面,本发明实施例还提供了一种闩锁授权装置,包括:
接收模块,用于接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;
查询模块,用于根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;
发送模块,用于当查找结果满足请求授权条件时,向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
第五方面,本发明实施例还提供了一种终端设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的闩锁请求方法。
第六方面,本发明实施例还提供了一种终端设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的闩锁授权方法。
第七方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的闩锁请求方法。
第八方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的闩锁授权方法。
本发明实施例提供了闩锁请求方法、闩锁授权方法、装置及终端设备,利用上述技术方案,能够在接收到对应的数据库节点发起的第一闩锁请求时,根据该第一闩锁请求查找数据库节点对应的本地控制信息。如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,有效地避免了每次数据库节点发起第一闩锁请求均引发一次与第一数据库的信息交互,有效地减少了全局数据库间的并发冲突和用户使用第二数据库的响应时间,提高了数据库集群的工作效率。此外,该闩锁请求方法可以作为一种可选插件单独实现,复用性强,提升了用户使用数据库的体验。
附图说明
图1为本发明实施例一提供的一种闩锁请求方法的流程示意图;
图2为本发明实施例二提供的一种闩锁请求方法的流程示意图;
图3为本发明实施例三提供的一种闩锁授权方法的流程示意图;
图4为本发明实施例四提供的一种闩锁授权方法的流程示意图;
图5为本发明实施例五提供的一种闩锁请求装置的结构示意图;
图6为本发明实施例六提供的一种闩锁授权装置的结构示意图;
图7为本发明实施例七提供的一种终端设备的结构示意图;
图8为本发明实施例八提供的一种终端设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种闩锁请求方法的流程示意图,该方法可适用于数据库节点向提供闩锁授权的第一数据库发起闩锁请求的情况,该方法可以由闩锁请求装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在终端设备上,在本实施例中终端设备包括但不限于:手机、电脑、服务器和个人数字助理等设备。
一般的,现有数据库集群管理中,将闩(LATCH)扩展成全局并发访问控制机制,但所有的闩操作都需要通过网络在数据库实例间进行传递,影响了数据库管理系统的整体性能。本实施例通过分层机制将闩划分为:全局闩服务(GLOBAL LATCH SERVICE,简称GBS)、本地闩服务(LOCAL LATCH SERVICE,简称LBS)、以及本地闩(LATCH)。
其中,全局闩服务可以为提供闩锁授权的第一数据库提供,全局闩服务可以提供实例间的闩资源管理,记录哪些实例获取了什么模式的闩锁,哪些实例正在请求闩封锁等信息;本地闩服务可以为提供闩锁请求的第二数据库提供,本地闩服务可以管理当前实例已获得授权的闩锁,记录已经获得哪些对象、什么模式的闩锁,以及正在请求闩封锁的对象和模式;本地闩可以为数据库节点,提供基本的并发访问控制功能。
这种分层机制可以避免每次闩封锁都引发一次全局实例间的信息交互,有效降低全局实例间的并发冲突。并且,全局闩服务和本地闩服务可以单独实现,作为一种可选插件,本地闩可以直接重用单节点闩的实现,从而简化系统实现的复杂度。
如图1所示,本发明实施例一提供的一种闩锁请求方法,包括如下步骤:
S101、接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式。
在本实施例中,数据库节点可以理解为单节点数据库,其提供基本的并发访问控制功能。对应的数据库节点可以理解为提供闩锁请求的第二数据库所对应的数据库节点。其中,提供闩锁请求的第二数据库可以理解为数据库集群中向提供闩锁授权的第一数据库发起闩锁请求的数据库。
第一闩锁请求可以理解为数据库节点向提供闩锁请求的第二数据库发起的闩锁请求。待封锁对象可以理解为数据库节点想要进行闩封锁的第一数据库中的对象。该待封锁对象可以存储在提供闩锁授权的第一数据库中,数据库节点通过提供闩锁请求的第二数据库向第一数据库发起相应的闩锁请求。闩封锁模式可以理解为数据库节点针对该待封锁对象想要获得的封锁模式。一般的,闩封锁模式可以包括共享模式和独占模式。其中,共享模式可以允许多个用户同时以只读的方式锁定该待封锁对象。独占模式只允许一个用户锁定该待封锁对象。
一般的,提供闩锁请求的第二数据库接收到对应的数据库节点发起的第一闩锁请求后,可以基于该第一闩锁请求所包括的待封锁对象和对应的闩封锁模式确定是否向提供闩锁授权的第一数据库发起请求。从而有效地避免了每次数据库节点发起第一闩锁请求都需要通过网络与第一数据库进行交互。在本实施例中,当提供闩锁请求的第二数据库获得待封锁对象的闩锁授权信息就一直持有该待封锁对象的闩锁权限,直到接收到提供闩锁授权的第一数据库发起权限回收请求并且提供闩锁请求的第二数据库中该待封锁对象未处于使用状态。
S102、根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息。
在本实施例中,本地控制信息可以理解为提供闩锁请求的第二数据库中针对待封锁对象的控制信息。历史第一闩锁请求可以理解为提供闩锁请求的第二数据库历史接收到的第一闩锁请求。一般的,数据库节点可以对应多个用户,该历史第一闩锁请求可以为不同用户所发起的第一闩锁请求信息。其中,历史第一闩锁请求中可以存储有用户标识,用于标识发起历史第一闩锁请求的用户。本地闩锁授权信息可以理解为提供闩锁请求的第二数据库当前所接收到的闩锁授权信息。
一般的,根据第一闩锁请求查找本地控制信息可以确定第二数据库当前是否已经获得该待封锁对象的闩锁授权信息;也可以确定第二数据库当前是否已针对该待封锁对象的该闩封锁模式或更高级别的闩封锁模式发起闩锁请求。
具体的:本地控制信息中包括的历史第一闩锁请求可以用于确定第二数据库当前是否针对待封锁对象及对应的闩封锁模式向第一数据库发起过闩锁请求;或,针对该待封锁对象及更高等级的闩锁模式发起过闩锁请求。本地控制信息中包括的本地闩锁授权信息可以用于确定待封锁对象及对应的闩封锁模式是否已经得到授权。
在本实施例中,历史第一闩锁请求可以包括历史待封锁对象及对应的历史闩封锁模式。本地闩锁授权信息可以包括已授权待封锁对象及对应的闩封锁模式。可以理解的是,该本地控制信息中历史第一闩锁请求和本地闩锁授权信息可以分别存储,当请求授权后,可以将历史第一闩锁请求中对应内容存入本地闩锁授权信息中。此外,本地控制信息可以存储在哈希表中,该本地控制信息可以包括所有的待封锁对象,并在对应待封锁对象的相应位置处记录其历史第一闩锁请求信息和本地闩锁授权信息。
S103、如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
在本实施例中,请求发送条件可以理解为第二数据库发送第二闩锁请求的条件。提供闩锁授权的第一数据库可以理解为数据库集群中所选取的一个控制实例。该控制实例可以提供共享存储,数据库集群中其余数据库可以通过向该实例发起第二闩锁请求以获得该实例中相应待封锁对象的封锁权限。第二闩锁请求可以理解为第二数据库向第一数据库发起的封锁请求。实例标识可以理解为第二数据库的标识信息。实例标识用于标识发起第二闩锁请求的实例;也可以使第一数据库基于该标识向对应的第二数据库返回闩锁授权信息。
进一步的,所述请求发送条件包括:未授权条件和未请求条件。当该第一闩锁请求满足未授权条件且满足未请求条件,则可以向第一数据库发送第二闩锁请求,以获得该待封锁对象的对应的闩封锁模式。其中,未授权条件可以理解为当前第二数据库针对该待封锁对象和对应的闩封锁模式未得到授权。未请求条件可以理解为当前第二数据库针对该待封锁对象和对应的闩封锁模式未向第一数据库发起请求。
需要注意的是,针对该待封锁对象和对应的闩封锁模式没得到授权或未发起请求可以包括,没有该待封锁对象的该闩封锁模式的授权或请求;或,没有该待封锁对象的更高闩封锁模式的授权或请求。
本发明实施例一提供的一种闩锁请求方法,首先接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;然后根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;最终如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。利用上述方法,能够在接收到第一闩锁请求后,根据第一闩锁请求查找本地控制信息,确定查找结果是否满足请求发送条件,以决定是否需要向第一数据库发送第二闩锁请求。有效地避免每次数据库节点发起第一闩锁请求均引发一次与第一数据库的信息交互,有效地减少了全局数据库间的并发冲突和用户使用数据库的响应时间,提高了数据库集群的工作效率。此外,该闩锁请求方法可以作为一种可选插件单独实现,复用性强,提升了用户使用数据库的体验。
实施例二
图2为本发明实施例二提供的一种闩锁请求方法的流程示意图,本实施例二在上述各实施例的基础上进行优化。在本实施例中,将未授权条件,进一步具体化为:所述本地闩锁授权信息中不包括所述待封锁对象或所述本地闩锁授权信息中所述待封锁对象对应的授权闩封锁模式的等级低于所述闩封锁模式的等级;将未请求条件,进一步具体优化为:所述历史第一闩锁请求中不包括所述待封锁对象或所述历史第一闩锁请求中所述待封锁对象对应的历史闩封锁模式的等级低于所述闩封锁模式的等级;其中,所述闩封锁模式包括共享模式和等级大于所述共享模式的独占模式。
进一步的,本实施例还进一步优化包括:将所述第一闩锁请求存入所述历史第一闩锁请求;所述第一闩锁请求还包括所述数据库节点当前所服务用户的用户标识;当接收到所述第一数据库发送的所述待封锁对象的闩锁授权信息时,将所述闩锁授权信息存入所述本地闩锁授权信息并将所述历史第一闩锁请求中所述第一闩锁请求清除;根据所述用户标识向所述数据库节点发送授权通知。
在上述优化的基础上,本实施例还进一步优化包括:当接收到所述第一闩锁请求时,将所述封锁对象对应的引用计数加一;当接收到所述对应数据库节点发起的释放信息时,将所述引用计数减一;当所述引用计数为零且存在所述第一数据库发送的权限回收请求时,向所述第一数据库发送回收响应信息。本实施例尚未详尽的内容请参考实施例一。
如图2所示,本发明实施例二提供的一种闩锁请求方法,包括如下步骤:
S201、接收对应的数据库节点发起的第一闩锁请求;第一闩锁请求还包括所述数据库节点当前所服务用户的用户标识。
在本实施例中,提供本地闩服务的第二数据库首先接收对应的数据库节点发起的第一闩锁请求。该第一闩锁请求包括数据库节点的待封锁对象和对应的闩封锁模式,还包括数据库节点当前所服务用户的用户标识。在接收到闩锁授权信息后,可以基于该用户标识唤醒对应的用户执行相应操作,如基于该用户标识向该用户发送授权通知,以使该用户执行相应操作。
S202、根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息。
在本实施例中,在接收到第一闩锁请求后,根据该第一闩锁请求查找本地控制信息,以确定是否向第一数据库发送第二闩锁请求。
S203、判断本地闩锁授权信息中是否不包括待封锁对象或本地闩锁授权信息中待封锁对象对应的授权闩封锁模式的等级是否低于闩封锁模式的等级,若是,则执行S204;若否,则执行S209。
在本实施例中,授权闩封锁模式可以理解为本地闩锁授权信息中存储的已得到第一数据库授权的该待封锁对象的闩封锁模式。等级可以理解为闩封锁模式的优先级。闩封锁模式可以包括共享模式和独占模式。其中,共享模式的等级低于独占模式的等级。
一般的,请求发送条件所包括的未授权条件可以为本地闩锁授权信息中不包括待封锁对象或本地闩锁授权信息中待封锁对象对应的授权闩封锁模式的等级低于闩封锁模式的等级。
其中,本地闩锁授权信息中不包括待封锁对象可以理解为当前待封锁对象未得到授权。本地闩锁授权信息中待封锁对象对应的授权闩封锁模式的等级低于闩封锁模式的等级可以理解为当前数据库节点所请求的待封锁对象所对应的闩封锁模式未得到授权。
示例性的,当数据库节点发送的第一闩锁请求中的待封锁对象为数据页A,对应的闩封锁模式为X。本地闩锁授权信息中包含了该数据页A,其对应的授权闩封锁模式为S,则此时可以确定当前查询结果满足未授权条件。此外,当本地闩锁授权信息中不包括数据页A时,也可以认为当前查询结果满足未授权条件。
在本实施例中,当本地闩锁授权信息中不包括待封锁对象或本地闩锁授权信息中待封锁对象对应的授权闩封锁模式的等级低于闩封锁模式的等级时,可以继续判断是否满足未请求条件,即执行S204;否则,可以说明第二数据库当前已获得该待封锁对象的授权,则可以执行S209。
S204、判断历史第一闩锁请求中是否不包括待封锁对象或历史第一闩锁请求中待封锁对象对应的历史闩封锁模式的等级是否低于闩封锁模式的等级,若是,则执行S205;若否,则执行S206。
在本实施例中,历史闩封锁模式可以理解为历史第一闩锁请求中存储的数据库节点已发起的第一闩锁请求中所包括的闩封锁模式。
一般的,请求发送条件所包括的未请求条件可以为历史第一闩锁请求中不包括待封锁对象或历史第一闩锁请求中待封锁对象对应的历史闩封锁模式的等级低于闩封锁模式的等级。
其中,历史第一闩锁请求中不包括待封锁对象可以理解为第二数据库未向第一数据库发起过该待封锁对象的请求。历史第一闩锁请求中待封锁对象对应的历史闩封锁模式的等级低于闩封锁模式的等级可以理解为第二数据库未向第一数据库发起过该待封锁对象所对应的闩封锁模式的请求。
示例性的,当数据库节点发送的第一闩锁请求中的待封锁对象为数据页A,对应的闩封锁模式为X。历史第一闩锁请求中包含了该数据页A,其对应的历史闩封锁模式为S,则此时可以认为当前查询结果满足未请求条件。此外,当本地闩锁授权信息中不包含数据页A时,也可以认为当前查询结果满足未请求条件。
在本实施例中,当历史第一闩锁请求中不包括待封锁对象或历史第一闩锁请求中待封锁对象对应的历史闩封锁模式的等级低于闩封锁模式的等级时,可以向第一数据库发送第二闩锁请求,即可以执行S205;否则,可以说明此时已经向第二数据库发送过该待封锁对象的该闩封锁模式的第二闩锁请求,则无需再向第二数据库发送,相应的,直接执行S206即可。
S205、向提供闩锁授权的第一数据库发送第二闩锁请求。
在本实施例中,当查询结果满足未授权条件且满足未请求条件时,则可以向提供闩锁授权的第一数据库发送第二闩锁请求,以等待第一数据库基于该第二闩锁请求发送闩锁授权信息。
S206、将所述第一闩锁请求存入所述历史第一闩锁请求。
在本实施例中,当数据库节点发送第一闩锁请求且第一闩锁请求满足未授权条件时,可以将该第一闩锁请求存入历史第一闩锁请求中,以便记录第二数据库接收到的全部第一闩锁请求,从而通过历史第一闩锁请求能够判断第一闩锁请求是否满足未请求条件。此外,将第一闩锁请求存入历史第一闩锁请求也可以在该第一闩锁请求得到第一数据库授权后,基于记录的第一闩锁请求向对应用户发起授权通知,以使该用户继续执行相应操作。
可以理解的是,本步骤的执行顺序不作限定,还可以在满足未授权条件后执行,如在S203与S204之间执行。
S207、判断是否接收到所述第一数据库发送的所述待封锁对象的闩锁授权信息,若是,则执行S208;若否,则执行S207。
在本实施例中,闩锁授权信息可以理解为第一数据库发送的针对第二闩锁请求的授权信息。闩锁授权信息可以包括待封锁对象、对应的闩封锁模式及数据库节点的实例标识。
一般的,基于查询结果确定是否向第一数据库发送第二闩锁请求后,第二数据库可以等待第一数据库针对该第二闩锁请求的授权。具体的,可以判断是否接收到第一数据库发送的闩锁授权信息,若接收到,则可以执行S208;若否,则可以持续监测,直至接收到第一数据库发送的闩锁授权信息为止,即可以继续执行S207。
S208、将所述闩锁授权信息存入所述本地闩锁授权信息并将所述历史第一闩锁请求中所述第一闩锁请求清除。
在本实施例中,当接收到第一数据库发送的闩锁授权信息后,第二数据库可以更新本地控制信息的状态。具体的,本步骤可以将接收到的闩锁授权信息存入本地闩锁授权信息,如将闩锁授权信息中的待封锁对象及对应的闩封锁模式存入本地闩锁授权信息中。此外,由于此时该第一闩锁请求已得到授权,故本步骤可以将历史第一闩锁请求中所述第一闩锁请求清除,以便于后续进行未请求条件的判断。
S209、根据所述用户标识向所述数据库节点发送授权通知;将所述封锁对象对应的引用计数加一。
当接收到第一数据库发送的闩锁授权信息或第一闩锁请求满足授权条件(本地闩锁授权信息中包括待封锁对象且对应的闩封锁模式的等级不低于闩封锁模式的等级)时,本步骤可以根据第一闩锁请求中的用户标识向对应的用户发送授权通知,以通知该用户当前已得到第一闩锁请求的授权。
其中,授权通知可以理解为第二数据库发送给数据库节点的唤醒信息,用于通知数据库节点当前已接收到第一闩锁请求的授权。授权通知中可以包括待封锁对象、对应的闩封锁模式和用户标识。引用计数可以理解为用于标识待封锁对象引用数量的标识信息。
本步骤中,待封锁对象对应的引用计数可以存储于本地控制信息中该待封锁对象的对应位置处,用于标识该待封锁对象当前使用的数量。可以用于判断是否响应第一数据库的权限回收请求,也可以在本地控制信息内存满时,确定清除的内容。如将引用计数为0的待封锁对象的相应内容清除。
一般的,本步骤中将引用计数加一的操作顺序不作限定,当接收到第一闩锁请求后,即可将该第一闩锁请求包含的待封锁对象对应的引用计数加一。此外,本实施例中也可以将引用计数以预设增量增加,如每次增加2、3或4,此处并不对增量进行限定。
S210、判断是否接收到所述对应数据库节点发起的释放信息,若是,则执行S211;若否,则执行S210。
在本实施例中,释放信息可以理解为数据库节点发送给第二数据库的释放本地闩封锁的通知信息。其中,释放信息可以包括释放对象和对应的闩封锁模式,还可以包括用户标识。其中,释放对象可以为目前已得到授权的待封锁对象。
一般的,数据库节点接收到第二数据库发送的授权通知后,可以执行本地闩封锁操作,然后访问和/或修改待封锁对象,在访问和/或修改完待封锁对象后,可以向第二数据库发送释放信息,以通知第二数据库修改相应信息,即可以执行S211;若第二数据库没有接收到释放信息,则可以继续监测,即执行S210。
S211、将所述引用计数减一。
本步骤在接收到对应数据块节点发起的释放信息后,可以基于该释放信息将对应的引用计数减一。一般的,引用计数加一可以标识当前将有一个用户使用该待封锁对象,引用计数减一可以说明当前释放信息对应的用户使用完该待封锁对象。
S212、判断引用计数是否为零,若是,则执行S213;若否,则执行S215。
本步骤中,可以在每次引用计数减一后,判断引用计数的值是否为零,如果引用计数为零,则可以进一步确定是否需要释放第二数据库中该待封锁对象的授权,即可以执行S213;若引用计数不为零,则可以执行S215。
S213、判断是否存在所述第一数据库发送的权限回收请求;若是,则执行S214;若否,则执行S215。
在本实施例中,权限回收请求可以理解为第一数据库发送的针对该待封锁对象的权限回收信息。权限回收请求可以包括回收对象、对应的闩封锁模式、实例标识及回收指令。当第二数据库接收到第一数据库发送的权限回收请求时,可以说明此时第二数据库为其他第二数据库的冲突数据库。其他第二数据库此时可能正向第一数据库请求该待封锁对象的授权。其中,回收对象可以对应于第二数据库当前已得到授权的待封锁对象。回收指令可以用于标识该权限回收请求。
在本实施例中,第二数据库接收到闩锁授权信息后可以始终保留该权限,直至接收到第一数据库发送权限回收请求后决定是否释放该闩锁授权信息。如果存在第一数据库发送的权限回收请求,可以释放该待封锁对象的授权,即可以执行S214;若不存在第一数据库发送的权限回收请求,则可以说明此时第一数据库并未回收该待封锁对象的权限,即执行S215。
进一步的,本实施例闩锁请求方法还包括:接收所述第一数据库发送的权限回收请求,所述权限回收请求包括回收对象;如果所述本地闩锁授权信息中不存在所述回收对象或所述回收对象对应的引用计数为零,则向所述第一数据库发送回收响应信息;否则登记所述权限回收请求。
在本实施例中,回收响应信息可以理解为第二数据库发送至第一数据库的针对权限回收请求的响应消息。回收响应信息可以包括回收对象、对应的闩封锁模式、数据库节点的实例标识及回收响应指令。回收响应指令可以标识该请求为回收响应消息。
当接收到第一数据库发送的权限回收请求后,可以查找本地闩锁授权信息中是否存在权限回收请求所包含的回收对象(该回收对象可以为第二数据库已得到第一数据库授权的待封锁对象中的一个)。如果不包括该回收对象,则可以说明第二数据库中已将该回收对象的相应内容清除,则第二数据库可以向第一数据库发送回收响应信息;如果包含该回收对象且该回收对象的引用计数为零,则第二数据库可以释放该回收对象的权限并可以向第一数据库发送回收响应信息;如果包括该回收对象但该回收对象的引用计数不为零,则第二数据库可以登记该权限回收请求,直至引用计数为零时释放该回收对象的权限并可以向第一数据库发送回收响应信息。
在本实施例中,登记权限回收请求时,可以将权限回收请求存入本地控制信息中相应位置。如可以在本地控制信息对应于回收对象的待封锁对象位置处存储该权限回收请求;也可以将权限回收请求单独存放。
S214、向所述第一数据库发送回收响应信息。
在本实施例中,当待封锁对象对应的引用计数为零且存在该待封锁对象的权限回收请求时,本步骤可以向第一数据库发送针对该权限回收请求的回收响应信息,释放该待封锁对象的闩锁授权信息。
S215、结束。
在本实施例中,当引用计数不为零、引用计数为零但不存在权限回收请求和向第一数据库发送回收响应信息后,可以结束操作。
更加具体的,本实施例中的闩锁请求方法的流程如下:
本实施例通过分层机制将闩划分为:全局闩服务(GLOBAL LATCH SERVICE,简称GBS)、本地闩服务(LOCAL LATCH SERVICE,简称LBS)、以及本地闩(LATCH)。全局闩服务可以为提供闩锁授权的第一数据库提供;本地闩服务可以为提供闩锁请求的第二数据库提供;本地闩可以为数据库节点。
在共享存储数据库集群中本地闩(对应提供闩锁请求的第二数据库的数据库节点)发起第一闩锁请求(闩封锁请求)时,先通过本地闩服务(提供闩锁请求的第二数据库)确定当前实例是否已经获得指定对象(待封锁对象)的全局闩服务授权(提供闩锁授权的第一数据库发送的闩锁授权信息)。如果没有,则通过本地闩服务向全局闩服务请求指定对象的闩锁授权(闩锁授权信息)。全局闩服务收到本地闩服务指定对象的闩锁请求后,授予请求实例相应的权限;或向冲突实例的本地闩服务回收权限后再授予请求实例相应权限。
在确定当前实例已经获得全局闩服务指定对象的闩锁授权后,再使用本地闩进行数据库实例内部的资源并发控制。数据库对象(如数据页)在本地闩服务中的控制信息以本地控制信息(LBS_CTL)表示。在全局闩服务中的控制信息以全局控制信息(GBS_CTL)表示。此外,闩封锁模式中X闩锁级别比S闩锁级别高。
提供闩锁请求的第二数据库闩封锁可以包括下列步骤:
(1)本地闩向LBS请求某对象(待封锁对象)的闩封锁。
(2)LBS检查当前实例是否已经获得GBS授权此对象的闩封锁。
(3)已获得GBS授权,则执行步骤(8)。
(4)未获得GBS授权则执行步骤(5)。
(5)LBS在LBS_CTL上登记闩请求信息(第一闩锁请求),并检查是否已经发起相同级别或者更高级别的闩请求。
(6)已经发起相同级别或者更高级别的闩请求,则等待GBS授权,获得GBS授权后,执行步骤(8)。
(7)未发起请求相同级别或者更高级别的闩请求,则LBS向GBS发送闩封锁信息(第二闩锁请求),并等待GBS授权,获得GBS授权后,执行步骤(8)。
(8)将LBS_CTL引用计数N_FIXED加1并执行本地闩封锁。
(9)本地闩访问、修改对象。
(10)本地闩释放本地闩封锁。
(11)本地闩通知LBS释放资源,LBS_CTL引用计数N_FIXED减1。
(12)LBS检查LBS_CTL引用计数,如果N_FIXED>0,执行结束;如果N_FIXED==0,检查是否存在GBS回收权限的请求(权限回收请求),不存在GBS回收请求,执行结束。否则,执行步骤(13)
(13)LBS释放本地闩服务的授权信息,并响应全局闩服务,执行结束。
此外,LBS在接收到GBS发送的权限回收请求后的处理可以包括以下步骤:
(1)LBS收到GBS回收权限请求。
(2)LBS查找LBS_CTL是否存在。
(3)未找到GBS_CTL,直接响应GBS。
(4)否则,根据LBS_CTL的N_FIXED计数判断是否正在使用中。
(5)LBS_CTL的引用计数N_FIXED==0,释放闩锁并响应GBS。
(6)LBS_CTL的引用计数N_FIXED>0,登记GBS回收权限请求信息,等待LBS_CTL资源释放(后续由闩封锁流程的步骤12进行处理)。
本发明实施例二提供的一种闩锁请求方法,具体化了请求发送条件,还优化包括了第一闩锁请求存储操作、第一闩锁请求清除操作、授权通知操作、引用计数增加操作、引用计数减小操作和回收响应发送操作。利用该方法,能够在接收到第一闩锁请求后,根据查询结果确定是否向第一数据库发送第二闩锁请求。在该待封锁对象满足未授权条件和未请求条件时,才向第一数据库发送第二闩锁请求,有效地减少了第二数据库与第一数据库间交互次数和用户使用第二数据库的响应时间。在数据库节点发送第一闩锁请求后将对应的引用计数加一,并在接收到数据库节点发起的释放信息后,将对应的引用计数减一,实现对待封锁对象使用状态的记录,方便第二数据库在存在权限回收请求时确定是否向第一数据库发送回收响应信息,以释放相应的闩锁授权信息。从而使第一数据库针对该回收响应信息进行后续处理,有效地提升了数据库集群的工作效率,提升了用户使用数据库的体验。
实施例三
图3为本发明实施例三提供的一种闩锁授权方法的流程示意图。该方法可适用于提供闩锁授权的第一数据库响应提供闩锁请求的第二数据库发起的第二闩锁请求的情况,该方法可以由闩锁授权装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在终端设备上,在本实施例中终端设备包括但不限于:手机、电脑、服务器和个人数字助理等设备。
如图3所示,本发明实施例三提供的一种闩锁授权方法,包括如下步骤:
S301、接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识。
在本实施例中,提供闩锁请求的第二数据库可以理解为数据库集群中向提供闩锁授权的第一数据库发起闩锁请求的数据库。第二闩锁请求可以理解为第二数据库发起的用于请求闩封锁权限的请求信息。待封锁对象可以理解为第二数据库想要进行闩封锁的第一数据库中的对象。对应的闩封锁模式可以理解为第二数据库针对该待封锁对象想要获得的封锁模式。闩封锁模式可以包括共享模式(S模式)和独占模式(X模式)。第二数据库的实例标识可以理解为第二数据库的标识信息。第一数据库可以基于该实例标识向对应的第二数据库发送信息。
其中,第二闩锁请求所请求的是待封锁对象的闩封锁模式。如,数据页A的共享模式,当第二数据库获取数据页A的共享模式的权限后,第二数据库可以对该数据库A执行S模式封锁。第一数据库基于该第二闩锁请求可以确定是否授予该第二闩锁请求相应的权限。
S302、根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息。
在本实施例中,数据库集群可以理解为共享存储的多个数据库所构成的集群。全局控制信息可以理解为第一数据库中存储的针对待封锁对象的控制信息。该全局控制信息中存储了数据库集群中各数据库对应的历史第二闩锁请求和全局闩锁授权信息。历史第二闩锁请求可以理解为第一数据库历史接收到的第二数据库发送的第二闩锁请求。全局闩锁授权信息可以理解为第一数据库当前所发送的闩锁授权信息。
一般的,根据第二闩锁请求查找全局控制信息可以确定第二闩锁请求中包括的待封锁对象是否已授权给其他第二数据库;也可以确定第一数据库中该待封锁对象当前是否存在其他未授权的请求或是否存在占用该待封锁对象的冲突数据库。
具体的,全局控制信息中包括的历史第二闩锁请求可以包括第二历史待封锁对象、对应的第二历史闩封锁模式及对应的历史实例标识。历史第二闩锁请求可以用于确定第一数据库是否存在该待封锁对象的闩锁请求。
全局控制信息中包含的全局闩锁授权信息可以包括授权待封锁对象、对应的闩封锁模式及对应的授权实例标识。全局闩锁授权信息可以用于确定第一数据库当前是否已将待封锁对象授权给其他第二数据库;或用于确定第一数据库当前是否存在占用待封锁对象的冲突数据库。
可以理解的是,全局控制信息中的历史第二闩锁请求和全局闩锁授权信息可以分别存储,当请求授权后,可以将历史第二闩锁请求中对应的内容存入全局闩锁授权信息中。此外,全局控制信息可以存储在哈希表中,该全局控制信息可以包含所有待封锁对象,并在对应待封锁对象的相应位置处记录其历史第二闩锁请求信息和全局闩锁授权信息。
S303、如果查找结果满足请求授权条件,则向所述第二数据库发送所述待封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
在本实施例中,请求授权条件可以理解为第一数据库发送对应于第二闩锁请求的闩锁授权信息的条件。闩锁授权信息可以理解为第一数据库针对第二数据库发送的第二闩锁请求发送的封锁授权信息。所述闩锁授权信息包括的第二数据的实例标识用于标识闩锁授权信息发送的第二数据库。闩锁授权信息中的待封锁对象和闩封锁模式用于标识第一数据库向第二数据库授权的对象及对应的封锁模式。
一般的,请求授权条件可以包括待封锁对象未授权给其他第二数据库;或,授权给其他第二数据库但不存在未授权的请求且不存在占用该待封锁对象的冲突数据库。本步骤在查找结果满足授权条件时,第一数据库可以向满足授权条件的第二数据库发送待封锁对象的闩锁授权信息,以通知该第二数据库其第二闩锁请求以得到授权。
本步骤在向第二数据库发送闩锁授权信息后,可以将相应的内容存入全局闩锁授权信息中,以便于后续进行请求授权条件判断时使用。
本发明实施例三提供的一种闩锁授权求方法,首先接收提供闩锁请求的第二数据库发送的第二闩锁请求;然后根据所述第二闩锁请求查找数据库集群对应的全局控制信息;最终如果查找结果满足请求授权条件,则向所述第二数据库发送所述待封锁对象的闩锁授权信息。利用上述方法,能够在接收到第二数据库发送的第二闩锁请求后,根据第二闩锁请求查找全局控制信息,确定查找结果是否满足请求授权条件,以决定是否向第二数据库发送闩锁授权信息。有效地针对第二闩锁请求进行闩锁授权信息的发送,提高了共享存储数据库集群全局闩的管理效率,减少了第二数据库间的并发冲突,使得共享存储的数据库集群能够更加快速便捷地为用户提供服务,有效地提升了用户的使用体验。
实施例四
图4为本发明实施例四提供的一种闩锁授权方法的流程示意图。本实施例四在上述各实施例的基础上进行优化。在本实施例中,将请求授权条件,进一步具体化为:所述全局控制信息中不包括所述待封锁对象;或,所述历史第二闩锁请求中不包括所述待封锁对象且不存在占用所述待封锁对象的冲突数据库。
进一步的,本实施例还进一步优化包括:如果所述历史第二闩锁请求中不包括所述封锁对象且存在占用所述待封锁对象的冲突数据库,则将所述第二闩锁请求存入所述历史第二闩锁请求并向所述冲突数据库发送权限回收请求,所述权限回收请求包括第一数据库的回收对象,所述回收对象为所述待封锁对象;如果所述历史第二闩锁请求中包括所述待封锁对象,则将所述第二闩锁请求存入所述历史第二闩锁请求。
进一步的,本实施例还进一步优化包括:当接收到所述冲突数据库发送的回收响应信息时,按照闩封锁模式的等级依次向对应的数据库发送所述待封锁对象的闩锁授权信息。
如图4所示,本发明实施例四提供的一种闩锁授权方法,包括以下步骤:
S401、接收提供闩锁请求的第二数据库发送的第二闩锁请求。
在本实施例中,第一数据库首先接收第二数据库发送的第二闩锁请求,以基于该第二闩锁请求进行请求授权条件的判断。第二闩锁请求包括第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识。
S402、根据所述第二闩锁请求查找数据库集群对应的全局控制信息。
S403、判断全局控制信息中是否不包括所述待封锁对象,若是,则执行S410;若否,则执行S404。
在本实施例中,请求授权条件可以为全局控制信息中不包括待封锁对象。全局控制信息中不包括待封锁对象可以说明第一数据库中当前并不存在待封锁对象的控制信息,即当前并未有其他第二数据库向第一数据库发起闩锁请求,第一数据库也并未发送过该待封锁对象的闩锁授权信息。
本步骤在确定全局控制信息中不包括待封锁对象后,可以在全局控制信息中存入该待封锁对象的相关信息,如待封锁对象、对应的闩封锁模式及第二数据库标识,并可以授予该第二数据库相应的权限,即执行S410。若全局控制信息中包括待封锁对象,则可以执行S404。
S404、判断历史第二闩锁请求中是否不包括所述待封锁对象,若是,则执行S405;若否,则执行S407。
当全局控制信息中存在待封锁对象时,本步骤可以通过判断历史第二闩锁请求中是否不包括待封锁对象,确定第一数据库当前是否存在未被授权的历史第二闩锁请求,从而决定针对该第二闩锁请求的处理操作。具体的,当历史第二闩锁请求中不包括待封锁对象时,可以说明此时第一数据库中不存在未授权的历史第二闩锁请求,则可以执行S405;如果历史第二闩锁请求中包括待封锁对象,则可以执行S407。
S405、判断是否不存在占用所述待封锁对象的冲突数据库,若是,则执行S410;若否,则执行S406。
在本实施例中,冲突数据库可以理解为当前正在占用待封锁对象并与第二闩锁请求所请求的闩封锁模式冲突的数据库。可以理解的是,如果存在占用待封锁对象的冲突数据库,则此时第一数据库并不能给与第二数据库该封锁对象的该闩封锁模式的权限,相应的,可以执行S406。
如果第一数据库当前不存在占用待封锁对象的冲突数据库,则可以授予该第二数据库相应的权限,即可以执行S410,并可以将相应的信息存入全局闩锁授权信息中,以便记录第一数据库的闩锁授权信息。可以理解的是,存入在全局闩锁授权信息中的可以为待封锁对象、对应的闩封锁模式及第二数据库的实例标识。该待封锁对象为目前已得到授权的待封锁对象。
S406、向所述冲突数据库发送权限回收请求,所述权限回收请求包括第一数据库的回收对象,所述回收对象为所述待封锁对象。
在本实施例中,权限回收请求可以理解为第一数据库发送给冲突数据库的针对该待封锁对象的回收请求。可以理解的是,此时冲突数据库已得到该待封锁对象的权限。第二数据库所发起的第二闩锁请求与该冲突数据库存在冲突权限。相应的,权限回收请求包括的回收对象可以为第二数据库发送的第二闩锁请求所包括的待封锁对象。
S407、将所述第二闩锁请求存入所述历史第二闩锁请求。
在本实施例中,在历史第二闩锁请求中包含待封锁对象或第一数据库存在占用待封锁对象的冲突数据库时,本步骤可以将第二数据库发送的第二闩锁请求存入历史第二闩锁请求中,以便在收到冲突数据库发送的回收响应信息时,在历史第二闩锁请求中按照闩封锁等级依次选取对应的第二数据库授权。
此处并不对第二闩锁请求存入历史第二闩锁请求的方式进行限定。本步骤可以将第二闩锁请求的对应内容(如闩封锁对象及实例标识)存入历史第二闩锁请求中待封锁对象的对应位置处;也可以在历史第二闩锁请求中直接存储该第二闩锁请求。
S408、判断是否接收到所述冲突数据库发送的回收响应信息,若是,则执行S409;若否,则执行S408。
在本实施例中,在历史第二闩锁请求中包含待封锁对象或第一数据库向冲突数据库发送权限回收请求后,本步骤可以判断是否接收到冲突数据库发送的回收响应信息。回收响应信息可以理解为冲突数据库发送给第一数据库的释放回收对象权限的信息。本步骤在接收到冲突数据库发送的回收响应信息后,可以执行S409。如果没有接收到回收响应信息,则可以继续监测,即可以执行S408。
S409、按照闩封锁模式的等级依次向对应的数据库发送所述待封锁对象的闩锁授权信息,结束操作。
在本实施例中,当接收到冲突数据库发送的回收响应信息后,本步骤可以在历史第二闩锁请求中按照闩封锁模式的等级依次选取对应的数据库发送该待封锁对象的闩锁授权信息,并将历史第二闩锁请求中对应数据库的内容清除,将该对应数据库的内容写入全局闩锁授权信息。
S410、向所述第二数据库发送所述待封锁对象的闩锁授权信息。
在本实施例中,在全局控制信息中不包括待封锁对象或不存在占用待封锁对象的冲突数据库时,本步骤可以直接向第二数据库发送待封锁对象的闩锁授权信息。此外,本步骤还可以将该闩锁授权信息存入全局闩锁授权信息中,以可以用于判断是否存在冲突数据库。
更加具体的,本实施例中的闩锁授权方法的流程如下:
(1)GBS收到LBS关于某对象的闩封锁请求。
(2)GBS查找该对象的GBS_CTL是否存在。
(3)GBS未找到对应的GBS_CTL,则分配GBS_CTL对象,执行步骤(10)。
(4)GBS找到对应的GBS_CTL,检查是否存在未授权的LBS请求。
(5)GBS_CTL已经存在未授权请求,则登记LBS请求信息,等待权限回收请求响应消息,转步骤(9)。
(6)GBS_CTL不存在未授权请求,则进一步检查是否存在冲突权限。
(7)不存在冲突权限,执行步骤(10)。
(8)存在冲突权限,登记LBS请求信息,向存在冲突实例(冲突数据库)的LBS发起回收权限请求,并等待响应消息(回收响应信息)。
(9)收到所有冲突实例的权限回收请求响应消息后,将登记的LBS请求信息进行缓存,清除GBS_CTL上登记的LBS请求信息后,将缓存的LBS请求信息重新按顺序发起请求,转步骤(4)。
(10)授予请求实例相应权限,并响应LBS。
例如,在三节点共享存储集群中,节点号分别是EP0、EP1和EP2,系统此前从未访问过数据页P1。
1.GBS收到EP0的LBS发起的,对数据页P1的S闩锁请求,分配了P1的GBS_CTL,并授予EP0S权限。
2.GBS收到EP1的LBS发起的,对数据页P1的X闩锁请求,检查GBS_CTL发现没有未获授权的请求,但与授予EP0的S权限冲突,在GBS_CTL上登记EP1的X闩锁请求,并向EP0发起回收权限的请求。
3.GBS收到EP2的LBS发起的,对数据页P1的S闩锁请求,检查GBS_CTL发现EP1的请求还未获得授权,直接在GBS_CTL上登记EP2的S闩锁请求。
4.GBS收到EP0返回的,回收P1权限的响应后,清除GBS_CTL登记的EP1和EP2的闩锁请求;并依次重新发起闩锁请求。
5.GBS处理EP1的X闩锁请求,检查GBS_CTL发现不存在权限冲突,直接授予EP1X+S权限
6.GBS处理EP2的S闩锁请求,检查GBS_CTL发现没有未获授权的请求,但与EP1存在权限冲突,在GBS_CTL上登记EP2的S闩锁请求,并向EP1发起回收权限的请求。
7.GBS收到EP1返回的,回收P1权限的响应后,清除GBS_CTL登记的EP2闩锁请求;并重新发起闩锁请求。
本发明实施例四提供的一种闩锁授权方法,具体化了请求授权条件,还优化增加了回收请求发送操作、请求存储操作和授权发送操作。利用该方法,能够在接收到第二数据库发送的第二闩锁请求后,根据第二闩锁请求查找全局控制信息,确定是否向第二数据库发送闩锁授权信息。在全局控制信息中包括待封锁对象;或在历史第二闩锁请求中不包括闩封锁对象且不存在占用待封锁对象的冲突数据库时,第一数据库向第二数据库发送待封锁对象的闩锁授权信息。在待封锁对象存在冲突数据库时,向冲突数据库发送权限回收请求。当接收到冲突数据库的回收响应消息时,按照闩封锁模式的等级依次向对应的数据库发送闩锁授权信息,有效地针对第二闩锁请求进行闩锁授权信息的发送。有效地提高了共享存储数据库集群全局闩的管理效率,基于请求授权条件能够有效确定是否授予第二数据库相应权限,或授予历史第二闩锁请求中哪一数据库相应权限,减少了第二数据库间的并发冲突,使得共享存储的数据库集群能够更加快速便捷的为用户提供服务,有效地提升了用户的使用体验。
实施例五
图5为本发明实施例五提供的一种闩锁请求装置的结构示意图。如图5所示,该闩锁请求装置包括:请求接收模块501、请求查询模块502和请求发送模块503。
其中,请求接收模块501,用于接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;
请求查询模块502,用于根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;
请求发送模块503,用于当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
在本实施例中,该闩锁请求装置首先通过请求接收模块501接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;其次通过请求查询模块502根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;然后通过请求发送模块503当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识
本实施例提供了一种闩锁请求装置,能够在接收到第一闩锁请求后,根据第一闩锁请求查找本地控制信息,确定查找结果是否满足请求发送条件,以决定是否需要向第一数据库发送第二闩锁请求。有效地避免每次数据库节点发起第一闩锁请求均引发一次与第一数据库的信息交互,有效地减少了全局数据库间的并发冲突和用户使用数据库的响应时间,提高了数据库集群的工作效率。此外,该闩锁请求方法可以作为一种可选插件单独实现,复用性强,提升了用户使用数据库的体验。
进一步的,请求发送模块503,具体用于:当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识,所述请求发送条件包括:未授权条件和未请求条件。
在上述优化的基础上,请求发送模块503,具体用于:当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识,所述请求发送条件包括:未授权条件和未请求条件;所述未授权条件包括:所述本地闩锁授权信息中不包括所述待封锁对象或所述本地闩锁授权信息中所述待封锁对象对应的历史闩封锁模式的等级低于所述闩封锁模式的等级;所述未请求条件包括:所述历史第一闩锁请求中不包括所述待封锁对象或所述历史第一闩锁请求中所述待封锁对象对应的历史闩封锁模式的等级低于所述闩封锁模式的等级;其中,所述闩封锁模式包括共享模式和等级大于所述共享模式的独占模式。
基于上述技术方案,本实施例中闩锁请求装置,还优化包括:
存储模块,用于将所述第一闩锁请求存入所述历史第一闩锁请求;所述第一闩锁请求还包括所述数据库节点当前所服务用户的用户标识;
清除模块,用于当接收到所述第一数据库发送的所述待封锁对象的闩锁授权信息时,将所述闩锁授权信息存入所述本地闩锁授权信息并将所述历史第一闩锁请求中所述第一闩锁请求清除;
通知模块,用于根据所述用户标识向所述数据库节点发送授权通知。
进一步的,本实施例中闩锁请求装置,还优化包括:
回收请求接收模块,用于接收所述第一数据库发送的权限回收请求,所述权限回收请求包括回收对象;
回收响应处理模块,用于如果所述本地闩锁授权信息中不存在所述回收对象或所述回收对象对应的引用计数为零,则向所述第一数据库发送回收响应信息;否则登记所述权限回收请求。
进一步的,本实施例中闩锁请求装置,还优化包括:
引用计数增加模块,用于当接收到所述第一闩锁请求时,将所述封锁对象对应的引用计数加一;
引用计数减小模块,用于当接收到所述对应数据库节点发起的释放信息时,将所述引用计数减一;
回收响应发送模块,用于当所述引用计数为零且存在所述第一数据库发送的权限回收请求时,向所述第一数据库发送回收响应信息。
上述闩锁请求装置可执行本发明任意实施例所提供的闩锁请求方法,具备执行方法相应的功能模块和有益效果。
实施例六
图6为本发明实施例六提供的一种闩锁授权装置的结构示意图。如图6所示,该闩锁授权装置包括:接收模块601、查询模块602和发送模块603。
其中,接收模块601,用于接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;
查询模块602,用于根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;
发送模块603,用于当查找结果满足请求授权条件时,向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
在本实施例中,该闩锁授权装置首先通过接收模块601接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;然后通过查询模块602根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;最后通过发送模块603当查找结果满足请求授权条件时,向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
本实施例提供了一种闩锁授权装置,能够在接收到第二数据库发送的第二闩锁请求后,根据第二闩锁请求查找全局控制信息,确定查找结果是否满足请求授权条件,以决定是否向第二数据库发送闩锁授权信息。有效的针对第二闩锁请求进行闩锁授权信息的发送,提高了共享存储数据库集群全局闩的管理效率,减少了第二数据库间的并发冲突,使得共享存储的数据库集群能够更加快速便捷的为用户提供服务,有效的提升了用户的使用体验。
进一步的,发送模块603,具体用于:当查找结果满足请求授权条件时,向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识;所述请求授权条件包括:所述全局控制信息中不包括所述待封锁对象;或,所述历史第二闩锁请求中不包括所述待封锁对象且不存在占用所述待封锁对象的冲突数据库。
在上述优化的基础上,闩锁授权装置,还优化包括:
回收请求发送模块,用于当所述历史第二闩锁请求中不包括所述封锁对象且存在占用所述待封锁对象的冲突数据库时,将所述第二闩锁请求存入所述历史第二闩锁请求并向所述冲突数据库发送权限回收请求,所述权限回收请求包括第一数据库的回收对象,所述回收对象为所述待封锁对象;
请求存储模块,用于当所述历史第二闩锁请求中包括所述待封锁对象时,将所述第二闩锁请求存入所述历史第二闩锁请求。
在上述优化的基础上,闩锁授权装置,还优化包括:
授权发送模块,用于当接收到所述冲突数据库发送的回收响应信息时,按照闩封锁模式的等级依次向对应的数据库发送所述待封锁对象的闩锁授权信息。
上述闩锁授权装置可执行本发明任意实施例所提供的闩锁授权方法,具备执行方法相应的功能模块和有益效果。
实施例七
图7为本发明实施例七提供的一种终端设备的结构示意图。如图7所示,本发明实施例七提供的终端设备包括:一个或多个处理器71和存储装置72;该终端设备中的处理器71可以是一个或多个,图7中以一个处理器71为例;存储装置72用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器71执行,使得所述一个或多个处理器71实现如本发明实施例中任一项所述的闩锁请求方法。
所述终端设备还可以包括:输入装置73和输出装置74。
终端设备中的处理器71、存储装置72、输入装置73和输出装置74可以通过总线或其他方式连接,图7中以通过总线连接为例。
该终端设备中的存储装置72作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例一或二所提供闩锁请求方法对应的程序指令/模块(例如,附图5所示的闩锁请求装置中的模块,包括:请求接收模块501、请求查询模块502和请求发送模块503)。处理器71通过运行存储在存储装置72中的软件程序、指令以及模块,从而执行终端设备的各种功能应用以及数据处理,即实现上述方法实施例中闩锁请求方法。
存储装置72可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储装置72可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置72可进一步包括相对于处理器71远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置73可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置74可包括显示屏等显示设备。
并且,当上述终端设备所包括一个或者多个程序被所述一个或者多个处理器71执行时,程序进行如下操作:
接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
实施例八
图8为本发明实施例八提供的一种终端设备的结构示意图。如图8所示,本发明实施例八提供的终端设备包括:一个或多个处理器81和存储装置82;该终端设备中的处理器81可以是一个或多个,图8中以一个处理器81为例;存储装置82用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器81执行,使得所述一个或多个处理器81实现如本发明实施例中任一项所述的闩锁授权方法。
所述终端设备还可以包括:输入装置83和输出装置84。
终端设备中的处理器81、存储装置82、输入装置83和输出装置84可以通过总线或其他方式连接,图8中以通过总线连接为例。
该终端设备中的存储装置82作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例三或四所提供闩锁授权方法对应的程序指令/模块(例如,附图6所示的闩锁授权装置中的模块,包括:接收模块601、查询模块602和发送模块603)。处理器81通过运行存储在存储装置82中的软件程序、指令以及模块,从而执行终端设备的各种功能应用以及数据处理,即实现上述方法实施例中闩锁授权方法。
存储装置82可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储装置82可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置82可进一步包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置83可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置84可包括显示屏等显示设备。
并且,当上述终端设备所包括一个或者多个程序被所述一个或者多个处理器81执行时,程序进行如下操作:
接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;如果查找结果满足请求授权条件,则向所述第二数据库发送所述待封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
实施例九
本发明实施例九提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行闩锁请求方法,该方法包括:
接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
可选的,该程序被处理器执行时还可以用于执行本发明任意实施例所提供的闩锁请求方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
实施例十
本发明实施例十提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行闩锁授权方法,该方法包括:
接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;如果查找结果满足请求授权条件,则向所述第二数据库发送所述待封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
可选的,该程序被处理器执行时还可以用于执行本发明任意实施例所提供的闩锁授权方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (16)

1.一种闩锁请求方法,其特征在于,包括:
接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;
根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;
如果查找结果满足请求发送条件,则向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
2.根据权利要求1所述的方法,其特征在于,所述请求发送条件包括:未授权条件和未请求条件。
3.根据权利要求2所述的方法,其特征在于,所述未授权条件包括:所述本地闩锁授权信息中不包括所述待封锁对象或所述本地闩锁授权信息中所述待封锁对象对应的授权闩封锁模式的等级低于所述闩封锁模式的等级;
所述未请求条件包括:所述历史第一闩锁请求中不包括所述待封锁对象或所述历史第一闩锁请求中所述待封锁对象对应的历史闩封锁模式的等级低于所述闩封锁模式的等级;其中,所述闩封锁模式包括共享模式和等级大于所述共享模式的独占模式。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述第一闩锁请求存入所述历史第一闩锁请求;所述第一闩锁请求还包括所述数据库节点当前所服务用户的用户标识;
当接收到所述第一数据库发送的所述待封锁对象的闩锁授权信息时,将所述闩锁授权信息存入所述本地闩锁授权信息并将所述历史第一闩锁请求中所述第一闩锁请求清除;
根据所述用户标识向所述数据库节点发送授权通知。
5.根据权利要求1所述的方法,其特征在于,还包括:
接收所述第一数据库发送的权限回收请求,所述权限回收请求包括回收对象;
如果所述本地闩锁授权信息中不存在所述回收对象或所述回收对象对应的引用计数为零,则向所述第一数据库发送回收响应信息;否则登记所述权限回收请求。
6.根据权利要求1所述的方法,其特征在于,还包括:
当接收到所述第一闩锁请求时,将所述封锁对象对应的引用计数加一;
当接收到所述对应数据库节点发起的释放信息时,将所述引用计数减一;
当所述引用计数为零且存在所述第一数据库发送的权限回收请求时,向所述第一数据库发送回收响应信息。
7.一种闩锁授权方法,其特征在于,包括:
接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;
根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;
如果查找结果满足请求授权条件,则向所述第二数据库发送所述待封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
8.根据权利要求7所述的方法,其特征在于,所述请求授权条件包括:所述全局控制信息中不包括所述待封锁对象;或,所述历史第二闩锁请求中不包括所述待封锁对象且不存在占用所述待封锁对象的冲突数据库。
9.根据权利要求8所述的方法,其特征在于,还包括:
如果所述历史第二闩锁请求中不包括所述封锁对象且存在占用所述待封锁对象的冲突数据库,则将所述第二闩锁请求存入所述历史第二闩锁请求并向所述冲突数据库发送权限回收请求,所述权限回收请求包括第一数据库的回收对象,所述回收对象为所述待封锁对象;
如果所述历史第二闩锁请求中包括所述待封锁对象,则将所述第二闩锁请求存入所述历史第二闩锁请求。
10.根据权利要求9所述的方法,其特征在于,还包括:
当接收到所述冲突数据库发送的回收响应信息时,按照闩封锁模式的等级依次向对应的数据库发送所述待封锁对象的闩锁授权信息。
11.一种闩锁请求装置,其特征在于,包括:
请求接收模块,用于接收对应的数据库节点发起的第一闩锁请求,所述第一闩锁请求包括所述数据库节点的待封锁对象及对应的闩封锁模式;
请求查询模块,用于根据所述第一闩锁请求查找所述数据库节点对应的本地控制信息,所述本地控制信息包括历史第一闩锁请求和本地闩锁授权信息;
请求发送模块,用于当查找结果满足请求发送条件时,向提供闩锁授权的第一数据库发送第二闩锁请求,所述第二闩锁请求包括所述待封锁对象、所述闩封锁模式和所述数据库节点的实例标识。
12.一种闩锁授权装置,其特征在于,包括:
接收模块,用于接收提供闩锁请求的第二数据库发送的第二闩锁请求,所述第二闩锁请求包括所述第二数据库的待封锁对象、对应的闩封锁模式和所述第二数据库的实例标识;
查询模块,用于根据所述第二闩锁请求查找数据库集群对应的全局控制信息,所述全局控制信息包括历史第二闩锁请求和全局闩锁授权信息;
发送模块,用于当查找结果满足请求授权条件时,向所述第二数据库发送所述封锁对象的闩锁授权信息,所述闩锁授权信息包括所述待封锁对象、所述闩封锁模式和所述第二数据库的实例标识。
13.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的闩锁请求方法。
14.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求7-10中任一所述的闩锁授权方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的闩锁请求方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求7-10中任一所述的闩锁授权方法。
CN201810872377.4A 2018-08-02 2018-08-02 闩锁请求方法、闩锁授权方法、装置及终端设备 Active CN109063132B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810872377.4A CN109063132B (zh) 2018-08-02 2018-08-02 闩锁请求方法、闩锁授权方法、装置及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810872377.4A CN109063132B (zh) 2018-08-02 2018-08-02 闩锁请求方法、闩锁授权方法、装置及终端设备

Publications (2)

Publication Number Publication Date
CN109063132A true CN109063132A (zh) 2018-12-21
CN109063132B CN109063132B (zh) 2020-08-25

Family

ID=64832707

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810872377.4A Active CN109063132B (zh) 2018-08-02 2018-08-02 闩锁请求方法、闩锁授权方法、装置及终端设备

Country Status (1)

Country Link
CN (1) CN109063132B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111444147A (zh) * 2020-03-30 2020-07-24 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
WO2021068710A1 (en) * 2019-10-08 2021-04-15 Huawei Technologies Co., Ltd. Method and system for fast processing of locks requested to access a shared resource
CN113420012A (zh) * 2021-07-14 2021-09-21 上海达梦数据库有限公司 数据库节点管理方法、装置、数据库节点及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289143A1 (en) * 2004-06-23 2005-12-29 Exanet Ltd. Method for managing lock resources in a distributed storage system
CN101650646A (zh) * 2009-09-22 2010-02-17 杭州华三通信技术有限公司 一种共享数据一致性的实现方法及装置
CN103716383A (zh) * 2013-12-13 2014-04-09 华为技术有限公司 一种访问共享资源的方法及装置
CN105373566A (zh) * 2014-08-30 2016-03-02 华为技术有限公司 在线重建索引方法及装置
CN107402821A (zh) * 2017-07-03 2017-11-28 阿里巴巴集团控股有限公司 共享资源的访问控制方法、装置和设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289143A1 (en) * 2004-06-23 2005-12-29 Exanet Ltd. Method for managing lock resources in a distributed storage system
CN101650646A (zh) * 2009-09-22 2010-02-17 杭州华三通信技术有限公司 一种共享数据一致性的实现方法及装置
CN103716383A (zh) * 2013-12-13 2014-04-09 华为技术有限公司 一种访问共享资源的方法及装置
CN105373566A (zh) * 2014-08-30 2016-03-02 华为技术有限公司 在线重建索引方法及装置
CN107402821A (zh) * 2017-07-03 2017-11-28 阿里巴巴集团控股有限公司 共享资源的访问控制方法、装置和设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021068710A1 (en) * 2019-10-08 2021-04-15 Huawei Technologies Co., Ltd. Method and system for fast processing of locks requested to access a shared resource
US11321300B2 (en) 2019-10-08 2022-05-03 Huawei Technologies Co., Ltd. Method and system for fast processing of locks requested to access a shared resource
CN111444147A (zh) * 2020-03-30 2020-07-24 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
CN111444147B (zh) * 2020-03-30 2023-05-12 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
CN113420012A (zh) * 2021-07-14 2021-09-21 上海达梦数据库有限公司 数据库节点管理方法、装置、数据库节点及存储介质
CN113420012B (zh) * 2021-07-14 2024-04-09 上海达梦数据库有限公司 数据库节点管理方法、装置、数据库节点及存储介质

Also Published As

Publication number Publication date
CN109063132B (zh) 2020-08-25

Similar Documents

Publication Publication Date Title
CN109063132A (zh) 闩锁请求方法、闩锁授权方法、装置及终端设备
CN111444147B (zh) 一种数据页创建方法、装置、终端设备及存储介质
CN109491928A (zh) 缓存控制方法、装置、终端及存储介质
CN109564527A (zh) 云计算节点的安全配置
CN108959972A (zh) 合作的基于规则的安全
KR101634403B1 (ko) 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들
CN110289965B (zh) 一种应用程序服务的管理方法及装置
CN109656886A (zh) 基于键值对的文件系统实现方法、装置、设备和存储介质
CN109408519A (zh) 一种数据页的访问方法、装置、服务器及存储介质
CN102006297A (zh) 一种基于两级策略决策的访问控制方法及其系统
US9514290B2 (en) Authorization cache
CN102792273B (zh) 双模式读写锁
CN111310145B (zh) 用户权限验证方法、装置以及电子设备
CN111833488B (zh) 一种开关锁方法、装置、电子锁及存储介质
US7590738B2 (en) Method and system for processing concurrent events in a provisional network
Meyer et al. Defining policies for performance management in open distributed systems
CN115174177A (zh) 权限管理方法、装置、电子设备、存储介质和程序产品
CN114090617A (zh) 一种计划执行方法、装置、数据库节点及介质
CN114676179A (zh) 一种面向盾构场景的多源异构数据交互与融合方法及系统
US20200117440A1 (en) Hierarchical equipment software update for an electrical distribution grid
CN109040266A (zh) 微服务架构中锁的管理方法和装置
CN114491491A (zh) 一种体系化航电系统的资源接入管理方法
CN108628925A (zh) 密钥写入的方法、密钥使用的方法
CN109542631A (zh) 一种备机的重演方法、装置、服务器及存储介质
CN113420012B (zh) 数据库节点管理方法、装置、数据库节点及存储介质

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