一种事务索引集合的生成方法及系统的制作方法
【技术领域】
[0001]本发明属于计算机领域,尤其涉及一种事务索引集合的生成方法及系统。
【背景技术】
[0002]数据库服务器通常通过网络对外提供服务,客户端应用程序通过向数据库服务器发送操作指令,与数据库服务器建立网络会话,并通过这个会话和数据库服务端进行交互,得到数据库服务器提供的各种服务。在客户端通过数据库服务器操作数据库的过程中,可能会对数据库进行误操作,比如数据的误删除、误修改等,这些误操作的发生往往会给用户带来巨大的损失,尤其是在金融业。
[0003]当发现客户端前面对数据库进行了误操作时,需要快速、准确获取相关某个或者某几个事务(事务是数据库服务器定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。)的数据库操作序列,进而根据该数据库操作序列对数据库进行回滚等操作,以使数据库恢复到正确的状态。
[0004]在现有技术中,当发现客户端前面对数据库进行了误操作时,是通过遍历数据库服务器与客户端之间的网络报文集合或者数据库中的事务日志来获取相关某个或者某几个事务的数据库操作序列的,由于各事务的数据库操作序列在网络报文集合或者事务日志中没有规律的存储规则,获取相关数据库操作序列的过程需要花费大量的时间,获取速度慢,无法满足金融业等对数据库恢复速度的要求。
【发明内容】
[0005]本发明实施例提供一种事务索引的生成方法,将属于同一事务的数据库操作记录记录在与该事务的事务标识对应的子事务集合中,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0006]本发明实施例是这样实现的,一种事务索引集合的生成方法,所述方法包括如下步骤:
[0007]顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识;
[0008]根据所述连接标识集合、连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及所述连接标识集合进行更新;
[0009]所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与所述连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识;
[0010]所述事务索引集合为事务标识与子事务集合的映射关系集合,所述事务标识唯一的标识一个事务,至少包括连接标识和唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。
[0011]本发明实施例还提供一种事务索引集合的生成系统,所述系统包括:
[0012]信息获取单元,用于顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识;以及
[0013]更新单元,用于根据所述连接标识集合、连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及所述连接标识集合进行更新;
[0014]所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与所述连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识;
[0015]所述事务索引集合为事务标识与子事务集合的映射关系集合,所述事务标识唯一的标识一个事务,至少包括连接标识和唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。
[0016]本发明实施例通过构建一个连接标识集合,并根据连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行动态更新,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引,当发现客户端前面对数据库进行了误操作时,可以通过该事务索引集合快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
【附图说明】
[0017]图1是是本发明实施例提供的一种事务索引集合生成的方法的流程图;
[0018]图2是本发明实施例提供的一种对事务索引集合及连接标识集合进行更新的流程图;
[0019]图3是本发明实施例提供的另一种对事务索引集合及连接标识集合进行更新的流程图;
[0020]图4是本发明实施例提供的一种事务索引集合的生成系统的结构示意图;
[0021]图5是本发明实施例提供的一种更新单元的结构示意图;
[0022]图6是本发明实施例提供的另一种更新单元的结构示意图。
【具体实施方式】
[0023]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0024]本发明实施例根据构建的连接标识集合,对事务索引集合进行更新,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引,当发现客户端前面对数据库进行了误操作时,可以通过该事务索引集合快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0025]图1示出了本发明实施例提供的一种事务索引集合生成的方法的流程,详述如下:
[0026]在步骤SlOl中,顺序读取数据库操作记录集合。
[0027]在本发明实施例中,数据库操作记录集合(OperSet)记录针对数据库的所有操作历史信息,可以通过分析数据库中的事务日志获得,也可以通过分析数据库服务器与客户端之间交换的所有网络报文获得。
[0028]在本发明实施例中,数据库操作记录至少包括操作类型标识、连接标识及操作信息。
[0029]在本发明实施例中,操作类型标识表明对数据库进行的是何种类型的操作,如开始(Begin)操作、插入(Insert)操作、更新(Update)操作、删除(Delete)操作、提交(Commit)操作和回滚(RollBack)操作;连接标识用于唯一的标识客户端与服务器之间的连接,可以由服务器的网络协议地址(Server-1P)Ji^D (Server-Port)与客户端的网络协议地址(Client-1P)、端口(Client-Port)组合而成;操作信息包括表名、前镜像或者后镜像、取值条件等。
[0030]作为本发明一个实施例,所述数据库操作记录集合记录操作类型为开始(Begin)操作的数据库操作记录,此时,事务以开始(Begin)操作开始,提交(Commit)操作和回滚(RollBack)操作结束。
[0031]作为本发明另一个实施例,所述数据库操作记录集合不记录操作类型为开始(Begin)操作的数据库操作记录。
[0032]在步骤S102中,判断数据库操作记录集合中是否存在可以读取的数据库操作记录,当判断结果为是,则进入步骤S103 ;当判断结果为否,则流程结束。
[0033]在步骤S103中,获取数据库操作记录的连接标识、操作类型标识和数据库操作记录的唯一标识。
[0034]在步骤S104中,根据所述连接标识集合、连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及连接标识集合进行更新。
[0035]在本发明实施例中,所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识。
[0036]在本发明实施例中,事务结束时对应的数据库操作记录的操作类型标识为提交操作或者回滚操作。
[0037]在本发明实施例中,唯一标识用于唯一的标识一条数据库操作记录,可以是数据库操作记录的时间标识、数据库操作记录的顺序编号或者随机唯一编号中的一个或其组入口 ο
[0038]在本发明实施例中,时间标识可以是数据库操作记录实际发生的时间,也可以是数据库操作记录被读取的时间,可以理解,为了达到时间标识唯一标识一条数据库操作记录的目的,该时间标识的可以精确到微秒甚至更小的单位,此时,由于最终生成的事务索引集合的事务标识中包括该数据库操作记录的时间标识,可以通过该时间标识准确的定位事务索引集合中各事务的发生时间;顺序编号可以通过构造一个计数器(Counter),计数器的初始计数值为0,每读取一条数据库操作记录计数值加1,例如:顺序获取到的三条数据库操作记录,分别为Begin操作记录、Insert操作记录和Update操作记录,则Begin操作记录对应的序号Counter为1,Insert操作记录对应的序号Counter为2,Update操作记录对应的序号Counter为3 ;随机唯一编号可以是数字、字母或者数字与字母的组合,只要保证各唯一编号不重复即可。
[0039]在本发明实施例中,所述事务索引集合为事务标识与子事务集合的映射关系集合,所述事务标识唯一的标识一个事务,至少包括连接标识和数据库操作记录的唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。
[0040]在本发明实施中,存储地址为指向文件中数据库操作记录的地址信息,可以是文件偏移地址(FileOffset);可以理解,当数据库操作记录存储于不同的文件中时,为了区别不同的存储文件,还可以是文件标识(FileID)和文件偏移地址(FileOffset)的组合。
[0041]在本
发明实施例中,子事务集合中同一事务下的数据库操作记录的存储地址记录顺序为数据库操作发生的顺序或者数据库操作记录被读取的顺序。
[0042]在本发明实施例中,当数据库操作记录为某一个事务的第一条数据库操作记录时,在事务索引集合中添加当前事务的事务标识;当数据库操作记录为某一个事务的非第一条数据库操作记录时,在事务索引集合中相应的子事务集合中添加当前数据库操作记录的存储地址。
[0043]在本发明实施例中,当数据库操作记录为某一个连接标识对应的第一条数据库操作记录时,在连接标识集合中添加连接标识及对应的唯一标识;当数据库操作记录非某一个连接标识对应的第一条数据库操作记录,且该数据库操作记录为某一个事务的第一条或者最后一条数据库操作记录时,将连接标识集合中所述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识。
[0044]本发明实施例通过构建一个连接标识集合,并根据连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行动态更新,实现事务标识与该事务标识对应的数据库操作记录的存储地址索引的建立,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0045]作为本发明一个实施例,在步骤SlOl前还包括:
[0046]构建连接标识集合和事务索引集合的步骤。
[0047]图2示出了本发明实施例提供的一种对事务索引集合及连接标识集合进行更新的流程,详述如下:
[0048]当数据库操作记录集合记录操作类型为开始(Begin)操作的数据库操作记录时,根据所述连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行更新的步骤具体为:
[0049]在步骤S201中,判断获取的操作类型标识是否为开始操作,当判断结果为是,表示一个新的事务开始,则进入步骤S202 ;当判断结果为否,则进入步骤S206。
[0050]在步骤S202中,在事务索引集合中添加一个新的事务标识,进入步骤S203。
[0051]在本发明实施例中,该新的事务标识至少包括上述连接标识和唯一标识,成为事务索引集合的一个新的实例对象的事务标识部分。
[0052]作为本发明一个实施例,在事务索引集合中添加一个新的事务标识的同时,在该事务标识对应的子事务集合中写入当前数据库操作记录的存储地址。本领域的技术人员可以理解,当所述操作类型标识为开始操作,仅在事务索引集合中添加一个新的事务标识,而不在该事务标识对应的子事务集合中写入所述数据库操作记录或者数据库操作记录的位置信息,同样可以实现本发明的目的。
[0053]在步骤S203中,判断连接标识集合中是否存在获取的连接标识,当判断结果为是,表示在该数据库操作记录不是与该连接标识相关的第一条数据库操作记录,则进入步骤S204 ;当判断结果为否,表示该数据库操作记录是与该连接标识相关的第一条数据库操作记录,则进入步骤S205。
[0054]在步骤S204中,将所述连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识。
[0055]在步骤S205中,在连接标识集合中对应的添加上述连接标识及当前数据库操作记录的唯一标识。
[0056]在步骤S206中,判断连接标识集合中是否存在上述连接标识,当判断结果为是,表示在该数据库操作记录之前,已经出现与上述连接标识相关的数据库操作记录,则进入步骤S207,当判断结果为否,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,即与该数据库操作记录相关的事务尚未开始,该数据库操作记录为错误的操作记录,则进入步骤SlOl。
[0057]在步骤S207中,判断事务索引集合中是否存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识,当判断结果为是,表示该数据库操作记录相关的事务已经开始,但尚未结束,则进入步骤S208 ;当判断结果为否,表示该数据库操作记录对应的事务尚未开始,该数据库操作记录为错误的操作记录,则进入步骤S101。
[0058]在步骤S208中,判断上述操作类型标识是否为提交操作或者回滚操作,当判断结果为是,表示该数据库操作记录对应的事务结束,则进入步骤S209 ;当判断结果为否,表示该数据库操作记录对应的事务尚未结束,则进入步骤S210。
[0059]在步骤S209中,将数据库操作记录的存储地址写入事务索引集合中与上述事务标识对应的子事务集合;同时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识。
[0060]在步骤S210中,将数据库操作记录的存储位置信息写入事务索引集合中与上述事务标识对应的子事务集合。
[0061]在上述实施例中,由于当获取的操作类型标识为开始操作、提交操作或者回滚操作时,对连接标识集合进行添加或者更新,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,且写入事务索引集合中的事务标识为操作类型标识包括开始操作的数据库操作记录的连接标识和唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,当数据库操作记录的操作类型标识为开始操作时,将对应的事务标识写入事务索引集合,当数据库操作记录的操作类型标识为非开始操作时,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索引集合中存在,判别出读取的数据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0062]图3示出了本发明实施例提供的另一种对事务索引集合及连接标识集合进行更新的流程,详述如下:
[0063]当所述数据库操作记录集合不记录操作类型为开始(Begin)操作的数据库操作记录时,根据所述连接标识集合、连接标识、操作类型标识和唯一标识对所述事务索引集合及连接标识集合进行更新的步骤具体为:
[0064]在步骤S301中,判断获取的操作类型标识是否为提交操作或者回滚操作,当判断结果为是,则进入步骤S302 ;当判断结果为否,则进入步骤S305。
[0065]在步骤S302中,判断连接标识集合中是否存在获取的连接标识,当判断结果为是,表示在该数据库操作记录之前,已经出现与上述连接标识相关的数据库操作记录,则进入步骤S303 ;当判断结果为否,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,该数据库操作记录为错误的操作记录,则进入步骤SlOl。
[0066]在步骤S303中,判断事务索引集合中是否存在包括上述连接标识及该连接标识在所述连接标识集合中对应的唯一标识的事务标识,若判断结果为是,表示与该数据库操作记录相关的事务已经开始,但尚未结束,则进入步骤S304,若判断结果为否,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,该连接标识应的事务尚未开始,该数据库操作记录为错误的操作记录,则进入步骤S101。
[0067]在步骤S304中,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识。
[0068]在步骤S305中,判断连接标识集合中是否存在获取的连接标识,若判断结果为是,表示在该数据库操作记录之前,已经出现与上述连接标识相关的数据库操作记录,则进入步骤S306 ;若判断结果为否,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,该数据库操作记录为该连接标识下的首个数据库操作记录,则进入步骤S309。
[0069]在步骤S306中,判断事务索引集合中是否存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识,若判断结果为是,表示与该数据库操作记录相关的事务已经开始,但尚未结束,则进入步骤S307 ;若判断结果为否,表示该数据库操作记录为相关事务的第一条数据库操作记录,则进入步骤S308。
[0070]在步骤S307中,将数据库操作记录的存储地址写入事务索引集合中上述事务标识对应的子事务集合。
[0071]在步骤S308中,将数据库操作记录的存储地址写入事务索引集合中上述事务标识对应的子事务集合,同时,将连接标识集合中与该连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识。
[0072]在步骤S309中,在事务索引集合写入与上述数据库操作记录对应的事务标识及存储地址,同时,在连接标识集合中写入上述连接标识及对应的当前数据库操作记录的唯一标识。
[0073]在本发明实施例中,当获取的事务类型标识为回滚操作或者提交操作,且在连接标识集合中已经存在获取的连接标识时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识;当获取的事务类型标识不为回滚操作或者提交操作,且事务索引集合
中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在连接标识集合中写入上述连接标识及对应的唯一标识;当连接标识集合中不存在获取的连接标识,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,在连接标识集合中写入上述连接标识及对应的唯一标识,通过上述操作,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,通过判断操作类型标识不为提交操作或者回滚操作,连接标识集合中存在获取的连接标识,且事务索引集合中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在事务索引集合写入与上述数据库操作记录对应的事务标识,以保证写入事务索引集合中的事务标识为某一个事务第一条数据库操作记录的连接标识和唯一标识,进一步的,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索引集合中存在,判别出读取的数据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0074]图4示出了本发明实施例提供的一种事务索引集合的生成系统的结构,为了便于说明,仅示出与本发明实施例相关的部分。
[0075]事务索引集合的生成系统包括信息获取单元100以及更新单元200。
[0076]信息获取单元100,用于顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识。
[0077]在本发明实施例中,数据库操作记录集合(OperSet)记录针对数据库的所有操作历史信息,可以通过分析数据库中的事务日志获得,也可以通过分析数据库服务器与客户端之间交换的所有网络报文获得。
[0078]在本发明实施例中,数据库操作记录至少包括操作类型标识、连接标识及操作信息。
[0079]在本发明实施例中,操作类型标识表明对数据库进行的是何种类型的操作,如开始(Begin)操作、插入(Insert)操作、更新(Update)操作、删除(Delete)操作、提交(Commit)操作和回滚(RollBack)操作;连接标识用于唯一的标识客户端与服务器之间的连接,可以由服务器的网络协议地址(Server-1P)Ji^D (Server-Port)与客户端的网络协议地址(Client-1P)、端口(Client-Port)组合而成;操作信息包括表名、前镜像或者后镜像、取值条件等。
[0080]作为本发明一个实施例,所述数据库操作记录集合记录操作类型为开始(Begin)操作的数据库操作记录,此时,事务以开始(Begin)操作开始,提交(Commit)操作和回滚(RollBack)操作结束。
[0081]作为本发明另一个实施例,所述数据库操作记录集合不记录操作类型为开始(Begin)操作的数据库操作记录。
[0082]在本发明实施例中,所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识。
[0083]在本发明实施例中,事务结束时对应的数据库操作记录的操作类型标识为提交操作或者回滚操作。
[0084]在本发明实施例中,唯一标识用于唯一的标识一条数据库操作记录,可以是数据库操作记录的时间标识、数据库操作记录的顺序编号或者随机唯一编号中的一个或其组入口 ο
[0085]在本发明实施例中,时间标识可以是数据库操作记录实际发生的时间,也可以是数据库操作记录被读取的时间,此时,由于最终生成的事务索引集合的事务标识中即包括该数据库操作记录的时间标识,可以通过该时间标识准确的定位事务索引集合中各事务的发生时间;顺序编号可以通过构造一个计数器(Counter),计数器的初始计数值为0,每读取一条数据库操作记录计数值加1,例如:顺序获取到的三条数据库操作记录,分别为Begin操作记录、Insert操作记录和Update操作记录,则Begin操作记录对应的序号Counter为1,Insert操作记录对应的序号Counter为2,Update操作记录对应的序号Counter为3 ;随机唯一编号可以是数字、字母或者数字与字母的组合,只要保证各唯一编号不重复即可。
[0086]在本发明实施例中,所述事务索引集合为事务标识与子事务集合的映射关系集合,初始集合为空集合,所述事务标识唯一的标识一个事务,至少包括连接标识和数据库操作记录的唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。
[0087]在本发明实施中,存储地址为指向文件中数据库操作记录的地址信息,可以是文件偏移地址(FileOffset);可以理解,当数据库操作记录存储于不同的文件中时,为了区别不同的存储文件,还可以是文件标识(FileID)和文件偏移地址(FileOffset)的组合。
[0088]在本发明实施例中,子事务集合中同一事务下的数据库操作记录的存储地址记录顺序为数据库操作发生的顺序或者数据库操作记录被读取的顺序。
[0089]更新单元200,用于根据所述连接标识集合、连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及所述连接标识集合进行更新;
[0090]在本发明实施例中,当数据库操作记录为某一个事务的第一条数据库操作记录时,在事务索引集合中添加当前事务的事务标识;当数据库操作记录为某一个事务的非第一条数据库操作记录时,在事务索引集合中相应的子事务集合中添加当前数据库操作记录的存储地址。
[0091]在本发明实施例中,当数据库操作记录为某一个连接标识对应的第一条数据库操作记录时,在连接标识集合中添加连接标识及对应的唯一标识;当数据库操作记录非某一个连接标识对应的第一条数据库操作记录,且该数据库操作记录为某一个事务的第一条或者最后一条数据库操作记录时,将连接标识集合中所述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识。
[0092]本发明实施例通过构建一个连接标识集合,并根据连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行动态更新,实现事务标识与该事务标识对应的数据库操作记录的存储地址索引的建立,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0093]作为本发明一个实施例,事务索引集合的生成系统还包括初始化单元,用于构建连接标识集合和事务索引集合。
[0094]图5示出了本发明实施例提供的一种更新单元的结构,为了便于说明,仅示出与本发明实施例相关的部分。
[0095]当数据库操作记录集合记录操作类型为开始操作的数据库操作记录时,所述更新单元200包括:
[0096]事务标识添加模块211,用于当所述操作类型标识为开始操作时,在事务索引集合中添加一个新的事务标识;
[0097]开始操作更新模块212,用于当所述操作类型标识为开始操作,且所述连接标识集合中存在所述连接标识时,将所述连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识;
[0098]开始操作添加模块213,用于当所述操作类型标识为开始操作,且所述连接标识集合中不存在所述连接标识时,在连接标识集合中对应的添加上述连接标识及当前数据库操作记录的唯一标识;
[0099]第一提交、回滚操作更新模块214,用于当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索引集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中与上述事务标识对应的子事务集合,同时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识;
[0100]第一其他操作写入模块215,用于当所述操作类型标识不为开始操作、提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索引集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储位置信息写入事务索引集合中与上述事务标识对应的子事务集合。
[0101]在上述实施例中,由于当获取的操作类型标识为开始操作、提交操作或者回滚操作时,对连接标识集合进行添加或者更新,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,且写入事务索引集合中的事务标识为操作类型标识包括开始操作的数据库操作记录的连接标识和唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,当数据库操作记录的操作类型标识为开始操作时,将对应的事务标识写入事务索引集合,当数据库操作记录的操作类型标识为非开始操作时,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索引集合中存在,判别出读取的数
据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0102]图6示出了本发明实施例提供的另一种更新单元的结构,为了便于说明,仅示出与本发明实施例相关的部分。
[0103]当数据库操作记录集合不记录操作类型为开始操作的数据库操作记录时,所述更新单元200包括:
[0104]第二提交、回滚操作更新模块221,用于当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,且事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识;
[0105]第二其他操作写入模块222,用于当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合;
[0106]其他操作写入、更新模块223,用于当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中不存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识;
[0107]第三其他操作写入模块224,用于当所述操作类型标识不为提交操作或者回滚操作,且所述连接标识集合中不存在所述连接标识时,在事务索引集合写入与所述数据库操作记录对应的事务标识及存储地址,同时,在连接标识集合中写入所述连接标识及对应的当前数据库操作记录的唯一标识。
[0108]在本发明实施例中,当获取的事务类型标识为回滚操作或者提交操作,且在连接标识集合中已经存在获取的连接标识时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识;当获取的事务类型标识不为回滚操作或者提交操作,且事务索引集合中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在连接标识集合中写入上述连接标识及对应的唯一标识;当连接标识集合中不存在获取的连接标识,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,在连接标识集合中写入上述连接标识及对应的唯一标识,通过上述操作,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,通过判断操作类型标识不为提交操作或者回滚操作,连接标识集合中存在获取的连接标识,且事务索引集合中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在事务索引集合写入与上述数据库操作记录对应的事务标识,以保证写入事务索引集合中的事务标识为某一个事务第一条数据库操作记录的连接标识和唯一标识,进一步的,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索引集合中存在,判别出读取的数据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0109]本发明实施例通过构建一个连接标识集合,并根据连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行动态更新,实现事务标识与该事务标识对应的数据库操作记录的存储地址索引的建立,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0110]当数据库操作记录集合记录操作类型为开始(Begin)操作的数据库操作记录时,由于当获取的操作类型标识为开始操作、提交操作或者回滚操作时,对连接标识集合进行添加或者更新,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,且写入事务索引集合中的事务标识为操作类型标识包括开始操作的数据库操作记录的连接标识和唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,当数据库操作记录的操作类型标识为开始操作时,将对应的事务标识写入事务索引集合,当数据库操作记录的操作类型标识为非开始操作时,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索弓I集合中存在,判别出读取的数据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。
[0111]当所述数据库操作记录集合不记录操作类型为开始(Begin)操作的数据库操作记录时,当获取的事务类型标识为回滚操作或者提交操作,且在连接标识集合中已经存在获取的连接标识时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识;当获取的事务类型标识不为回滚操作或者提交操作,且事务索引集合中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在连接标识集合中写入上述连接标识及对应的唯一标识;当连接标识集合中不存在获取的连接标识,表示在该数据库操作记录之前,尚未出现与上述连接标识相关的数据库操作记录,在连接标识集合中写入上述连接标识及对应的唯一标识,通过上述操作,以保证连接标识集合记录已经开始了的事务的连接标识和与该连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识,同时,由于同一个连接标识、同一个时间点只允许存在一个事务,通过判断操作类型标识不为提交操作或者回滚操作,连接标识集合中存在获取的连接标识,且事务索引集合中不存在包括上述连接标识及上述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,在事务索引集合写入与上述数据库操作记录对应的事务标识,以保证写入事务索引集合中的事务标识为某一个事务第一条数据库操作记录的连接标识和唯一标识,进一步的,通过查找连接标识中存在的对应的连接标识与唯一标识是否在事务索引集合中存在,判别出读取的数据库操作记录是否为已经开始但尚未结束的事务相关的数据库操作记录,从而将已经开始但尚未结束的事务相关的数据库操作记录的存储地址写入该事务的事务标识对应的子事务集合中,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,进而建立事务标识与该事务相关数据库操作记录的存储地址的索引,当发现客户端前面对数据库进行了误操作时,可以快速获取相关事务的数据库操作序列,以满足金融业等对数据库恢复速度的要求。需要说明的是:上述实施例提供的事务索引生成系统仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将事务索引生成系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务索引生成系统与事务索引生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0112]本领域普通技术人员可以理解,实现上述实施例方法中的全部或者部分步骤是可以通过程序来指令相关的硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,不失一般性,计算机可读取存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM, EEPR0M、闪存或其他固态存储介质,CD-ROM、DVD或其他光学存储介质、磁带盒、磁带、磁盘或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
[0113]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0114]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本
发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种事务索引集合的生成方法,其特征在于,所述方法包括如下步骤: 顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识; 根据所述连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及连接标识集合进行更新; 所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与所述连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识; 所述事务索引集合为事务标识与子事务集合的映射关系集合,所述事务标识唯一的标识一个事务,至少包括连接标识和唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。2.如权利要求1所述的事务索引集合的生成方法,其特征在于,在所述顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识的步骤之前,还包括: 构建连接标识集合和事务索引集合。3.如权利要求1所述的事务索引集合的生成方法,其特征在于,所述唯一标识为数据库操作记录的时间标识、数据库操作记录的顺序编号或者随机唯一编号中的一个或其组入口 ο4.如权利要求1所述的事务索引集合的生成方法,其特征在于,当数据库操作记录集合记录操作类型为开始操作的数据库操作记录时,根据所述连接标识集合、连接标识、操作类型标识和唯一标识对所述事务索引集合及所述连接标识集合进行更新的步骤具体为: 当所述操作类型标识为开始操作时,在事务索引集合中添加一个新的事务标识; 当所述操作类型标识为开始操作,且所述连接标识集合中存在所述连接标识时,将所述连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识; 当所述操作类型标识为开始操作,且所述连接标识集合中不存在所述连接标识时,在连接标识集合中对应的添加上述连接标识及当前数据库操作记录的唯一标识; 当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索引集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中与上述事务标识对应的子事务集合,同时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识; 当所述操作类型标识不为开始操作、提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索弓I集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储位置信息写入事务索引集合中与上述事务标识对应的子事务集合。5.如权利要求1所述的事务索引集合的生成方法,其特征在于,当数据库操作记录集合不记录操作类型为开始操作的数据库操作记录时,根据所述连接标识集合、连接标识、操作类型标识和唯一标识对所述事务索引集合及所述连接标识集合进行更新的步骤具体为: 当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,且事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识; 当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合; 当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中不存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识; 当所述操作类型标识不为提交操作或者回滚操作,且所述连接标识集合中不存在所述连接标识时,在事务索引集合写入与所述数据库操作记录对应的事务标识及存储地址,同时,在连接标识集合中写入所述连接标识及对应的当前数据库操作记录的唯一标识。6.一种事务索引集合的生成系统,其特征在于,所述系统包括: 信息获取单元,用于顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识;以及 更新单元,用于根据所述连接标识集合、连接标识、操作类型标识和唯一标识对预先构建的事务索引集合及所述连接标识集合进行更新; 所述连接标识集合为连接标识与唯一标识的映射关系集合,记录已经开始了的事务的连接标识和与所述连接标识对应的事务开始或者结束时的数据库操作记录的唯一标识;所述事务索引集合为事务标识与子事务集合的映射关系集合,所述事务标识唯一的标识一个事务,至少包括连接标识和唯一标识,所述子事务集合顺序的记录同一事务下的数据库操作记录的存储地址。7.如权利要求6所述的事务索引集合的生成系统,其特征在于,所述系统还包括: 初始化单元,用于构建连接标识集合和事务索引集合。8.如权利要求6所述的事务索引集合的生成系统,其特征在于,所述唯一标识为数据库操作记录的时间标识、数据库操作记录的顺序编号或者随机唯一编号中的一个或其组入口 ο9.如权利要求6所述的事务索引集合的生成系统,其特征在于,当数据库操作记录集合记录操作类型为开始操作的数据库操作记录时,所述更新单元包括: 事务标识添加模块,用于当所述操作类型标识为开始操作时,在事务索引集合中添加一个新的事务标识; 开始操作更新模块,用于当所述操作类型标识为开始操作,且所述连接标识集合中存在所述连接标识时,将所述连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识; 开始操作添加模块,用于当所述操作类型标识为开始操作,且所述连接标识集合中不存在所述连接标识时,在连接标识集合中对应的添加上述连接标识及当前数据库操作记录的唯一标识; 第一提交、回滚操作更新模块,用于当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索弓I集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中与上述事务标识对应的子事务集合,同时,将连接标识集合中与上述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识; 第一其他操作写入模块,用于当所述操作类型标识不为开始操作、提交操作或者回滚操作,连接标识集合中存在所述连接标识,事务索引集合中存在包括上述连接标识及上述连接标识在连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储位置信息写入事务索引集合中与上述事务标识对应的子事务集合。10.如权利要求6所述的事务索引集合的生成系统,其特征在于,当数据库操作记录集合不记录操作类型为开始操作的数据库操作记录时,所述更新单元包括: 第二提交、回滚操作更新模块,用于当所述操作类型标识为提交操作或者回滚操作,连接标识集合中存在所述连接标识,且事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录唯一标识; 第二其他操作写入模块,用于当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合; 其他操作写入、更新模块,用于当所述操作类型标识不为提交操作或者回滚操作,所述连接标识集合中存在所述连接标识,且所述事务索引集合中不存在包括所述连接标识及所述连接标识在所述连接标识集合中对应的唯一标识的事务标识时,将数据库操作记录的存储地址写入事务索引集合中所述事务标识对应的子事务集合,同时,将连接标识集合中与所述连接标识对应的唯一标识更新为当前数据库操作记录的唯一标识; 第三其他操作写入模块,用于当所述操作类型标识不为提交操作或者回滚操作,且所述连接标识集合中不存在所述连接标识时,在事务索引集合写入与所述数据库操作记录对应的事务标识及存储地址,同时,在连接标识集合中写入所述连接标识及对应的当前数据库操作记录的唯一标识。
【专利摘要】本发明适用于计算机领域,提供了一种事务索引集合的生成方法及系统,所述方法包括如下步骤:构建连接标识集合和事务索引集合;顺序读取数据库操作记录集合,获取数据库操作记录的连接标识、操作类型标识和唯一标识;根据所述连接标识集合、连接标识、操作类型标识和唯一标识对所述事务索引集合及所述连接标识集合进行更新。本发明实施例通过构建一个连接标识集合,并根据连接标识集合、连接标识、操作类型标识和唯一标识对事务索引集合及连接标识集合进行动态更新,实现同一个事务下的数据库操作记录的存储地址对应的记录在同一事务标识所对应的子事务集合,从而建立事务标识与该事务相关数据库操作记录的索引。
【IPC分类】G06F17/30
【公开号】CN104881474
【申请号】CN201510290998
【发明人】金清德
【申请人】深圳市乾华数据科技有限公司
【公开日】2015年9月2日
【申请日】2015年5月30日
转载请注明原文地址:https://www.famiwei.com/read-8138601.html