CN109101368A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN109101368A CN109101368A CN201810950127.8A CN201810950127A CN109101368A CN 109101368 A CN109101368 A CN 109101368A CN 201810950127 A CN201810950127 A CN 201810950127A CN 109101368 A CN109101368 A CN 109101368A
- Authority
- CN
- China
- Prior art keywords
- affairs
- list
- order
- data
- database
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法,包括:获取已提交事务对应的数据库表的数据表名、插入事务ID、删除事务ID、命令ID,通过数据字典获取数据库表的物理文件列表,然后,针对每一个物理文件,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID,然后遍历表文件中的所有文件块,若文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位,当已提交事务对应的所有数据库表均执行完上述操作,则完成针对已提交事务的回滚操作。如此,实现了将数据库中的数据还原到事务更新之前的状态,避免误操作对数据库中数据造成无法恢复的损坏。本申请还公开了一种数据处理装置。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种数据处理方法及装置。
背景技术
随着互联网技术的不断发展,数据呈爆炸增长趋势。在一些情况下,可以通过数据库实现数据管理。以关系型数据库为例,其可以用于存储数据,并在需要使用时读取数据。为了维护数据库中的数据,数据库一般会提供提交(commit)和回滚(rollback)功能。其中,执行commit操作可以使得由该事务所作的更改会变得对他人可见并且能够保证在崩溃发生时仍能维持该更改。执行rollback操作即回滚当前事务,如此使得针对该事务所作的所有更新都被抛弃。
其中,rollback只能在一个事务执行失败后运行,其运行结果为取消当前事务已经完成的数据操作。若一个事务执行完成并且执行了commit操作,则rollback是无法撤销上一次操作的。
然而,数据库的更新大量依赖数据库管理员(DataBase Administrator,DBA)的操作,DBA手动操作的过程中有很大可能性由于失误写错结构化查询语言(Structured QueryLanguage,SQL)语句或者选错数据库表,如此可以导致事务错误更新。当执行commit操作后,此次更新的数据将无法被撤销并且还原到此次事务之前的数据状态,进而对数据库数据造成无法恢复的损坏。
发明内容
有鉴于此,本申请提供了一种数据处理方法,使得能够对已提交事务进行回滚,还原到事务之前的数据状态,避免误操作对数据库数据造成无法恢复的损坏。对应地,本申请还提供了一种数据处理装置。
本申请第一方面提供了一种数据处理方法,所述方法包括:
响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID;
通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表;所述物理文件列表为所述数据库表的表文件的列表;
根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID;
遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
可选的,在所述根据对应的插入事务ID和删除事务ID修改删除标志位之后,还包括:
更新命令ID。
可选的,所述根据对应的插入事务ID和删除事务ID修改删除标志位包括:
若所述插入事务ID不为空,则置所述元组的删除标志位为1;
若所述删除事务ID不为空,则置所述元组的删除标志位为空。
可选的,所述方法还包括:
若所述删除事务ID不为空,则置所述删除ID为空。
可选的,所述已提交事务对应的数据库表为多个时;
所述遍历所述表文件中的所有文件块包括:
遍历所述多个数据库表的表文件中的所有文件块。
可选的,所述方法还包括:
将所述最新命令ID记录在内存中,以便根据所述内存记录的最新命令ID判断元组头结构中的命令ID是否为最新命令ID。
可选的,所述方法应用于PostgreSQL数据库,所述PostgreSQL数据库的服务端维护有插入事务ID、删除事务ID以及命令ID的字段。
可选的,所述方法通过运行命令行的方式实现。
可选的,所述运行命令行的方式包括采用图形界面调用命令行或者采用脚本调用命令行。
本申请第二方面提供了一种数据处理装置,所述装置包括:
第一获取单元,用于响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID;
第二获取单元,用于通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表;所述物理文件列表为所述数据库表的表文件的列表;
解析单元,用于根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID;
处理单元,用于遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
可选的,所述处理单元还用于:
在所述根据对应的插入事务ID和删除事务ID修改删除标志位之后,更新命令ID。
可选的,所述处理单元具体用于:
若所述插入事务ID不为空,则置所述元组的删除标志位为1;
若所述删除事务ID不为空,则置所述元组的删除标志位为空。
可选的,所述处理单元还用于:
若所述删除事务ID不为空,则置所述删除ID为空。
可选的,所述处理单元具体用于:
所述已提交事务对应的数据库表为多个时,遍历所述多个数据库表的表文件中的所有文件块。
可选的,所述装置还包括:
记录单元,用于将所述最新命令ID记录在内存中,以便根据所述内存记录的最新命令ID判断元组头结构中的命令ID是否为最新命令ID。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中提供了一种数据处理方法,该方法基于数据存储的原理,获取已提交事务对应的数据库表的数据表名、插入事务ID、删除事务ID、命令ID,通过数据字典获取数据库表的物理文件列表,然后,针对每一个物理文件,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID,然后遍历表文件中的所有文件块,若文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位,当已提交事务对应的所有数据库表均执行完上述操作,则完成针对已提交事务的回滚操作。如此,实现了将数据库中的数据还原到事务更新之前的状态,避免误操作对数据库中数据造成无法恢复的损坏。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例中一种数据处理方法的流程图;
图2为本申请实施例中一种数据处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本申请的技术方案,首选对本申请涉及的专业术语进行解释。
数据库是按照数据结构来组织、存储和管理数据的仓库。根据采用的数据结构可以将数据库大致分为层次式数据库、网络式数据库和关系式数据库三种。关系式数据库,也称关系型数据库,该数据库将一些复杂的数据结构归结为简单的二元关系进行存储和管理。关系型数据库的一个示例即为PostgreSQL,PostgreSQL是一种对象关系型数据库管理系统。
数据库事务(Database Transaction)简称事务,是指作为单个逻辑工作单元执行的一系列操作。这一系列操作要么完全地执行,要么完全不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。
数据库表是数据库最重要的组成部分之一。数据库提供了一个框架,数据库表提供了实质内容。以“教学管理系统”数据库为例,该数据库包含6张数据库表,分别围绕特定主题“教师”表、”课程”表、“成绩”表、“学生”表、“班级”表以及“授课”表,用来管理教学过程中学生、教师、课程等相关信息。这些各自独立的数据表通过建立关系被连接起来,形成可以交叉查阅、一目来了然的数据库。
数据库表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息。在数据库中,数据库表的列通常称为“字段”,每个字段包含某一主题的信息。数据库表中存放在行列交叉处的数据称为“值”,其为数据库中最基本的存储单元,位置由数据表中的记录和字段进行定义。
每一个数据库表对应一个物理真实存在的表文件,数据库表中的内容通过表文件的形式存储在物理磁盘上。其中,元数据是指存储在表文件中的数据,其是最终向表文件中所写入的数据,元数据中不可变的序列即为元组。
COMMIT和ROLLBACK为数据库提供的两种操作,使用COMMIT提交当前事务,使事务中执行的变更永久化,所有事务的更改都将为其他事务可见;ROLLBACK则可以在事务运行的过程中发生了某种故障,事务不能继续执行时,系统将事务中对数据库的所有已经完成的数据库更新操作全部撤销,回滚到事务开始时的状态。
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述的集合,其目的是对数据流程图中的各个元素做出详细的说明。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。
针对现有技术中误操作导致事务错误更新并且在commit后无法回滚的技术问题,本申请提供了一种数据处理方法,能够对已提交事务进行回滚,使得还原到事务更新之前的数据状态,避免对数据库数据造成无法恢复的损坏。
该数据方法是基于存储以及删除数据的原理实现的,具体地,当对数据库中的数据执行删除操作,将产生删除标志位不为0的元组,在查询数据库表时,由于默认该元组是删除状态,因而不会显示该元组。然而该元组仍然存储在硬盘上,数据库系统或DBA调用命令进行删除元组的清理,清理之后,表文件中该元组的信息才会真正被删除,释放表文件的物理空间。基于此,可以将删除动作改为插入动作。当对数据库中的数据执行插入操作,将该插入操作改为删除操作。如此,可以实现针对已提交事务的回滚处理,减少人工误操作引起的数据库数据损坏。
为了便于理解,下面结合附图对本申请实施例提供的数据处理方法进行介绍。
图1为本申请实施例提供的一种数据处理方法的流程图,参见图1,所述方法包括:
S101:响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID。
在具体实现时,当数据库管理员误操作对数据库进行了事务更新,则可以触发回滚操作,发起针对已提交事务的回滚请求,如此,数据库能够响应于针对已提交事务的回滚请求,对数据进行回滚处理。具体地,可以先获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID。
其中,数据库可以是PostgreSQL数据库,PostgreSQL数据库的服务端维护有插入事务ID、删除事务ID以及命令ID的字段。基于此,在一些可能的实现方式中,可以从PostgreSQL数据库的服务端获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID。
S102:通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表。
由于数据字典是描述数据的信息集合,包括数据项、数据结构、数据流、数据存储、处理逻辑等等,因此,可以通过数据字典获取与数据表名对应的表ID以及对应于所述数据库表的物理文件列表。其中,物理文件列表为数据库表的表文件的列表。
S103:根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID。
根据物理文件列表,打开数据库表对应的表文件,按照块大小依次读取表文件,然后解析表文件中的文件块,根据文件块结构遍历该文件块所有元组,查询元组的命令ID,在遍历所有的文件块之后,可以获得最新命令ID。该最新命令ID即表征最近一次commit操作对应的命令ID。
在一些可能的实现方式中,还可以将所述最新命令ID记录在内存中,以便根据所述内存记录的最新命令ID判断元组头结构中的命令ID是否为最新命令ID。
S104:遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
继续遍历表文件中的所有文件块,解析文件中的元组,当元组的元组头结构中的命令ID为最新的命令ID时,则表征已提交事务针对该元组进行了更新,根据对应的插入事务ID和删除事务ID修改删除标志位可以实现将该元组还原到更新之前的状态。
具体地,可以判断插入事务ID以及删除事务ID是否为空,以修改删除标志位的值。若插入事务ID不为空,则表明已提交事务执行了插入操作,为了还原到更新之前的状态,可以置所述元组的删除标志位为1,使得在后续清理时删除该元组;若删除事务ID不为空,则表明已提交事务执行了删除操作,为了还原到更新之前的状态,可以置所述元组的删除标志位为空,使得在后续清理时,不删除该元组。需要说明的是,在一些可能的实现方式中,当删除事务ID不为空时,还可以在置所述元组的删除标志位为空后,将所述删除事务ID置为空。
在所述根据对应的插入事务ID和删除事务ID修改删除标志位之后,还可以更新命令ID。
若已提交事务对应的数据库表为多个时,则遍历所述多个数据库表的表文件中的所有文件块,当多个表文件均遍历完成时,针对已提交事务的回滚完成。
可以理解,本申请提供的数据处理方法可以通过运行命令行的形式实现。可以将命令行集成在数据库服务端,通过运行命令行执行最近一次已提交事务的撤销。其中,运行命令行的方式可以包括采用图形界面调用命令行,或者通过脚本调用命令行,本申请实施例对此不作限定。
由上可知,本申请实施例提供了一种数据处理方法,该方法基于数据存储的原理,获取已提交事务对应的数据库表的数据表名、插入事务ID、删除事务ID、命令ID,通过数据字典获取数据库表的物理文件列表,然后,针对每一个物理文件,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID,然后遍历表文件中的所有文件块,若文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位,当已提交事务对应的所有数据库表均执行完上述操作,则完成针对已提交事务的回滚操作。如此,实现了将数据库中的数据还原到事务更新之前的状态,避免误操作对数据库中数据造成无法恢复的损坏。
以上为本申请实施例提供的一种数据处理方法的具体实现方式,基于此,本申请实施例还提供了一种数据处理装置,下面将从功能模块化的角度对本申请实施例提供的数据处理装置进行介绍。
图2为本申请实施例提供的一种数据处理装置的结构示意图,参见图2,该装置包括:
第一获取单元210,用于响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID;
第二获取单元220,用于通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表;所述物理文件列表为所述数据库表的表文件的列表;
解析单元230,用于根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID;
处理单元240,用于遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
可选的,所述处理单元240还用于:
在所述根据对应的插入事务ID和删除事务ID修改删除标志位之后,更新命令ID。
可选的,所述处理单元240具体用于:
若所述插入事务ID不为空,则置所述元组的删除标志位为1;
若所述删除事务ID不为空,则置所述元组的删除标志位为空。
可选的,所述处理单元240还用于:
若所述删除事务ID不为空,则置所述删除ID为空。
可选的,所述处理单元240具体用于:
所述已提交事务对应的数据库表为多个时,遍历所述多个数据库表的表文件中的所有文件块。
可选的,所述装置还包括:
记录单元,用于将所述最新命令ID记录在内存中,以便根据所述内存记录的最新命令ID判断元组头结构中的命令ID是否为最新命令ID。
由上可知,本申请实施例提供了一种数据处理装置,该装置基于数据存储的原理,获取已提交事务对应的数据库表的数据表名、插入事务ID、删除事务ID、命令ID,通过数据字典获取数据库表的物理文件列表,然后,针对每一个物理文件,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID,然后遍历表文件中的所有文件块,若文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位,当已提交事务对应的所有数据库表均执行完上述操作,则完成针对已提交事务的回滚操作。如此,实现了将数据库中的数据还原到事务更新之前的状态,避免误操作对数据库中数据造成无法恢复的损坏。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID;
通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表;所述物理文件列表为所述数据库表的表文件的列表;
根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID;
遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
2.根据权利要求1所述的方法,其特征在于,在所述根据对应的插入事务ID和删除事务ID修改删除标志位之后,还包括:
更新命令ID。
3.根据权利要求1所述的方法,其特征在于,所述根据对应的插入事务ID和删除事务ID修改删除标志位包括:
若所述插入事务ID不为空,则置所述元组的删除标志位为1;
若所述删除事务ID不为空,则置所述元组的删除标志位为空。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述删除事务ID不为空,则置所述删除ID为空。
5.根据权利要求1所述的方法,其特征在于,所述已提交事务对应的数据库表为多个时;
所述遍历所述表文件中的所有文件块包括:
遍历所述多个数据库表的表文件中的所有文件块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述最新命令ID记录在内存中,以便根据所述内存记录的最新命令ID判断元组头结构中的命令ID是否为最新命令ID。
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述方法应用于PostgreSQL数据库,所述PostgreSQL数据库的服务端维护有插入事务ID、删除事务ID以及命令ID的字段。
8.根据权利要求1至6任意一项所述的方法,其特征在于,所述方法通过运行命令行的方式实现。
9.根据权利要求1至6任意一项所述的方法,其特征在于,所述运行命令行的方式包括采用图形界面调用命令行或者采用脚本调用命令行。
10.一种数据处理装置,其特征在于,所述装置包括:
第一获取单元,用于响应于针对已提交事务的回滚请求,获取与所述已提交事务对应的数据库表的数据表名以及对应的插入事务ID、删除事务ID、命令ID;
第二获取单元,用于通过数据字典获取与所述数据表名对应的表ID以及对应于所述数据库表的物理文件列表;所述物理文件列表为所述数据库表的表文件的列表;
解析单元,用于根据所述物理文件列表,打开数据库表对应的表文件,解析表文件中的文件块,获得最新命令ID;
处理单元,用于遍历所述表文件中的所有文件块,若所述文件块的元组的元组头结构中的命令ID为最新命令ID,则根据对应的插入事务ID和删除事务ID修改删除标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810950127.8A CN109101368B (zh) | 2018-08-20 | 2018-08-20 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810950127.8A CN109101368B (zh) | 2018-08-20 | 2018-08-20 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101368A true CN109101368A (zh) | 2018-12-28 |
CN109101368B CN109101368B (zh) | 2022-04-22 |
Family
ID=64850351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810950127.8A Active CN109101368B (zh) | 2018-08-20 | 2018-08-20 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101368B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052120A (zh) * | 2020-08-27 | 2020-12-08 | 厦门市美亚柏科信息股份有限公司 | 数据库删除数据恢复方法和装置 |
CN112162832A (zh) * | 2020-09-08 | 2021-01-01 | 北京人大金仓信息技术股份有限公司 | 多版本并发控制下实现审计数据存储的方法和装置 |
WO2023111910A1 (en) * | 2021-12-16 | 2023-06-22 | International Business Machines Corporation | Rolling back database transaction |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020007363A1 (en) * | 2000-05-25 | 2002-01-17 | Lev Vaitzblit | System and method for transaction-selective rollback reconstruction of database objects |
CN102103642A (zh) * | 2011-03-25 | 2011-06-22 | 北京世纪互联工程技术服务有限公司 | 基于oltp的数据删除方法、系统及图形数据库服务器 |
CN103617277A (zh) * | 2013-12-09 | 2014-03-05 | 山东瀚高基础软件股份有限公司 | 一种还原误删除的数据表内容的方法 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
-
2018
- 2018-08-20 CN CN201810950127.8A patent/CN109101368B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020007363A1 (en) * | 2000-05-25 | 2002-01-17 | Lev Vaitzblit | System and method for transaction-selective rollback reconstruction of database objects |
CN102103642A (zh) * | 2011-03-25 | 2011-06-22 | 北京世纪互联工程技术服务有限公司 | 基于oltp的数据删除方法、系统及图形数据库服务器 |
CN103617277A (zh) * | 2013-12-09 | 2014-03-05 | 山东瀚高基础软件股份有限公司 | 一种还原误删除的数据表内容的方法 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
Non-Patent Citations (1)
Title |
---|
郭歌等: "PostgreSQL数据库XA协议的设计和实现", 《计算机应用研究》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052120A (zh) * | 2020-08-27 | 2020-12-08 | 厦门市美亚柏科信息股份有限公司 | 数据库删除数据恢复方法和装置 |
CN112052120B (zh) * | 2020-08-27 | 2022-08-05 | 厦门市美亚柏科信息股份有限公司 | 数据库删除数据恢复方法和装置 |
CN112162832A (zh) * | 2020-09-08 | 2021-01-01 | 北京人大金仓信息技术股份有限公司 | 多版本并发控制下实现审计数据存储的方法和装置 |
CN112162832B (zh) * | 2020-09-08 | 2024-02-09 | 北京人大金仓信息技术股份有限公司 | 多版本并发控制下实现审计数据存储的方法和装置 |
WO2023111910A1 (en) * | 2021-12-16 | 2023-06-22 | International Business Machines Corporation | Rolling back database transaction |
US12093139B2 (en) | 2021-12-16 | 2024-09-17 | International Business Machines Corporation | Rolling back a database transaction |
Also Published As
Publication number | Publication date |
---|---|
CN109101368B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9953051B2 (en) | Multi-version concurrency control method in database and database system | |
CN106462586B (zh) | 基于记录的多版本并发控制的一致性读取的方法和系统 | |
CN105574187B (zh) | 一种异构数据库复制事务一致性保障方法及系统 | |
CN106933703B (zh) | 一种数据库数据备份的方法、装置及电子设备 | |
US8078588B2 (en) | Recoverable execution | |
US9760617B2 (en) | Applying transaction log in parallel | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
US20170235754A1 (en) | De-Duplication-Based Remote Replication Method, and Apparatus | |
US9471622B2 (en) | SCM-conscious transactional key-value store | |
CN109891402A (zh) | 可撤销和在线模式转换 | |
US8874519B1 (en) | Method and apparatus for restoring a table in a database | |
CN102193991B (zh) | 基于oltp的数据修改方法、系统及图形数据库服务器 | |
US11074224B2 (en) | Partitioned data replication | |
CN108388569B (zh) | 一种快速的键值数据库的系统及建立方法 | |
CN106777270A (zh) | 一种基于提交点时间线同步的异构数据库复制并行执行系统及方法 | |
CN109101368A (zh) | 一种数据处理方法及装置 | |
CN109189852A (zh) | 一种数据同步的方法及用于数据同步的装置 | |
CN104881418B (zh) | 用于MySQL的快速回收回滚空间的方法和装置 | |
KR102139087B1 (ko) | 인덱스 리두 로그를 이용한 인덱스 복구를 위한 방법, 서버 및 컴퓨터 판독가능 저장매체 | |
JP2008524688A (ja) | Blobを管理するためのシステム及び方法 | |
US8417669B2 (en) | Auto-correction in database replication | |
CN107357907A (zh) | 一种支持跨版本的数据库升级方法及装置 | |
CN113868028A (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
CN100535863C (zh) | 实现配置事务的方法及设备 | |
CN110909087A (zh) | 一种关系型数据库在线ddl修改表结构的方法和装置 |
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 |