CN114064664A - 在数据库中查询事务修改内容的方法及装置 - Google Patents
在数据库中查询事务修改内容的方法及装置 Download PDFInfo
- Publication number
- CN114064664A CN114064664A CN202210049157.8A CN202210049157A CN114064664A CN 114064664 A CN114064664 A CN 114064664A CN 202210049157 A CN202210049157 A CN 202210049157A CN 114064664 A CN114064664 A CN 114064664A
- Authority
- CN
- China
- Prior art keywords
- row
- transaction
- rows
- target
- modified
- 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
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了在数据库中查询事务修改内容的方法及装置,该方法的一具体实施方式包括:接收针对目标事务的修改内容的查询请求;根据查询请求,获取目标事务的事务描述符,其中,事务描述符预先关联目标事务已修改的若干行的行信息,行信息至少包括行标识;根据该若干行的行信息,获取该若干行各自的目标数据,目标数据包括其对应的行的主键和经目标事务修改后的若干个字段值;返回包括该若干行各自的目标数据的查询结果。
Description
技术领域
本说明书实施例涉及计算机技术领域,具体地,涉及在数据库中查询事务修改内容的方法及装置。
背景技术
在数据库的事务实现中,有时候需要获取事务所有修改行的信息,例如,在事务提交前需要获取这个事务所有修改行的信息,以检查修改行是否满足数据库的约束条件等,还有事务执行失败的时候需要回滚已经修改的行等等。
目前,基于B+树数据结构的数据库,可以通过查找事务的回滚日志(Undo Log)来获取事务所有修改行的信息。然而有些基于其他数据结构的数据库,例如基于增量+存量数据结构的数据库,具体如OceanBase等数据库,通常没有回滚日志,无法通过查找事务的回滚日志来获取事务所有修改行的信息。
因此,迫切需要一种合理、可靠的方案,可以提供具有通用性的事务修改内容获取方法。
发明内容
本说明书实施例提供了在数据库中查询事务修改内容的方法及装置,可以提供具有通用性的事务修改内容获取方法。
第一方面,本说明书实施例提供了一种在数据库中查询事务修改内容的方法,包括:接收针对目标事务的修改内容的查询请求;根据所述查询请求,获取所述目标事务的事务描述符,其中,所述事务描述符预先关联所述目标事务已修改的若干行的行信息,所述行信息至少包括行标识;根据所述若干行的行信息,获取所述若干行各自的目标数据,所述目标数据包括其对应的行的主键和经所述目标事务修改后的若干个字段值;返回包括所述若干行各自的目标数据的查询结果。
在一些实施例中,所述查询请求包括所述目标事务的事务标识;以及所述根据所述查询请求,获取所述目标事务的事务描述符,包括:根据所述事务标识,获取所述事务描述符。
在一些实施例中,所述查询请求包括所述事务描述符;以及所述根据所述查询请求,获取所述目标事务的事务描述符,包括:从所述查询请求中获取所述事务描述符。
在一些实施例中,所述数据库预先建立有第一映射关系,其用于表征所述事务描述符和所述若干行的行标识之间的映射关系;以及所述方法还包括:根据所述事务描述符,在所述数据库中查找所述第一映射关系;所述根据所述若干行的行信息,获取所述若干行各自的目标数据,包括:根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键;对于所述若干行中的任意行,根据所述任意行的主键,获取所述任意行经所述目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为所述任意行的目标数据。
在一些实施例中,所述第一映射关系具体为以所述事务描述符为链表头的第一链表,所述行标识具体为主键存储地址;以及所述根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键,包括:根据所述第一链表示出的主键存储地址,获取所述若干行的主键。
在一些实施例中,所述第一映射关系具体包括所述事务描述符和由所述若干行的行标识组成的行标识集合;以及所述根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键,包括:根据所述行标识集合,获取所述若干行的主键。
在一些实施例中,所述行标识具体为主键,所述行标识集合为主键集合;以及所述根据所述行标识集合,获取所述若干行的主键,包括:从所述主键集合中获取所述若干行的主键。
在一些实施例中,所述行标识具体为主键存储地址,所述行标识集合为主键存储地址集合;以及所述根据所述行标识集合,获取所述若干行的主键,包括:根据所述主键存储地址集合,获取所述若干行的主键。
在一些实施例中,所述数据库还预先建立有以所述任意行的主键为链表头的第二链表,所述第二链表示出所述任意行若干个修改版本的数据的存储地址;以及所述根据所述任意行的主键,获取所述任意行经所述目标事务修改后的若干个字段值,包括:根据所述任意行的主键,在所述数据库中查找所述第二链表;根据查找到的所述第二链表,获取所述任意行经所述目标事务修改后的若干个字段值。
在一些实施例中,所述目标事务为未提交事务,所述第二链表的尾节点包括,关联于所述目标事务的修改版本的数据的存储地址;以及所述根据查找到的所述第二链表,获取所述任意行经所述目标事务修改后的若干个字段值,包括:根据所述第二链表的尾节点包括的存储地址,获取所述任意行经所述目标事务修改后的若干个字段值。
在一些实施例中,所述行信息位于所述事务描述符内,并且还包括其对应的行经所述目标事务修改后的若干个字段值,所述行标识具体为主键;以及所述根据所述若干行的行信息,获取所述若干行各自的目标数据,包括:从所述事务描述符中获取所述若干行各自的行信息作为目标数据。
在一些实施例中,所述第一映射关系通过以下第一步骤生成:响应于检测到目标触发事件,获取所述事务描述符;获取所述若干行的行标识;根据所述事务描述符和所述若干行的行标识,生成第一映射关系。
在一些实施例中,所述数据库的增量数据和除所述增量数据以外的基线数据,存放在所述数据库中的不同位置,所述目标触发事件包括将所述增量数据合并到所述基线数据的事件。
在一些实施例中,所述获取所述若干行的行标识,包括:获取所述若干行的主键存储地址;所述根据所述事务描述符和所述若干行的行标识,生成第一映射关系,包括:根据所述事务描述符和所述若干行的主键存储地址,生成以所述事务描述符为链表头的第一链表。
在一些实施例中,所述根据所述事务描述符和所述若干行各自的行标识,生成第一映射关系,包括:将所述若干行的行标识组成行标识集合;生成包括所述事务描述符和所述行标识集合的第一映射关系。
在一些实施例中,所述第一映射关系通过以下第二步骤生成:在所述目标事务开始执行时,生成包括所述事务描述符的第一映射关系;响应于检测到所述目标事务执行的第一更新操作,获取所述第一更新操作所针对的第一行的行标识,并将所述第一行的行标识归入所述第一映射关系。
在一些实施例中,所述生成包括所述事务描述符的第一映射关系,包括:生成以所述事务描述符为链表头的第一链表;所述获取所述第一更新操作所针对的第一行的行标识,并将所述第一行的行标识归入所述第一映射关系,包括:获取所述第一行的主键存储地址,并将该主键存储地址作为所述事务描述符的值归入所述第一链表。
在一些实施例中,所述第二步骤还包括:响应于检测到所述目标事务执行的第二更新操作,获取所述第二更新操作所针对的第二行的主键存储地址,以及获取所述第一行的主键;将所述第一行的主键作为键,将所述第二行的主键存储地址作为值,组成键值对归入所述第一链表。
在一些实施例中,所述生成包括所述事务描述符的第一映射关系,包括:生成包括所述事务描述符和处于空集状态的行标识集合的第一映射关系;所述将所述第一行的行标识归入所述第一映射关系,包括:将所述第一行的行标识归入所述行标识集合。
第二方面,本说明书实施例提供了一种在数据库中查询事务修改内容的装置,包括:接收单元,被配置成接收针对目标事务的修改内容的查询请求;事务描述符获取单元,被配置成根据所述查询请求,获取所述目标事务的事务描述符,其中,所述事务描述符预先关联所述目标事务已修改的若干行的行信息,所述行信息至少包括行标识;目标数据获取单元,被配置成根据所述若干行的行信息,获取所述若干行各自的目标数据,所述目标数据包括其对应的行的主键和经所述目标事务修改后的若干个字段值;发送单元,被配置成返回包括所述若干行各自的目标数据的查询结果。
第三方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
第四方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如第一方面中任一实现方式描述的方法。
第五方面,本说明书实施例提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
本说明书的上述实施例提供的方案,可以支持对事务的事务描述符和该事务已修改的若干行的行信息进行关联。其中,该行信息至少包括行标识。由此,在需要查询目标事务的修改内容时,根据目标事务的事务描述符所关联的若干行的行信息,便可以获取该若干行各自的目标数据作为目标事务的修改内容。其中,目标数据包括其对应的行的主键和经目标事务修改后的若干个字段值。无论数据库是否有回滚日志,通过该方案均可以获取到目标事务的修改内容 ,因而该方案能提供具有通用性的事务修改内容获取方法。
附图说明
为了更清楚地说明本说明书披露的多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书披露的多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本说明书的一些实施例可以应用于其中的一个示例性系统架构图;
图2是在数据库中查询事务修改内容的方法的一个实施例的流程图;
图3是事务描述符的组成结构的一个示意图;
图4是以主键为链表头的链表示出的链接关系的一个示意图;
图5是第一链表的生成过程的一个示意图;
图6是第一链表示出的链接关系的一个示意图;
图7是第一链表的生成过程的一个示意图;
图8是在数据库中查询事务修改内容的方法的一个实施例的流程图;
图9是第一映射关系的组成结构的一个示意图;
图10是第一映射关系的组成结构的一个示意图;
图11是第一映射关系的生成过程的一个示意图;
图12是第一映射关系的生成过程的一个示意图;
图13是在数据库中查询事务修改内容的方法的一个实施例的流程图;
图14是在数据库中查询事务修改内容的装置的一个结构示意图。
具体实施方式
下面结合附图和实施例对本说明书作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本说明书中的实施例及实施例中的特征可以相互组合。
如前所述,基于B+树数据结构的数据库,可以通过查找事务的回滚日志来获取事务所有修改行的信息。然而有些基于其他数据结构的数据库,例如基于增量+存量数据结构的数据库,具体如OceanBase等数据库,通常没有回滚日志,无法通过查找事务的回滚日志来获取事务所有修改行的信息。
基于此,本说明书的一些实施例提供了在数据库中查询事务修改内容的方法,可以提供具有通用性的事务修改内容获取方法,能适用于多种数据库。具体地,图1示出了适用于这些实施例的示例性系统架构图。
如图1所示,系统架构可以包括数据库100中负责查询事务修改内容的目标引擎,例如图1中示出的事务引擎,还可以包括数据库100中有事务修改内容获取需求的目标模块,例如图1中示出的约束检查模块。
数据库100可以是基于增量+存量数据结构的数据库,例如OceanBase等数据库,或者也可以是基于其他数据结构(例如B+树数据结构等)的数据库,在此不做具体限定。另外,目标引擎也可以是除事务引擎以外的其他引擎,目标模块还可以包括除约束检查模块以外的其他模块,在此不做具体限定。
另外,数据库100采用的数据结构,例如增量+存量数据结构等,可以具体为KV数据结构。其中,K代表键,英文全称为Key。V代表值,英文全称为Value。KV数据结构中的KV对通常是按照Key有序存放的。
KV对中的Value通常包括一个或多个字段值,该KV对中的Key通常是该一个或多个字段值对应的主键。另外,一个KV对可以视为数据库100的一个行,该KV对中的Key可以称为该行的主键。
实践中,在数据库100中执行的事务,可以对数据库100的行进行修改。为了便于查找事务已修改的行的信息,也即事务的修改内容,可以在数据库100中,针对事务,例如包括但不限于未提交事务,建立其事务描述符和已修改的若干行的行信息之间的关联关系。其中,该行信息至少包括行标识。该行标识可以为主键或主键的存储地址(简称为主键存储地址)。事务描述符可以用于记录事务的信息,该信息例如可以包括事务标识,事务启动时间,等等。
基于此,当约束检查模块需要检查未提交事务的修改行是否满足数据库的约束条件时,可以如图1中所示,向事务引擎发送针对该未提交事务的修改内容的查询请求。而后,事务引擎可以根据该查询请求,获取该未提交事务的事务描述符。其中,该事务描述符预先关联该未提交事务已修改的若干行的行信息。接着,事务引擎可以根据该事务描述符所关联的该若干行的行信息,获取该未提交事务的修改内容。然后,事务引擎可以向约束检查模块返回该未提交事务的修改内容。
在一些实施例中,还可以建立已提交事务的事务描述符和该已提交事务已修改的若干行的行信息之间的关联关系,这样可以方便查看已提交事务的修改内容。
作为示例,如图1所示,上述系统架构还可以包括数据库100对应的客户端。当数据库100的用户需要查看已提交事务的修改内容时,可以通过该客户端向事务引擎发送针对该已提交事务的修改内容的查询请求。而后,事务引擎可以根据该查询请求,获取该已提交事务的事务描述符。其中,该事务描述符预先关联该已提交事务已修改的若干行的行信息。接着,事务引擎可以根据该事务描述符所关联的该若干行的行信息,获取该已提交事务的修改内容。然后,事务引擎可以向该客户端返回该已提交事务的修改内容。
基于以上描述的事务修改内容查找过程,无论数据库是否有回滚日志,均可以获取到事务的修改内容。因而,本说明书实施例提供的方案,可以提供具有通用性的事务修改内容获取方法。
下面,结合具体的实施例,描述上述方法的具体实施步骤。
参看图2,其示出了在数据库中查询事务修改内容的方法的一个实施例的流程200。该方法的执行主体可以为数据库(例如图1中示出的数据库100),或者该数据库中的目标引擎(例如图1中示出的事务引擎)。该方法包括以下步骤:
步骤202,接收针对目标事务的修改内容的查询请求;
步骤204,根据查询请求,获取目标事务的事务描述符,其中,事务描述符预先关联目标事务已修改的若干行的行信息,行信息至少包括行标识;
步骤206,根据若干行的行信息,获取若干行各自的目标数据,目标数据包括其对应的行的主键和经目标事务修改后的若干个字段值;
步骤208,返回包括若干行各自的目标数据的查询结果。
下面,对以上各步骤做进一步说明。
在步骤202中,可以实时地接收针对目标事务的修改内容的查询请求。其中,目标事务可以为已提交事务或未提交事务。查询请求例如可以包括目标事务的事务标识。
作为示例,当目标事务为已提交事务时,例如可以接收用户通过数据库对应的客户端发送的针对该已提交事务的修改内容的查询请求。当目标事务为未提交事务时,例如可以从数据库中的目标模块接收针对该未提交事务的修改内容的查询请求。其中,目标模块可以包括但不限于如前所述的约束检查模块。
接着,在步骤204中,可以根据查询请求,获取目标事务的事务描述符。例如,当查询请求包括目标事务的事务标识时,可以根据该事务标识,获取目标事务的事务描述符。进一步地,可以在数据库中查找包括该事务标识的事务描述符,并将查找到的事务描述符确定为目标事务的事务描述符。
其中,目标事务的事务描述符,可以预先关联目标事务已修改的若干行的行信息,该行信息至少包括行标识。
在一个实施例中,目标事务已修改的若干行的行信息,可以位于目标事务的事务描述符内,并且该行信息还可以包括其对应的行经目标事务修改后的若干个字段值,而且该行信息中的行标识可以具体为主键。需要说明,该行信息可以是在目标事务执行过程中添加至该事务描述符中的。
参看图3,其为事务描述符的组成结构的一个示意图。图3示出的事务描述符除了包括其对应的事务的事务标识和事务启动时间等外,还包括该事务已修改的若干行各自的主键和经该事务修改后的若干个字段值,例如图3示出的<Key1,Value>,<Key3,Value>,<Key4,Value>,<Key6,Value>。其中,Key1、Key3、Key4、Key6代表该若干行各自的主键,Value代表经该事务修改后的若干个字段值。省略号“…”代表该事务的其他信息。
在目标事务已修改的若干行的行信息位于事务描述符内的情况下,在步骤206中,可以从目标事务的事务描述符中获取该若干行各自的行信息作为目标数据。其中,该若干行各自的目标数据可以视为目标事务的修改内容。接着,在步骤208中,可以返回包括该若干行各自的目标数据的查询结果。由此,可以快速地获取到事务的修改内容,能提升事务修改内容查询效率,而且还能节约查询请求的发送方的等待时间。
图2对应的实施例提供的方案,可以支持对事务的事务描述符和该事务已修改的若干行的行信息进行关联。在需要查询目标事务的修改内容时,根据目标事务的事务描述符所关联的若干行的行信息,便可以获取目标事务的修改内容。无论数据库是否有回滚日志,通过该方案均可以获取到目标事务的修改内容 ,因而该方案能提供具有通用性的事务修改内容获取方法。
实践中,数据库的至少部分行的各个修改版本的数据会存储在数据库中,例如存储在数据库的磁盘上。如果采用将事务已修改的若干行的行信息添加到该事务的事务描述符内这种实现方式,会对该各个修改版本的数据进行过多的冗余存储,从而会给数据库带来一定的存储压力。
为了减轻数据库的存储压力,节约存储空间,可以预先建立第一映射关系,其用于表征目标事务的事务描述符和目标事务已修改的若干行的行标识之间的映射关系。其中,该行标识可以为主键或主键存储地址。第一映射关系可以由如前所述的目标引擎或其他引擎建立,在此不做具体限定。由此,在查找目标事务的修改内容时,可以根据目标事务的事务描述符,在数据库中查找第一映射关系,而后可以根据查找到的第一映射关系示出的该若干行的行标识,获取该若干行的主键,然后对于该若干行中的任意行,可以根据该任意行的主键,获取该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。
具体地,在一个例子中,第一映射关系可以响应于检测到目标触发事件而生成。其中,目标触发事件例如可以为新的生成周期到来的事件。或者,若数据库采用增量+存量数据结构,并且数据库的增量数据和除增量数据以外的基线数据(也可称为存量数据)存放在数据库中的不同位置,则目标触发事件可以为,将增量数据合并到基线数据的事件。通常,增量数据可以存放在内存中,基线数据可以存放在磁盘中。
进一步地,第一映射关系可以通过以下第一步骤生成:响应于检测到目标触发事件,获取目标事务的事务描述符;获取目标事务已修改的若干行的行标识;根据该事务描述符和该若干行的行标识,生成第一映射关系。
实践中,对于数据库的上述至少部分行中的每个行,数据库中还可以建立有以该行的主键为链表头的链表,该链表可以示出该行若干个修改版本的数据的存储地址。
假设上述至少部分行的主键包括Key1、Key2,Key3,已提交事务A1、A2和未提交事务A3先后参与上述至少部分行中某些行的修改,并且事务A1对应的修改版本为V1,事务A2对应的修改版本为V2,事务A3对应的修改版本为V3。如图4所示,对于主键Key1所在的行,若该行依次由事务A1、A2、A3进行修改,则在以主键Key1为链表头的链表中,主键Key1可以指向该行修改版本为V1的数据(可称为Value V1),Value V1可以指向该行修改版本为V2的数据(可称为Value V2),Value V2可以指向该行修改版本为V3的数据(可称为Value V3)。具体地,在该链表中,可以通过将主键Key1作为键,将Value V1的存储地址作为该键的值,来实现由主键Key1指向该Value V1;通过将该Value V1的版本V1作为键,将该Value V2的存储地址作为该键的值,来实现由该Value V1指向该Value V2;通过将该Value V2的版本V2作为键,将该Value V3的存储地址作为该键的值,来实现由该Value V2指向该Value V3。
对于主键Key2所在的行,若该行只由事务A2进行修改,则在以主键Key2为链表头的链表中,主键Key2可以指向该行修改版本为V2的数据(可称为Value V2)。对于主键Key3所在的行,若该行只由事务A3进行修改,则在以主键Key3为链表头的链表中,主键Key3可以指向该行修改版本为V3的数据(可称为Value V3)。
需要说明,根据图4的图示可以看出,未提交事务的修改版本通常最高,而且该修改版本的数据的存储地址通常位于链表的尾节点。
在上述第一步骤中,在获取目标事务已修改的若干行的行标识时,可以根据数据库中以上述至少部分行的主键为链表头的链表,确定目标事务已修改的若干行的主键,进而根据该若干行的主键,确定该若干行的行标识。
进一步地,当目标事务为未提交事务时,可以根据以上述至少部分行的主键为链表头的链表的尾节点,确定目标事务已修改的若干行的主键。应该理解,以该主键为链表头的链表的尾节点包括,关联于目标事务的修改版本的数据的存储地址。
可选地,数据库中可以预先建立有从事务标识到修改版本的映射关系。当目标事务为已提交事务时,可以根据该映射关系,确定目标事务的修改版本,进而可以根据该修改版本和以上述至少部分行的主键为链表头的链表,确定目标事务已修改的若干行的主键。
作为另一个例子,第一映射关系可以在目标事务执行过程中生成。具体地,第一映射关系可以通过以下第二步骤生成:在目标事务开始执行时,生成包括目标事务的事务描述符的第一映射关系;响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的行标识,并将第一行的行标识归入第一映射关系。采用此种生成方式,可以每检测到目标事务执行的一个更新操作,便将该更新操作所针对的行的行标识归入第一映射关系。
以上对第一映射关系的用途和生成过程进行了简要介绍。下面,对第一映射关系的表现形式做进一步说明。
在一个实施例中,第一映射关系可以具体为以目标事务的事务描述符为链表头的第一链表。其中,第一链表可以基于如前所述的第一步骤生成,或者也可以基于如前所述的第二步骤生成。
在第一链表基于如前所述的第一步骤生成时,第一链表的生成过程可以具体如图5所示,包括以下步骤:
步骤502,响应于检测到目标触发事件,获取目标事务的事务描述符;
步骤504,获取目标事务已修改的若干行的主键存储地址;
步骤506,根据该事务描述符和该若干行的主键存储地址,生成以该事务描述符为链表头的第一链表。
其中,在步骤504中,可以根据数据库中以上述至少部分行的主键为链表头的链表,确定目标事务已修改的若干行的主键,进而根据该若干行的主键,确定该若干行的主键存储地址。这里,针对该若干行的主键的确定方法,可参看前文中的相关说明,在此不再赘述。
在步骤506中,可以将目标事务的事务描述符作为键,将目标事务已修改的若干行中任一行的主键存储地址作为值,组成键值对归入第一链表。另外,当该若干行为多行时,还可以获取该任一行的主键作为键,将该多行中其余行中的某行作为值,组成键值对归入第一链表。此外,当该其余行为多行时,可采用此处描述的键值对组成方法,继续组成键值对归入第一链表。
参看图6,其为第一链表示出的链接关系的一个示意图。假设目标事务已修改的若干行的主键为图6中示出的Key1、Key3、Key4、Key6,Key6的存储地址可以作为目标事务的事务描述符的值,从而使得该事务描述符能指向Key6。Key4的存储地址可以作为Key6的Value(值),从而使得Key6能指向Key4。Key3的存储地址可以作为Key4的Value,从而使得Key4能指向Key3。Key1的存储地址可以作为Key3的Value,从而使得Key3能指向Key1。
在第一链表基于如前所述的第二步骤生成时,第一链表的生成过程可以具体如图7所示,包括以下步骤:
步骤702,在目标事务开始执行时,生成以事务描述符为链表头的第一链表;
步骤704,响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的主键存储地址,并将该主键存储地址作为事务描述符的值归入第一链表。
可选地,在步骤704之后,还可以包括:步骤706,响应于检测到目标事务执行的第二更新操作,获取第二更新操作所针对的第二行的主键存储地址,以及获取第一行的主键;步骤708,将第一行的主键作为键,将第二行的主键存储地址作为值,组成键值对归入第一链表。
进一步参看图8,其示出了在预先建立第一链表的情况下,在数据库中查询事务修改内容的方法的一个实施例的流程800。该方法的执行主体可以为数据库(例如图1中示出的数据库100),或者该数据库中的目标引擎(例如图1中示出的事务引擎)。该方法包括以下步骤:
步骤802,接收针对目标事务的修改内容的查询请求;
步骤804,根据查询请求,获取目标事务的事务描述符;
步骤806,根据事务描述符,在数据库中查找以事务描述符为链表头的第一链表;
步骤808,根据第一链表示出的主键存储地址,获取目标事务已修改的若干行的主键;
步骤810,对于若干行中的任意行,根据任意行的主键,获取任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为任意行的目标数据;
步骤812,返回包括若干行各自的目标数据的查询结果。
下面,对以上各步骤做进一步说明。
在步骤802中,可以实时地接收针对目标事务的修改内容的查询请求。该查询请求可以包括目标事务的事务标识或事务描述符。这里,关于步骤802的具体解释,可参看图2对应实施例中步骤202的相关说明,在此不再赘述。
接着,在步骤804中,可以根据查询请求,获取目标事务的事务描述符。
具体地,当查询请求包括目标事务的事务标识时,可以根据该事务标识获取目标事务的事务描述符。当查询请求包括目标事务的事务描述符时,可以从查询请求中获取目标事务的事务描述符。
接着,在步骤806中,可以根据目标事务的事务描述符,在数据库中查找以该事务描述符为链表头的第一链表。其中,第一链表可以示出目标事务已修改的若干行的主键存储地址。这里,关于第一链表的具体解释,可参看前文中的相关说明,在此不再赘述。
接着,在步骤808中,可以根据第一链表示出的主键存储地址,获取目标事务已修改的若干行的主键。在一个例子中,可以根据第一链表示出的各个主键存储地址,获取目标事务已修改的若干行的主键。在另一个例子中,可以获取第一链表中的各个主键,并且根据第一链表的尾节点包括的主键存储地址,获取存放在该主键存储地址处的主键。
接着,在步骤810中,对于目标事务已修改的若干行中的任意行,可以根据该任意行的主键,获取该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。
具体地,可以根据该任意行的主键,在数据库中查找预先建立的以该主键为链表头的链表。这里,为了便于描述,将该链表称为第二链表。其中,第二链表可以示出该任意行若干个修改版本的数据的存储地址。之后,可以根据查找到的第二链表,获取该任意行经目标事务修改后的若干个字段值。
进一步地,当目标事务为未提交事务时,第二链表的尾节点可以包括,关联于目标事务的修改版本的数据的存储地址。基于此,在步骤810中,可以根据第二链表的尾节点包括的存储地址,获取该任意行经目标事务修改后的若干个字段值。
可选地,数据库中可以预先建立有从事务标识到修改版本的映射关系。当目标事务为已提交事务时,在步骤810中,可以根据该映射关系,确定目标事务的修改版本,而后可以根据该修改版本,在第二链表中确定该任意行该修改版本的数据的存储地址,然后可以根据该存储地址,获取该任意行经目标事务修改后的若干个字段值。
在通过执行步骤810获取到目标事务已修改的若干行各自的目标数据后,可以接着执行步骤812,返回包括该若干行各自的目标数据的查询结果。
图8对应的实施例提供的方案,可以支持根据目标事务的事务描述符和目标事务已修改的若干行的主键存储地址,建立以目标事务的事务描述符为链表头的第一链表,来表征该事务描述符和该若干行的主键存储地址之间的映射关系。在查询目标事务的修改内容时,可以根据该事务描述符查找到第一链表,而后可以根据第一链表示出的主键存储地址,获取到该若干行的主键,然后可以根据该若干行中任意行的主键,获取到该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。由此,便可以获得目标事务包含该若干行各自的目标数据的修改内容。无论数据库是否有回滚日志,通过该方案均可以获取到目标事务的修改内容 ,因而该方案能提供具有通用性的事务修改内容获取方法。
以上描述了与第一链表有关的内容。实践中,第一映射关系除了采用链表表现形式外,还可以采用其他的表现形式。
例如,在一个实施例中,第一映射关系可以具体包括目标事务的事务描述符,以及由目标事务已修改的若干行的行标识组成的行标识集合。
在一个例子中,行标识可以具体为主键,行标识集合可以主键集合。参看图9,其为第一映射关系的组成结构的一个示意图。图9示出了,第一映射关系具体包括目标事务的事务描述符,以及由目标事务已修改的若干行的主键,例如Key1、Key3、Key4、Key6,组成的主键集合。
实践中,主键相较于主键存储地址,通常会占用较多的存储空间。为了节约数据库的存储空间,在另一个例子中,可以将主键存储地址作为行标识,基于此,行标识集合可以为主键存储地址集合。参看图10,其为第一映射关系的组成结构的一个示意图。图10示出了,第一映射关系具体包括目标事务的事务描述符,以及由目标事务已修改的若干行的主键存储地址,例如主键Key1、Key3、Key4、Key6的存储地址,组成的主键存储地址集合。
进一步地,包括事务描述符和行标识集合的第一映射关系,可以基于如前所述第一步骤生成,或者也可以基于如前所述的第二步骤生成。
在第一映射关系基于如前所述第一步骤生成时,第一映射关系的生成过程可以如图11所示,包括以下步骤:
步骤1102,响应于检测到目标触发事件,获取目标事务的事务描述符;
步骤1104,获取目标事务已修改的若干行的行标识;
步骤1106,将若干行的行标识组成行标识集合;
步骤1108,生成包括事务描述符和行标识集合的第一映射关系。
作为一种实现方式,在步骤1104中,可以获取目标事务已修改的若干行的主键。接着,在步骤1106中,可以将该若行的主键组成主键集合。接着,在步骤1108中,可以生成包括事务描述符和主键集合的第一映射关系。
作为另一种实现方式,在步骤1104中,可以获取目标事务已修改的若干行的主键存储地址。接着,在步骤1106中,可以将该若行的主键存储地址组成主键存储地址集合。接着,在步骤1108中,可以生成包括事务描述符和主键存储地址集合的第一映射关系。
在第一映射关系基于如前所述第二步骤生成时,第一映射关系的生成过程可以具体如图12所示,包括以下步骤:
步骤1202,在目标事务开始执行时,生成包括目标事务的事务描述符和处于空集状态的行标识集合的第一映射关系;
步骤1204,响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的行标识,并将第一行的行标识归入行标识集合。
作为一种实现方式,在步骤1202中,可以在目标事务开始执行时,生成包括目标事务的事务描述符和处于空集状态的主键集合的第一映射关系。接着,在步骤1202中,可以响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的主键,并将第一行的主键归入主键集合。
作为另一种实现方式,在步骤1202中,可以在目标事务开始执行时,生成包括目标事务的事务描述符和处于空集状态的主键存储地址集合的第一映射关系。接着,在步骤1202中,可以响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的主键存储地址,并将第一行的主键存储地址归入主键存储地址集合。
应该理解,在图12对应的实施例中,当检测到目标事务执行的其他更新操作时,可以继续获取该其他更新操作所针对的行的行标识,并将该行标识归入行标识集合。
进一步参看图13,其示出了在预先建立的第一映射关系包括目标事务的事务描述符,以及由目标事务已修改的若干行的行标识组成的行标识集合的情况下,在数据库中查询事务修改内容的方法的一个实施例的流程1300。该方法的执行主体可以为数据库(例如图1中示出的数据库100),或者该数据库中的目标引擎(例如图1中示出的事务引擎)。该方法包括以下步骤:
步骤1302,接收针对目标事务的修改内容的查询请求;
步骤1304,根据查询请求,获取目标事务的事务描述符;
步骤1306,根据事务描述符,在数据库中查找第一映射关系;
步骤1308,根据查找到的第一映射关系包括的行标识集合,获取目标事务已修改的若干行的主键;
步骤1310,对于若干行中的任意行,根据任意行的主键,获取任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为任意行的目标数据;
步骤1312,返回包括若干行各自的目标数据的查询结果。
其中,步骤1302-1306、1310-1312的具体解释,可参考图8对应实施例中的步骤802-806、810-812的相关说明,在此不再赘述。
在步骤1308中,可以根据查找到的第一映射关系包括的行标识集合,获取目标事务已修改的若干行的主键。
例如,当行标识具体为主键,行标识集合为主键集合时,在步骤1308中,可以从该主键集合中获取目标事务已修改的若干行的主键。
再例如,当行标识具体为主键存储地址,行标识集合为主键存储地址集合时,在步骤1308中,可以根据该主键存储地址集合,获取目标事务已修改的若干行的主键。
图13对应的实施例提供的方案,可以支持预先建立包括目标事务的事务描述符和行标识集合的第一映射关系,其中,该行标识集合由目标事务已修改的若干行的行标识组成。在查询目标事务的修改内容时,可以根据该事务描述符查找到第一映射关系,而后可以根据第一映射关系中的行标识集合,获取到该若干行的主键,然后可以根据该若干行中任意行的主键,获取到该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。由此,便可以获得目标事务包含该若干行各自的目标数据的修改内容。无论数据库是否有回滚日志,通过该方案均可以获取到目标事务的修改内容 ,因而该方案能提供具有通用性的事务修改内容获取方法。
在一个实施例中,前文中描述的用于对目标事务的事务描述符和目标事务已修改的若干行的行信息进行关联的多种方法,可以相互结合。
作为示例,若目标事务满足设定条件,例如目标事务已修改的若干行为单行,或者该若干行为单行且该单行经目标事务修改的字段值的数量小于预设数量,等等,则可以表示目标事务的修改内容较少,不会占用太多的存储空间,从而可以将该若干行的行信息添加至该事务描述符内。若目标事务的修改内容不满足该设定条件,则可以建立该事务描述符和该若干行的行标识之间的映射关系,也即如前所述的第一映射关系。
基于此,后续需要查询目标事务的修改内容时,在获得目标事务的事务描述符后,可以先确定该事务描述符是否包含目标事务已修改的若干行的行信息。若确定结果为是,则可以从该事务描述符中获取该若干行各自的行信息作为目标数据。若确定结果为否,则可以根据该事务描述符,在数据库中查找第一映射关系,而后可以根据查找到的第一映射关系示出的该若干行的行标识,获取该若干行的主键,然后对于该若干行中的任意行,可以根据该任意行的主键,获取该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。
进一步参考图14,本说明书提供了一种在数据库中查询事务修改内容的装置的一个实施例,该装置可以应用于数据库(例如图1中示出的数据库100),或者该数据库中的目标引擎(例如图1中示出的事务引擎)。
如图14所示,本实施例的在数据库中查询事务修改内容的装置1400包括:接收单元1401、事务描述符获取单元1402、目标数据获取单元1403和发送单元1404。其中,接收单元1401被配置成接收针对目标事务的修改内容的查询请求;事务描述符获取单元1402被配置成根据查询请求,获取目标事务的事务描述符,其中,事务描述符预先关联目标事务已修改的若干行的行信息,行信息至少包括行标识;目标数据获取单元1403被配置成根据该若干行的行信息,获取该若干行各自的目标数据,目标数据包括其对应的行的主键和经目标事务修改后的若干个字段值;发送单元1404被配置成返回包括该若干行各自的目标数据的查询结果。
在一些实施例中,查询请求可以包括目标事务的事务标识;以及事务描述符获取单元1402可以进一步被配置成:根据该事务标识,获取事务描述符。
在一些实施例中,查询请求可以包括上述事务描述符;以及事务描述符获取单元1402可以进一步被配置成:从查询请求中获取上述事务描述符。
在一些实施例中,数据库可以预先建立有第一映射关系,其用于表征上述事务描述符和上述若干行的行标识之间的映射关系;以及目标数据获取单元1403可以进一步被配置成:根据上述事务描述符,在数据库中查找第一映射关系;根据查找到的第一映射关系示出的上述若干行的行标识,获取上述若干行的主键;对于上述若干行中的任意行,根据该任意行的主键,获取该任意行经目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为该任意行的目标数据。
在一些实施例中,第一映射关系可以具体为以事务描述符为链表头的第一链表,行标识可以具体为主键存储地址;以及目标数据获取单元1403可以进一步被配置成:根据第一链表示出的主键存储地址,获取上述若干行的主键。
在一些实施例中,第一映射关系可以具体包括上述事务描述符和由上述若干行的行标识组成的行标识集合;以及目标数据获取单元1403可以进一步被配置成:根据行标识集合,获取上述若干行的主键。
在一些实施例中,行标识可以具体为主键,行标识集合可以为主键集合;以及目标数据获取单元1403可以进一步被配置成:从主键集合中获取上述若干行的主键。
在一些实施例中,行标识可以具体为主键存储地址,行标识集合可以为主键存储地址集合;以及目标数据获取单元1403可以进一步被配置成:根据主键存储地址集合,获取上述若干行的主键。
在一些实施例中,数据库还可以预先建立有以上述任意行的主键为链表头的第二链表,第二链表可以示出上述任意行若干个修改版本的数据的存储地址;以及目标数据获取单元1403可以进一步被配置成:根据上述任意行的主键,在数据库中查找第二链表;根据查找到的第二链表,获取上述任意行经目标事务修改后的若干个字段值。
在一些实施例中,目标事务可以为未提交事务,第二链表的尾节点可以包括,关联于目标事务的修改版本的数据的存储地址;以及目标数据获取单元1403可以进一步被配置成:根据第二链表的尾节点包括的存储地址,获取上述任意行经上述目标事务修改后的若干个字段值。
在一些实施例中,上述行信息可以位于上述事务描述符内,并且还包括其对应的行经目标事务修改后的若干个字段值,行标识可以具体为主键;以及目标数据获取单元1403可以进一步被配置成:从上述事务描述符中获取上述若干行各自的行信息作为目标数据。
在一些实施例中,第一映射关系由第一生成单元生成,第一生成单元可以被配置成:响应于检测到目标触发事件,获取上述事务描述符;获取上述若干行的行标识;根据上述事务描述符和上述若干行的行标识,生成第一映射关系。其中,第一生成单元位于数据库中,具体地,可以位于上述装置1400中,或者可以位于数据库的其他装置中,在此不做具体限定。
在一些实施例中,数据库的增量数据和除该增量数据以外的基线数据,存放在数据库中的不同位置,目标触发事件可以包括将该增量数据合并到该基线数据的事件。
在一些实施例中,第一生成单元可以进一步被配置成:获取上述若干行的主键存储地址;根据上述事务描述符和上述若干行的主键存储地址,生成以上述事务描述符为链表头的第一链表。
在一些实施例中,第一生成单元可以进一步被配置成:将上述若干行的行标识组成行标识集合;生成包括上述事务描述符和上述行标识集合的第一映射关系。
在一些实施例中,第一映射关系由第二生成单元生成,第二生成单元可以被配置成:在目标事务开始执行时,生成包括上述事务描述符的第一映射关系;响应于检测到目标事务执行的第一更新操作,获取第一更新操作所针对的第一行的行标识,并将第一行的行标识归入第一映射关系。其中,第二生成单元位于数据库中,具体地,可以位于上述装置1400中,或者可以位于数据库的其他装置中,在此不做具体限定。
在一些实施例中,第二生成单元可以进一步被配置成:生成以上述事务描述符为链表头的第一链表;获取第一行的主键存储地址,并将该主键存储地址作为上述事务描述符的值归入第一链表。
进一步地,第二生成单元还可以被配置成:响应于检测到目标事务执行的第二更新操作,获取第二更新操作所针对的第二行的主键存储地址,以及获取第一行的主键;将第一行的主键作为键,将第二行的主键存储地址作为值,组成键值对归入第一链表。
在一些实施例中,第二生成单元可以进一步被配置成:生成包括上述事务描述符和处于空集状态的行标识集合的第一映射关系;将第一行的行标识归入行标识集合。
在图14对应的装置实施例中,各单元的具体处理及其带来的技术效果可参考前文中方法实施例的相关说明,在此不再赘述。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的在数据库中查询事务修改内容的方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现以上各方法实施例分别描述的在数据库中查询事务修改内容的方法。
本说明书实施例还提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的在数据库中查询事务修改内容的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书披露的多个实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书披露的多个实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书披露的多个实施例的具体实施方式而已,并不用于限定本说明书披露的多个实施例的保护范围,凡在本说明书披露的多个实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书披露的多个实施例的保护范围之内。
Claims (22)
1.一种在数据库中查询事务修改内容的方法,包括:
接收针对目标事务的修改内容的查询请求;
根据所述查询请求,获取所述目标事务的事务描述符,其中,所述事务描述符预先关联所述目标事务已修改的若干行的行信息,所述行信息至少包括行标识;
根据所述若干行的行信息,获取所述若干行各自的目标数据,所述目标数据包括其对应的行的主键和经所述目标事务修改后的若干个字段值;
返回包括所述若干行各自的目标数据的查询结果。
2.根据权利要求1所述的方法,其中,所述查询请求包括所述目标事务的事务标识;以及
所述根据所述查询请求,获取所述目标事务的事务描述符,包括:
根据所述事务标识,获取所述事务描述符。
3.根据权利要求1所述的方法,其中,所述查询请求包括所述事务描述符;以及
所述根据所述查询请求,获取所述目标事务的事务描述符,包括:
从所述查询请求中获取所述事务描述符。
4.根据权利要求1-3之一所述的方法,其中,所述数据库预先建立有第一映射关系,其用于表征所述事务描述符和所述若干行的行标识之间的映射关系;以及
所述方法还包括:
根据所述事务描述符,在所述数据库中查找所述第一映射关系;
所述根据所述若干行的行信息,获取所述若干行各自的目标数据,包括:
根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键;
对于所述若干行中的任意行,根据所述任意行的主键,获取所述任意行经所述目标事务修改后的若干个字段值,并将该主键和该若干个字段值作为所述任意行的目标数据。
5.根据权利要求4所述的方法,其中,所述第一映射关系具体为以所述事务描述符为链表头的第一链表,所述行标识具体为主键存储地址;以及
所述根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键,包括:
根据所述第一链表示出的主键存储地址,获取所述若干行的主键。
6.根据权利要求4所述的方法,其中,所述第一映射关系具体包括所述事务描述符和由所述若干行的行标识组成的行标识集合;以及
所述根据查找到的所述第一映射关系示出的所述若干行的行标识,获取所述若干行的主键,包括:
根据所述行标识集合,获取所述若干行的主键。
7.根据权利要求6所述的方法,其中,所述行标识具体为主键,所述行标识集合为主键集合;以及
所述根据所述行标识集合,获取所述若干行的主键,包括:
从所述主键集合中获取所述若干行的主键。
8.根据权利要求6所述的方法,其中,所述行标识具体为主键存储地址,所述行标识集合为主键存储地址集合;以及
所述根据所述行标识集合,获取所述若干行的主键,包括:
根据所述主键存储地址集合,获取所述若干行的主键。
9.根据权利要求4所述的方法,其中,所述数据库还预先建立有以所述任意行的主键为链表头的第二链表,所述第二链表示出所述任意行若干个修改版本的数据的存储地址;以及
所述根据所述任意行的主键,获取所述任意行经所述目标事务修改后的若干个字段值,包括:
根据所述任意行的主键,在所述数据库中查找所述第二链表;
根据查找到的所述第二链表,获取所述任意行经所述目标事务修改后的若干个字段值。
10.根据权利要求9所述的方法,其中,所述目标事务为未提交事务,所述第二链表的尾节点包括,关联于所述目标事务的修改版本的数据的存储地址;以及
所述根据查找到的所述第二链表,获取所述任意行经所述目标事务修改后的若干个字段值,包括:
根据所述第二链表的尾节点包括的存储地址,获取所述任意行经所述目标事务修改后的若干个字段值。
11.根据权利要求1或2所述的方法,其中,所述行信息位于所述事务描述符内,并且还包括其对应的行经所述目标事务修改后的若干个字段值,所述行标识具体为主键;以及
所述根据所述若干行的行信息,获取所述若干行各自的目标数据,包括:
从所述事务描述符中获取所述若干行各自的行信息作为目标数据。
12.根据权利要求4所述的方法,其中,所述第一映射关系通过以下第一步骤生成:
响应于检测到目标触发事件,获取所述事务描述符;
获取所述若干行的行标识;
根据所述事务描述符和所述若干行的行标识,生成第一映射关系。
13.根据权利要求12所述的方法,其中,所述数据库的增量数据和除所述增量数据以外的基线数据,存放在所述数据库中的不同位置,所述目标触发事件包括将所述增量数据合并到所述基线数据的事件。
14.根据权利要求12所述的方法,其中,所述获取所述若干行的行标识,包括:
获取所述若干行的主键存储地址;
所述根据所述事务描述符和所述若干行的行标识,生成第一映射关系,包括:
根据所述事务描述符和所述若干行的主键存储地址,生成以所述事务描述符为链表头的第一链表。
15.根据权利要求12所述的方法,其中,所述根据所述事务描述符和所述若干行各自的行标识,生成第一映射关系,包括:
将所述若干行的行标识组成行标识集合;
生成包括所述事务描述符和所述行标识集合的第一映射关系。
16.根据权利要求4所述的方法,其中,所述第一映射关系通过以下第二步骤生成:
在所述目标事务开始执行时,生成包括所述事务描述符的第一映射关系;
响应于检测到所述目标事务执行的第一更新操作,获取所述第一更新操作所针对的第一行的行标识,并将所述第一行的行标识归入所述第一映射关系。
17.根据权利要求16所述的方法,其中,所述生成包括所述事务描述符的第一映射关系,包括:
生成以所述事务描述符为链表头的第一链表;
所述获取所述第一更新操作所针对的第一行的行标识,并将所述第一行的行标识归入所述第一映射关系,包括:
获取所述第一行的主键存储地址,并将该主键存储地址作为所述事务描述符的值归入所述第一链表。
18.根据权利要求17所述的方法,其中,所述第二步骤还包括:
响应于检测到所述目标事务执行的第二更新操作,获取所述第二更新操作所针对的第二行的主键存储地址,以及获取所述第一行的主键;
将所述第一行的主键作为键,将所述第二行的主键存储地址作为值,组成键值对归入所述第一链表。
19.根据权利要求16所述的方法,其中,所述生成包括所述事务描述符的第一映射关系,包括:
生成包括所述事务描述符和处于空集状态的行标识集合的第一映射关系;
所述将所述第一行的行标识归入所述第一映射关系,包括:
将所述第一行的行标识归入所述行标识集合。
20.一种在数据库中查询事务修改内容的装置,包括:
接收单元,被配置成接收针对目标事务的修改内容的查询请求;
事务描述符获取单元,被配置成根据所述查询请求,获取所述目标事务的事务描述符,其中,所述事务描述符预先关联所述目标事务已修改的若干行的行信息,所述行信息至少包括行标识;
目标数据获取单元,被配置成根据所述若干行的行信息,获取所述若干行各自的目标数据,所述目标数据包括其对应的行的主键和经所述目标事务修改后的若干个字段值;
发送单元,被配置成返回包括所述若干行各自的目标数据的查询结果。
21.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-19中任一项所述的方法。
22.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-19中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049157.8A CN114064664A (zh) | 2022-01-17 | 2022-01-17 | 在数据库中查询事务修改内容的方法及装置 |
PCT/CN2023/070475 WO2023134518A1 (zh) | 2022-01-17 | 2023-01-04 | 在数据库中查询事务修改内容的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049157.8A CN114064664A (zh) | 2022-01-17 | 2022-01-17 | 在数据库中查询事务修改内容的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064664A true CN114064664A (zh) | 2022-02-18 |
Family
ID=80231108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210049157.8A Pending CN114064664A (zh) | 2022-01-17 | 2022-01-17 | 在数据库中查询事务修改内容的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114064664A (zh) |
WO (1) | WO2023134518A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134518A1 (zh) * | 2022-01-17 | 2023-07-20 | 北京奥星贝斯科技有限公司 | 在数据库中查询事务修改内容的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120221528A1 (en) * | 2011-01-14 | 2012-08-30 | Sap Ag | Logging scheme for column-oriented in-memory databases |
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN104572415A (zh) * | 2014-12-23 | 2015-04-29 | 国云科技股份有限公司 | 一种适用于分布式系统的事务日志记录方法 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
CN107577678A (zh) * | 2016-06-30 | 2018-01-12 | 华为技术有限公司 | 处理数据库事务的方法、客户端和服务器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239357B (zh) * | 2013-06-21 | 2019-01-18 | Sap欧洲公司 | 用于数据库事务的并发请求处理 |
CN111522631B (zh) * | 2020-03-23 | 2024-02-06 | 支付宝(杭州)信息技术有限公司 | 分布式事务处理方法、装置、服务器及介质 |
CN114064664A (zh) * | 2022-01-17 | 2022-02-18 | 北京奥星贝斯科技有限公司 | 在数据库中查询事务修改内容的方法及装置 |
-
2022
- 2022-01-17 CN CN202210049157.8A patent/CN114064664A/zh active Pending
-
2023
- 2023-01-04 WO PCT/CN2023/070475 patent/WO2023134518A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120221528A1 (en) * | 2011-01-14 | 2012-08-30 | Sap Ag | Logging scheme for column-oriented in-memory databases |
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN104572415A (zh) * | 2014-12-23 | 2015-04-29 | 国云科技股份有限公司 | 一种适用于分布式系统的事务日志记录方法 |
CN107577678A (zh) * | 2016-06-30 | 2018-01-12 | 华为技术有限公司 | 处理数据库事务的方法、客户端和服务器 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134518A1 (zh) * | 2022-01-17 | 2023-07-20 | 北京奥星贝斯科技有限公司 | 在数据库中查询事务修改内容的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023134518A1 (zh) | 2023-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105608086B (zh) | 分布式数据库系统的事务处理方法及装置 | |
US5960436A (en) | Transaction compaction for replay of transactions from client to server | |
US20180276274A1 (en) | Parallel processing database system with a shared metadata store | |
US20070276833A1 (en) | System and Method for Assignment of Unique Identifiers in a Distributed Environment | |
US7895172B2 (en) | System and method for writing data dependent upon multiple reads in a distributed database | |
US8682859B2 (en) | Transferring records between tables using a change transaction log | |
CN111522631B (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US20090210429A1 (en) | System and method for asynchronous update of indexes in a distributed database | |
US6886016B2 (en) | Method and system for supporting multivalue attributes in a database system | |
US9477772B2 (en) | Storing and retrieving objects on a computer network in a distributed database | |
CN114911830B (zh) | 基于时序数据库的索引缓存方法、装置、设备及存储介质 | |
US20050278395A1 (en) | Remotely identifying software on remote network nodes by discovering attributes of software files and comparing software file attributes to a unique signature from an audit table | |
KR101679050B1 (ko) | 규칙 기반 로그 데이터 그룹화를 이용한 개인 맞춤형 로그 분석 시스템 및 그 방법 | |
CN115145943B (zh) | 多数据源元数据快速比对方法、系统、设备和存储介质 | |
CN116383227B (zh) | 一种分布式缓存和数据存储一致性处理系统及方法 | |
US20110113052A1 (en) | Query result iteration for multiple queries | |
CN114064664A (zh) | 在数据库中查询事务修改内容的方法及装置 | |
CN111752945A (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和系统 | |
JP2002169718A (ja) | 持続的データ記憶技術 | |
US20120290536A1 (en) | System for improved record consistency and availability | |
CN116010441A (zh) | 数据的查询方法、装置及存储介质 | |
CN111339170A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
US20210406245A1 (en) | Rollback-Free Referential Integrity Update Processing | |
CN114691307A (zh) | 事务处理方法及计算机系统 | |
CN112860740B (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 |