CN115576659A - 多维数据库的元数据对象实现和元数据事务管理方法 - Google Patents
多维数据库的元数据对象实现和元数据事务管理方法 Download PDFInfo
- Publication number
- CN115576659A CN115576659A CN202211309733.4A CN202211309733A CN115576659A CN 115576659 A CN115576659 A CN 115576659A CN 202211309733 A CN202211309733 A CN 202211309733A CN 115576659 A CN115576659 A CN 115576659A
- Authority
- CN
- China
- Prior art keywords
- thread
- snapshot
- lock
- metadata
- acquires
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种多维数据库的元数据对象实现和元数据事务管理方法。该方法:线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;线程B获取COMMIT锁,执行提交流程,生成ver2快照;线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;线程C获取COMMIT锁,执行提交流程,生成ver3快照;线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。根据本申请实施例,能够实现元数据的读写分离,在保证元数据一致性的前提下,提高元数据事务的并发性。
Description
技术领域
本申请属于数据事务管理领域,尤其涉及一种多维数据库的元数据对象实现和元数据事务管理方法、装置、电子设备及计算机可读存储介质。
背景技术
如下表1所示,在其他线程不持有元数据对象锁或持有Read锁/IX锁时,当前线程才可以申请到Read锁;在其他线程不持有元数据对象锁时,当前线程才可以申请到IX锁或Write锁。
表1
现有的并发处理方式,无法做到元数据的读写分离;并发操作多个元数据对象锁时,易产生性能下降或死锁。
因此,如何实现元数据的读写分离,在保证元数据一致性的前提下,提高元数据事务的并发性是本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例提供一种多维数据库的元数据对象实现和元数据事务管理方法、装置、电子设备及计算机可读存储介质,能够实现元数据的读写分离,在保证元数据一致性的前提下,提高元数据事务的并发性。
第一方面,本申请实施例提供一种多维数据库的元数据对象实现和元数据事务管理方法,包括:
线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
线程B获取COMMIT锁,执行提交流程,生成ver2快照;
线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
线程C获取COMMIT锁,执行提交流程,生成ver3快照;
线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
进一步地,线程B获取COMMIT锁,执行提交流程,生成ver2快照,包括:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
进一步地,线程C获取COMMIT锁,执行提交流程,生成ver3快照,包括:
线程C基于最新的ver2快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
进一步地,在线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作以前,方法还包括:
在出现异常时,通过抛弃action列表或抛弃临时快照的方式实现回滚。
进一步地,还包括:
线程A获取ver1快照,并对维度进行查询操作;
线程B获取ver1快照,在申请维度锁成功后,基于原维度克隆出新的维度,并在克隆维度上执行修改操作;
线程C获取ver1快照,在申请维度锁失败后,阻塞等待;
线程D获取ver1快照,并对维度进行查询操作;
线程B提交生成新的ver2快照,并释放维度锁;
线程C申请维度锁成功后,基于ver2快照中的维度克隆出新的维度,并在克隆维度上执行修改操作;
线程E获取ver2快照,并对维度进行查询操作;其中,线程E为读取线程;
线程C提交生成新的ver3快照,并释放维度锁。
进一步地,在线程C提交生成新的ver3快照,并释放维度锁以前,方法还包括:
在出现异常时,通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
第二方面,本申请实施例提供了一种多维数据库的元数据对象实现和元数据事务管理装置,包括:
第一获取模块,用于线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
第一资源销毁执行模块,用于在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
元数据修改模块,用于线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
第一提交执行模块,用于线程B获取COMMIT锁,执行提交流程,生成ver2快照;
读取模块,用于线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
第二提交执行模块,用于线程C获取COMMIT锁,执行提交流程,生成ver3快照;
第二资源销毁执行模块,用于线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
进一步地,第一提交执行模块,用于:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
进一步地,第二提交执行模块,用于:
线程C基于最新的ver2快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
进一步地,装置还包括:
第一回滚操作模块,用于在出现异常时,通过抛弃action列表或抛弃临时快照的方式实现回滚。
进一步地,还包括:
第一维度查询模块,用于线程A获取ver1快照,并对维度进行查询操作;
第一维度克隆模块,用于线程B获取ver1快照,在申请维度锁成功后,基于原维度克隆出新的维度,并在克隆维度上执行修改操作;
第二获取模块,用于线程C获取ver1快照,在申请维度锁失败后,阻塞等待;
第二维度查询模块,用于线程D获取ver1快照,并对维度进行查询操作;
第三提交执行模块,用于线程B提交生成新的ver2快照,并释放维度锁;
第二维度克隆模块,用于线程C申请维度锁成功后,基于ver2快照中的维度克隆出新的维度,并在克隆维度上执行修改操作;
第三维度查询模块,用于线程E获取ver2快照,并对维度进行查询操作;其中,线程E为读取线程;
第四提交执行模块,用于线程C提交生成新的ver3快照,并释放维度锁。
进一步地,装置还包括:
第二回滚操作模块,用于在出现异常时,通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
第三方面,本申请实施例提供了一种电子设备,电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现如第一方面所示的多维数据库的元数据对象实现和元数据事务管理方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面所示的多维数据库的元数据对象实现和元数据事务管理方法。
本申请实施例的多维数据库的元数据对象实现和元数据事务管理方法、装置、电子设备及计算机可读存储介质,能够实现元数据的读写分离,在保证元数据一致性的前提下,提高元数据事务的并发性。
该多维数据库的元数据对象实现和元数据事务管理方法,包括:线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;线程B获取COMMIT锁,执行提交流程,生成ver2快照;线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;线程C获取COMMIT锁,执行提交流程,生成ver3快照;线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。可见,该方法能够实现元数据的读写分离,在保证元数据一致性的前提下,提高元数据事务的并发性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的添加数据库的场景示意图;
图2是本申请一个实施例提供的删除数据库的场景示意图;
图3是本申请一个实施例提供的添加维度的场景示意图;
图4是本申请一个实施例提供的删除维度的场景示意图;
图5是本申请一个实施例提供的重命名维度的场景示意图;
图6是本申请一个实施例提供的修改维度成员的场景示意图;
图7是本申请一个实施例提供的添加Cube的场景示意图;
图8是本申请一个实施例提供的删除Cube的场景示意图;
图9是本申请一个实施例提供的重命名Cube的场景示意图;
图10是本申请一个实施例提供的修改Cube的场景示意图;
图11是本申请一个实施例提供的多维数据库的元数据对象实现和元数据事务管理方法的流程示意图;
图12是本申请一个实施例提供的四个线程同时操作元数据的并发过程示意图;
图13是本申请一个实施例提供的单个维度成员的并发操作示意图;
图14是本申请一个实施例提供的多维数据库的元数据对象实现和元数据事务管理装置的结构示意图;
图15是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本申请实施例提供了一种多维数据库的元数据对象实现和元数据事务管理方法、装置、电子设备及计算机可读存储介质。
元数据对象实现及其共享机制:
自有化多维数据库中,Server指代服务进程;Database指代数据库对象;Dimension指代维度对象;Cube指代数据立方体对象。
Server下可以创建多个Database,Database下可以创建多个Cube和Dimension。
元数据事务需要实现多版本机制,不同用户线程会持有相同对象的多个副本,这样实现必然造成内存的浪费。为了实现多版本机制并减少内存的占用,我们需要设计实现一种元数据对象的共享机制。
如图1所示,在添加数据库的场景中。我们拷贝Server对象,在新Server对象中添加新Database对象。新Server对象与旧Server对象共享其他的元数据对象。
如图2所示,在删除数据库的场景中。我们拷贝Server对象,在新Server对象中删除一个Database对象。新Server对象与旧Server对象共享其他的元数据对象。
如图3所示,在添加维度的场景中。我们拷贝Server对象、Database对象,并在新Database对象中添加新Dimension对象。新Server对象与旧Server对象共享其他的元数据对象。
如图4所示,在删除维度的场景中。我们拷贝Server对象、Database对象,并在新Database中删除Dimension对象。新Server对象与旧Server对象共享其他的元数据对象。
如图5所示,在重命名维度的场景中。我们拷贝Server对象、Database对象、Dimension对象,并在新Database对象中重命名维度,新旧两个维度对象共享底层层级资源。新Server对象与旧Server对象共享其他的元数据对象。
如图6所示,在修改维度成员的场景中。我们拷贝Server对象、Database对象、Dimension对象、Dimension对象下的层级资源,新旧两个维度对象不共享底层层级资源。新Server对象与旧Server对象共享其他的元数据对象。
如图7所示,在添加Cube的场景中。我们拷贝Server对象、Database对象,并在新Database对象中添加新Cube对象。新Server对象与旧Server对象共享其他的元数据对象。
如图8所示,在删除Cube的场景中。我们拷贝Server对象、Database对象,并在新Database中删除Cube对象。新Server对象与旧Server对象共享其他的元数据对象。
如图9所示,在重命名Cube的场景中。我们拷贝Server对象、Database对象、Cube对象,并在新Database中重命名Cube,新旧两个Cube对象共享底层公式资源。新Server对象与旧Server对象共享其他的元数据对象。
如图10所示,在修改Cube公式的场景中。我们拷贝Server对象、Database对象、Cube对象、Cube对象下的公式资源,新旧两个Cube对象不共享底层公式资源。新Server对象与旧Server对象共享其他的元数据对象。
下面首先对本申请实施例所提供的多维数据库的元数据对象实现和元数据事务管理方法进行介绍。
图11示出了本申请一个实施例提供的多维数据库的元数据对象实现和元数据事务管理方法的流程示意图。如图11所示,该多维数据库的元数据对象实现和元数据事务管理方法,包括:
S1101、线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
S1102、在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
S1103、线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
S1104、线程B获取COMMIT锁,执行提交流程,生成ver2快照;
在一个实施例中,线程B获取COMMIT锁,执行提交流程,生成ver2快照,包括:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
S1105、线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
S1106、线程C获取COMMIT锁,执行提交流程,生成ver3快照;
在一个实施例中,线程C获取COMMIT锁,执行提交流程,生成ver3快照,包括:
线程C基于最新的ver2快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
S1107、线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
在一个实施例中,在线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作以前,方法还包括:
在出现异常时,通过抛弃action列表或抛弃临时快照的方式实现回滚。
具体地,如图12所示,我们以四个线程(线程A读取,线程B修改,线程C修改,线程D读取)同时操作元数据的并发过程为例,详细阐述元数据事务的管理方法。
步骤1:线程A获取READ锁,获取最新的ver1快照。
步骤2:线程B获取READ锁,获取最新的ver1快照。
步骤3:线程C获取READ锁,获取最新的ver1快照。
步骤4:线程A基于ver1快照进行任意的读取操作。
步骤5:线程A获取DESTROY锁,执行相关资源的销毁工作。
步骤6:线程B基于ver1快照进行元数据修改(生成当前线程的action列表,并不真正修改元数据)。
步骤7:线程C基于ver1快照进行元数据修改(生成当前线程的action列表,并不真正修改元数据)。
步骤8:线程B获取COMMIT锁,执行提交流程。步骤8又分为以下两个子步骤:
步骤8.1:线程B基于最新的快照(ver1快照)创建临时快照,并将当前线程的action列表应用到临时快照。
步骤8.2:线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
步骤9:线程D获取READ锁,获取最新的ver2快照。
步骤10:线程D基于ver2快照进行任意的读取操作。
步骤11:线程C获取COMMIT锁,执行提交流程。步骤11又分为以下两个子步骤:
步骤11.1:线程C基于最新的快照(ver2快照)创建临时快照,并将当前线程的action列表应用到临时快照。
步骤11.2:线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
步骤12:线程B获取DESTROY锁,执行相关资源的销毁工作。
步骤13:线程C获取DESTROY锁,执行相关资源的销毁工作。
步骤14:线程D获取DESTROY锁,执行相关资源的销毁工作。
步骤15:上述流程任意步骤出现异常,都可以通过抛弃action列表或抛弃临时快照的方式实现回滚。
在一个实施例中,该方法还包括:
线程A获取ver1快照,并对维度进行查询操作;
线程B获取ver1快照,在申请维度锁成功后,基于原维度克隆出新的维度,并在克隆维度上执行修改操作;
线程C获取ver1快照,在申请维度锁失败后,阻塞等待;
线程D获取ver1快照,并对维度进行查询操作;
线程B提交生成新的ver2快照,并释放维度锁;
线程C申请维度锁成功后,基于ver2快照中的维度克隆出新的维度,并在克隆维度上执行修改操作;
线程E获取ver2快照,并对维度进行查询操作;其中,线程E为读取线程;
线程C提交生成新的ver3快照,并释放维度锁。
在一个实施例中,在线程C提交生成新的ver3快照,并释放维度锁以前,方法还包括:
在出现异常时,通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
具体地,维度成员的并发操作:维度需要保存成员的层级结构,鉴于层级结构的复杂性,我们无法完成并发修改维度成员。如图13所示,针对这种情况,我们需要特殊的处理。
在图13中我们简化了快照的提交流程,仅聚焦于单个维度的并发操作。
步骤1:线程A获取快照ver1,并对维度进行查询操作。
步骤2:线程B获取快照ver1,申请维度锁,申请成功,并基于原维度克隆出新的维度,并在克隆维度上执行修改操作。
步骤3:线程C获取快照ver1,申请维度锁,申请失败,阻塞等待。
步骤4:线程D获取快照ver1,并对维度进行查询操作。
步骤5:线程B提交生成新快照ver2,并释放维度锁。
步骤6:线程C申请维度锁成功,并基于ver2中的维度克隆出新的维度,并在克隆维度上执行修改操作。
步骤7:线程E获取快照ver2,并对维度进行查询操作。
步骤8:线程C提交生成新快照ver3,并释放维度锁。
步骤9:上述流程任意步骤出现异常,都可以通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
本申请中元数据事务与数据事务解耦,只需关注元数据本身;元数据事务提交失败,不会宕机,可以保证正确的事务回滚;相比于原有方案,元数据操作(不包含维度操作)可以做到同时存在多个读副本和多个写副本,极大提高了元数据的并发读写性能;维度方案同时只能存在一个写副本,但可以存在多个读副本,极大的提高了维度的并发读性能。
图14是本申请一个实施例提供的多维数据库的元数据对象实现和元数据事务管理装置的结构示意图,如图14所示,该多维数据库的元数据对象实现和元数据事务管理装置,包括:
第一获取模块1401,用于线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
第一资源销毁执行模块1402,用于在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
元数据修改模块1403,用于线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
第一提交执行模块1404,用于线程B获取COMMIT锁,执行提交流程,生成ver2快照;
读取模块1405,用于线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
第二提交执行模块1406,用于线程C获取COMMIT锁,执行提交流程,生成ver3快照;
第二资源销毁执行模块1407,用于线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
在一个实施例中,第一提交执行模块1404,用于:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
在一个实施例中,第二提交执行模块1406,用于:
线程C基于最新的ver2快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
在一个实施例中,装置还包括:
第一回滚操作模块,用于在出现异常时,通过抛弃action列表或抛弃临时快照的方式实现回滚。
在一个实施例中,还包括:
第一维度查询模块,用于线程A获取ver1快照,并对维度进行查询操作;
第一维度克隆模块,用于线程B获取ver1快照,在申请维度锁成功后,基于原维度克隆出新的维度,并在克隆维度上执行修改操作;
第二获取模块,用于线程C获取ver1快照,在申请维度锁失败后,阻塞等待;
第二维度查询模块,用于线程D获取ver1快照,并对维度进行查询操作;
第三提交执行模块,用于线程B提交生成新的ver2快照,并释放维度锁;
第二维度克隆模块,用于线程C申请维度锁成功后,基于ver2快照中的维度克隆出新的维度,并在克隆维度上执行修改操作;
第三维度查询模块,用于线程E获取ver2快照,并对维度进行查询操作;其中,线程E为读取线程;
第四提交执行模块,用于线程C提交生成新的ver3快照,并释放维度锁。
在一个实施例中,装置还包括:
第二回滚操作模块,用于在出现异常时,通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
图14所示装置中的各个模块具有实现图11中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图15示出了本申请实施例提供的电子设备的结构示意图。
电子设备可以包括处理器1501以及存储有计算机程序指令的存储器1502。
具体地,上述处理器1501可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器1502可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1502可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1502可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1502可在电子设备的内部或外部。在特定实施例中,存储器1502可以是非易失性固态存储器。
在一个实施例中,存储器1502可以是只读存储器(Read Only Memory,ROM)。在一个实施例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器1501通过读取并执行存储器1502中存储的计算机程序指令,以实现上述实施例中的任意一种多维数据库的元数据对象实现和元数据事务管理方法。
在一个示例中,电子设备还可包括通信接口1503和总线1510。其中,如图15所示,处理器1501、存储器1502、通信接口1503通过总线1510连接并完成相互间的通信。
通信接口1503,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线1510包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1510可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
另外,结合上述实施例中的多维数据库的元数据对象实现和元数据事务管理方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种多维数据库的元数据对象实现和元数据事务管理方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能模块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,包括:
线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
线程B获取COMMIT锁,执行提交流程,生成ver2快照;
线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
线程C获取COMMIT锁,执行提交流程,生成ver3快照;
线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
2.根据权利要求1所述的多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,所述线程B获取COMMIT锁,执行提交流程,生成ver2快照,包括:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
3.根据权利要求1所述的多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,所述线程C获取COMMIT锁,执行提交流程,生成ver3快照,包括:
线程C基于最新的ver2快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程C获取READ锁,使用临时快照替换ver2快照,生成ver3快照。
4.根据权利要求1所述的多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,在所述线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作以前,所述方法还包括:
在出现异常时,通过抛弃action列表或抛弃临时快照的方式实现回滚。
5.根据权利要求1所述的多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,还包括:
线程A获取ver1快照,并对维度进行查询操作;
线程B获取ver1快照,在申请维度锁成功后,基于原维度克隆出新的维度,并在克隆维度上执行修改操作;
线程C获取ver1快照,在申请维度锁失败后,阻塞等待;
线程D获取ver1快照,并对维度进行查询操作;
线程B提交生成新的ver2快照,并释放维度锁;
线程C申请维度锁成功后,基于ver2快照中的维度克隆出新的维度,并在克隆维度上执行修改操作;
线程E获取ver2快照,并对维度进行查询操作;其中,线程E为读取线程;
线程C提交生成新的ver3快照,并释放维度锁。
6.根据权利要求5所述的多维数据库的元数据对象实现和元数据事务管理方法,其特征在于,在所述线程C提交生成新的ver3快照,并释放维度锁以前,所述方法还包括:
在出现异常时,通过抛弃action列表、抛弃临时快照或抛弃克隆维度的方式实现回滚。
7.一种多维数据库的元数据对象实现和元数据事务管理装置,其特征在于,包括:
第一获取模块,用于线程A、线程B和线程C均分别获取READ锁和最新的ver1快照;其中,线程A为读取线程,线程B为修改线程,线程C为修改线程;
第一资源销毁执行模块,用于在线程A基于ver1快照进行任意的读取操作后,线程A获取DESTROY锁,执行相关资源的销毁工作;
元数据修改模块,用于线程B和线程C分别基于ver1快照进行元数据修改,生成当前线程的action列表;
第一提交执行模块,用于线程B获取COMMIT锁,执行提交流程,生成ver2快照;
读取模块,用于线程D获取READ锁和最新的ver2快照后,线程D基于ver2快照进行任意的读取操作;其中,线程D为读取线程;
第二提交执行模块,用于线程C获取COMMIT锁,执行提交流程,生成ver3快照;
第二资源销毁执行模块,用于线程B、线程C和线程D分别获取DESTROY锁,并执行相关资源的销毁工作。
8.根据权利要求7所述的多维数据库的元数据对象实现和元数据事务管理装置,其特征在于,所述第一提交执行模块,用于:
线程B基于最新的ver1快照创建临时快照,并将当前线程的action列表应用到临时快照;
线程B获取READ锁,使用临时快照替换ver1快照,生成ver2快照。
9.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-6任意一项所述的多维数据库的元数据对象实现和元数据事务管理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-6任意一项所述的多维数据库的元数据对象实现和元数据事务管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211309733.4A CN115576659A (zh) | 2022-10-25 | 2022-10-25 | 多维数据库的元数据对象实现和元数据事务管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211309733.4A CN115576659A (zh) | 2022-10-25 | 2022-10-25 | 多维数据库的元数据对象实现和元数据事务管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115576659A true CN115576659A (zh) | 2023-01-06 |
Family
ID=84587066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211309733.4A Pending CN115576659A (zh) | 2022-10-25 | 2022-10-25 | 多维数据库的元数据对象实现和元数据事务管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576659A (zh) |
-
2022
- 2022-10-25 CN CN202211309733.4A patent/CN115576659A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429641B2 (en) | Copying data changes to a target database | |
US11314716B2 (en) | Atomic processing of compound database transactions that modify a metadata entity | |
US8832038B2 (en) | Online recovery of user tables using flashback table | |
CN107577678B (zh) | 处理数据库事务的方法、客户端和服务器 | |
US8671076B2 (en) | Database recovery using logs applied to consistent copies | |
CN109977274B (zh) | 一种数据查询和验证方法、系统、设备及存储介质 | |
US20120179645A1 (en) | Transaction support for distributed data | |
US7873605B2 (en) | Apparatus to selectively remove the effects of transactions in online database and enable logical recovery | |
CN111753013A (zh) | 分布式事务处理方法及装置 | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US20230014427A1 (en) | Global secondary index method for distributed database, electronic device and storage medium | |
US20140236887A1 (en) | Data seeding optimization for database replication | |
US10268776B1 (en) | Graph store built on a distributed hash table | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
CN113760996A (zh) | 一种数据整合方法及系统、设备和存储介质 | |
US11675762B2 (en) | Data structures for key management | |
CN102193987B (zh) | 基于oltp的增加节点数据关系的方法及系统 | |
CN115576659A (zh) | 多维数据库的元数据对象实现和元数据事务管理方法 | |
WO2023124242A1 (zh) | 事务执行方法、装置、设备和存储介质 | |
US7814066B1 (en) | System for backup and recovery of a plurality of heterogeneous databases | |
US11288251B2 (en) | Supporting concurrent updates to a database page | |
US20230043307A1 (en) | Replicating Changes Written by a Transactional Virtual Storage Access Method | |
CN114661719A (zh) | 一种在OpenGauss数据库分区表上在线创建全局索引的方法 | |
CN114490543A (zh) | 内存多维数据库的事务日志实现方法、装置、设备及介质 | |
CN106776052A (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 |