专利名称:实现配置事务的方法及设备的利记博彩app
技术领域:
本发明涉及操作与维护技术,尤其涉及实现配置事务的方法及设备。
背景技术:
为了简化通讯设备的运行维护复杂度,并同时支持不同的应用场景和业 务发放,通讯设备的数据配置都要求能够支持配置事务机制。配置事务是客 户端发起的一系列配置操作的集合,该集合包括了为设备配置的数据,完成 配置事务后,便可将完成的配置事务应用到通讯设备生效。 一个配置事务由
一条以上操作命令组成,每条操作命令包括对配置对象的增(Create)、删 (Delete)或改(Set)。运行数据库中保存当前通讯设备生效的配置事务的 数据, 一个配置事务内包含一个以上的数据库表。
配置事务具有以下特点配置事务包括的所有操作命令要么全部执行成 功,要么全部不执行,例如,在执行配置事务的操作命令的过程中,如果某 一条操作命令执行失败,则该配置事务的执行全部失败,配置事务的这种特 性称为原子性;执行配置事务时,并行的各个配置事务是相互隔离的, 一个 配置事务内的操作及操作的数据不被其他配置事务感知,不受其他配置事务 的影响,配置事务的这种特性称为独立性。
参见图1,为现有技术中实现配置事务的设备结构示意图,该设备包括 配置(CFG, Configuration)模块、运行数据库和緩存数据结构。CFG模块 用于接收客户端输入的配置事务的操作命令,控制运行数据库逐条执行操作 命令,所述操作命令为增/删/改(Create/Delete/Set)配置事务的数据库表中的 数据。配置事务的所有操作命令执行完毕后,CFG模块控制运行数据库将完 成的配置事务提交给应用设备,CFG模块控制应用设备在通讯设备上应用配
置事务。
在通讯设备中实现配置事务还通常采用基于逆操作的补偿事务机制。操
作命令包括CREATE、 SET和DELETE3种,下面对这3种操作命令的逆操 作进行举例-说明。
1.CREATE的逆操作
以A对象的CREATE为例,假设A对象创建的属性值为al、 a2,表示 为[A, CREATE, al, a2 ]。
则CREATE的逆操作为删除A对象创建的属性值al 、 a2,恢复到A对 象的原始状态,表示为[A, DELETE]。
2.SET的逆才喿作
以A对象的SET为例,假设A对象的原始属性值为al、 a2,将其修 改为新的属性值,a3、 a4,表示为[A, SET, a3, a4]。
则SET的逆操作为将A对象的属性值a3、 a4 ,恢复到A对象的原始 属性值,al、 a2,表示为[A, SET, al, a2]。
3.DELETE的逆才喿作
以A对象的DELETE为例,嘴£设A对象删除之前的属性值为al, a2, 将其删除,表示为[A, DELETE]。
则DELETE的逆操作为创建A对象的属性值al, a2,以恢复到A对象 的原始状态,表示为[A, CREATE, al,a2]。
具体地,基于逆操作的补偿事务机制包括CFG模块控制运行数据库 从配置事务的第一条操作命令开始执行,如果某一条操作命令执行失败,则 需要将该配置事务的所有操作命令都进行回退操作,使运行数据库的配置事 务恢复到之前的原有状态,所述回退操作也就是逆操作。
所述基于逆操作的补偿事务机制的实现过程为CFG模块控制运行数 据库逐条执行操作命令的同时,还控制緩存数据结构保存相应的操作命令以 及逆操作列表,所述逆操作列表中包括了各条操作命令执行前运行数据库中 保存的数据和执行后运行数据库中保存的数据之间的对应关系。进行回退操
作时,根据逆操作列表中保存的对应关系,CFG模块控制运行数据库倒序逐
条执行与緩存数据结构中保存的操作命令相逆的操作,将运行数据库中的数 据恢复到原有状态。所述倒序,也就是从缓存数据结构保存的逆操作列表中
最后一条的数据对应关系指向第 一条数据对应关系的顺序。CFG模块控制运 行数据库将配置事务提交给应用设备后,将控制緩存数据结构删除保存的逆 操作列表以及相应的操作命令。
下面举例对回退操作进行说明。
假设配置事务为cmdl,包括以下的操作命令
1. A对象创建属性值al 、 a2,该操作命令表示为[A, CREATE, al, a2]。 CFG模块控制运行数据库执行上述操作命令时,在运行数据库中A对
象创建属性值al、 a2,同时,CFG模块控制逆操作列表中保存操作命令、 原始数据以及执行操作命令后的数据之间的对应关系,所述操作命令为 CREATE,所述原始数据为空,所述执行操作命令后的数据为al, a2。相应 地,其逆操作表示为[A, DELETE]。
2. B对象将原始的属性值修改为bl、 b2, B对象原始的属性值为b3、 b4, 该操作命令表示为:[B, SET, bl, b2]。
CFG模块控制运行数据库执行上述操作命令时,在运行数据库中B对 象将原始的属性值b3、 b4修改为bl、 b2,同时,CFG模块控制逆操作列表 中保存操作命令、原始数据以及执行操作命令后的数据之间的对应关系,所 述操作命令为SET,所述原始数据为b3、 b4,所述执行操作命令后的数据 为bl、 b2。相应地,其逆操作表示为[B, SET, b3, b4]。
3. C对象将原始的属性值删除,C对象原始的属性值为cl、 c2,该操作 命令表示为[C,DELETE]。
CFG模块控制运行数据库执行上述操作命令时,在运行数据库中C对 象将原始的属性值为cl、 c2删除,同时CFG模块控制逆操作列表中保存操 作命令、原始数据以及执行操作命令后的数据之间的对应关系,所述操作命 令为SET,所述原始数据为cl、 c2,所述执行操作命令后的数据为空。相应
地,其逆操作表示为[C, CREATE, cl,c2]。 即,该配置事务包括下述3条操作命令
1. [A, CREATE, al,a2],其逆操作为[A, DELETE]。
2. [B, SET, bl,b2],其逆操作为[B, SET, b3, b4]。
3. [C, DELETE],其逆操作为[C, CREATE, cl, c2]。 在逐条执行上述操作命令的过程中,若某条操作执行失败,则根据緩存
数据结构中保存的逆操作列表,CFG模块控制运行数据库倒序逐条执行与緩 存数据结构中保存的操作命令相逆的操作,将运行数据库中的数据恢复到原 有状态。
假设执行第一条操作命令[A, CREATE, al, a2]失败,则无需执行逆操作。
假设执行第二条操作命令[B, SET, bl, b2]失败,则CFG模块控制运行数 据库执行第一条操作命令的逆操作,也就是[A, DELETE],在运行数据库 中A对象将创建的属性值al、 a2删除,运行数据库中的数据恢复到原有状 态。
假设执行第三条操作命令[C, DELETE]失败,则CFG模块控制运行数据 库先执行第二条操作命令的逆操作,也就是[B, SET,b3,b4],在运行数据 库中B对象将原始的属性值bl、 b2修改为原始属性值b3、 b4;然后再执行 第一条操作命令的逆操作,也就是[A,DELETE],在运行数据库中A对象 将创建的属性值al、 a2删除,运行数据库中的数据恢复到原有状态。
现有的配置事务补偿机制只能倒序逐条执行逆操作,以还原运行数据库 的原有状态,执行逆操作的时间与执行操作命令的时间相等,这导致了回退 速度慢,在很多应用环境下无法满足快速回退的要求。而且,逐条执行逆操 作的回退过程中,如果某条逆操作执行失败,将导致回退失败,运行数据库 不能恢复到原有状态。
发明内容
本发明实施例提供一种实现配置事务的方法,该方法能够实现快速回退。
本发明实施例提供一种实现配置事务的设备,该设备能够实现快速回退。
一种实现配置事务的方法,该方法包括 创建候选数据库;
控制候选数据库逐条执行配置事务的操作命令,如果操作命令执行失 败,则删除候选数据库;如果成功执行配置事务的所有操作命令,则控制候 选数据库用完成的配置事务更新运行数据库中的配置事务。
一种实现配置事务的设备,该设备包括配置模块、候选数据库和运行数 据库;
所述配置模块,用于创建候选数据库,控制候选数据库逐条执行配置事务 的操作命令,如果操作命令执行失败,则删除所述候选数据库,如果成功执行 配置事务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数据 库中的配置事务;
所述候选数据库,用于在配置模块的控制下逐条执行配置模块发送的配置 事务的操作命令,在配置模块的控制下将完成的配置事务发送给运行数据库;
所述运行数据库,用于在配置模块的控制下接收候选数据库发送的完成的 配置事务,更新自身保存的配置事务。
从上述方案可以看出,本发明实施例控制候选数据库逐条执行配置事务的 操作命令,如果操作命令执行失败,则删除候选数据库;如果成功执行配置事 务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数据库中的 配置事务。这样,执行操作命令的过程和回退过程中运行数据库没有发生变化, 进行回退时无需像现有技术那样在运行数据库中倒序地逐条执行逆操作,直接 删除候选数据库即可,从而,很大地提高了配置事务的回退速度。
图1为现有技术中实现配置事务的设备结构示意图; 图2为本发明实施例实现配置事务的设备结构示意图; 图3为本发明实施例实现配置事务的方法流程图实例。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和 附图,对本发明进一步详细说明。
参见图2,为本发明实施例实现配置事务的设备结构示意图,该设备包 括CFG模块、候选数据库和运行数据库。
所述CFG模块,用于创建候选数据库,控制候选数据库逐条执行配置事 务的操作命令,如果操作命令执行失败,则删除所述候选数据库,如果成功执 行配置事务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数 据库中的配置事务。
所述候选数据库,用于在CFG模块的控制下逐条执行CFG模块发送的配 置事务的操作命令,在CFG模块的控制下将完成的配置事务发送给运行数据 库。
所述运行数据库,用于在CFG模块的控制下接收候选数据库发送的完成的 配置事务,更新自身保存的配置事务。
所述CFG模块可以包括更新模块,用于控制候选数据库用完成的配置事务 替换运行数据库保存的配置事务;或者,用于控制候选数据库根据完成的配置 事务,更新运行数据库的配置事务中与候选数据库的配置事务中不同的数据。
本发明实施例实现配置事务的方法包括创建候选数据库;控制候选数 据库逐条执行配置事务的操作命令,如果操作命令执行失败,则删除候选数据 库;如果成功执行配置事务的所有操作命令,则控制候选数据库用完成的配置 事务更新运行数据库中的配置事务。
下面依据图2的设备结构,通过图3对本发明实施例配置事务的方法进行说明。参见图3,为本发明实施例实现配置事务的方法流程图实例,该方法包
括以下步骤
步骤301, CFG模块接收客户端输入的启动配置事务命令,创建数据库实 例,这里,将所述数据库实例称为候选数据库。
如果不同的客户端同时向CFG模块输入了启动同一个配置事务的命令,则 CFG模块为不同的客户端分别创建候选数据库。
运行数据库中保存了配置事务的完整数据,每个配置事务包括一个以上的 数据库表。例如某个配置事务为给基站配置数据,相应地,运行数据库中保存 的配置事务包括关于硬件设备的多个数据库表,以及关于小区参数的多个数 据库表等。其中各个关于小区参数的数据库表是执行配置事务时客户端经常 访问的凄t据库表。
运行数据库中保存的配置事务为通讯设备当前应用的数据。当客户端需 要对通讯设备进行维护,也就是需要对当前应用的数据进行更新时,则向 CFG模块输入启动配置事务的命令。
对于运行数据库中保存的配置事务的数据量较少的情况,本步骤所述启 动配置事务命令中携带指定的配置事务的信息,本步骤所述创建候选数据库 包括将运行数据库中的所述指定的配置事务拷贝到候选数据库中。
对于运行数据库中保存的配置事务的数据量较大的情况,可以采取上述 将运行数据库中的配置事务拷贝到候选数据库中的方案;也可以在本步骤所 述启动配置事务命令中携带指定配置事务的数据库表类型的信息,则本步骤 所述创建候选数据库包括将运行数据库中的与所述指定配置事务的数据库 表类型对应的数据库表拷贝到候选数据库中。采用后一种方案时,在步骤 301之前,该方法包括CFG模块根据客户端访问运行数据库中配置事务的 数据库表的规则,对配置事务中的数据库表进行分类,将客户端访问的属于 同一类型的数据库表分为一类。以给基站配置数据的配置事务为例,运行数 据库中保存的配置事务包括关于硬件设备的多个数据库表,以及关于小区参 数的多个数据库表等。其中,关于硬件设备的多个数据库表分为一类,关于
小区参数的多个数据库表分为一类,CFG模块建立分类表,分类表中包含了 不同类型与数据库表之间的对应关系。
这样,运行数据库中保存的配置事务的数据量较大时,不必将运行数据库 中的配置事务包含的所有数据库表都拷贝到候选数据库中,节省了候选数据库 的占用空间,并且,减少了复制的数据量。
击孤* 309—广T r; itit;t主t!4"史A法4&入AA西 .荖靠么沾i虽/f七备厶—J会疾i"宏;去.
数据库逐条执行操作命令,如果某条操作命令执行失败,则执行步骤303; 如果成功执行配置事务的所有操作命令,则执行步骤304。
本步骤还包括CFG模块在候选数据库中每执行一条操作命令后,都会 将执行结果反馈给客户端,该执行结果包括执行成功和执行失败。客户端根 据执行结果向CFG模块输入操作命令、回退命令或提交命令如果执行结 果为执行失败,客户端可以向CFG模块输入回退命令,以回退配置事务; 如果执行结果为执行成功,客户端可以继续向CFG模块输入操作命令,如 果所述执行成功的执行结果是在客户端向CFG模块输入配置事务的所有操 作命令之后获知的,客户端向CFG模块输入提交命令。
步骤303, CFG模块删除候选数据库。
CFG模块控制候选数据库逐条执行配置事务的操作命令的过程中,如果 某一条操作命令执行失败,需要回退配置事务,CFG模块接收到客户端输入 的退回命令后,直接删除该候选数据库即可。这样,执行操作命令的过程和 执行的回退过程中运行数据库都没有发生变化,进行回退时无需像现有技术 那样在运行数据库中倒序地逐条执行逆操作,从而,很大地提高了配置事务的 回退速度。
下面举例对本步骤进行说明,假设配置事务包括3条操作命令
1. [A, CREATE, al,a2]。
2. [B, SET,bl,b2]。
3. [C, DELETE]。
CFG模块控制候选数据库逐条执行上述操作命令,若执行到第3条操
作命令时,执行失败,则CFG模块接收到客户端输入的回退命令,删除该 候选数据库。
步骤304, CFG模块控制候选数据库用完成的配置事务更新运行数据库 中的配置事务。
配置事务的所有操作命令逐条执行完之后,CFG模块接收客户端输入 的提交命令后,控制候选数据库用完成的配置事务更新运行数据库中的配置 事务。
所述控制候选数据库用完成的配置事务更新运行数据库中的配置事务的方 法有多种,包括控制候选数据库用候选数据库中完成的配置事务替换运行数 据库中的配置事务;或者,控制候选数据库根据完成的配置事务,更新运行数 据库保存的配置事务中与候选数据库的配置事务中不同的数据,也就是,只将 运行数据库中与候选数据库中不同的数据替换为候选数据库中相应的数据。
如果步骤301中两个以上(包括两个)客户端同时向CFG模块输入了启动 同一个配置事务的命令,CFG模块为各个客户端分别创建候选数据库,则CFG 模块控制各个候选数据库执行完成配置事务的操:作命令之后,各个候选数据库 中包含了各自完成的配置事务。相应地,本步骤所述控制候选数据库用完成的 配置事务更新运行数据库中的配置事务为控制各个候选数据库用完成的配置 事务按照一定的顺序更新运行数据库中的配置事务,所述顺序可根据需要确定。
现有技术中,如果两个以上(包括两个)客户端同时向CFG模块输入 了启动同一个配置事务的命令,CFG模块在运行数据库中同时执行由不同客 户端输入的相同操作命令时,将出现回退失败的问题。例如,运行数据库中 A对象原始的属性值为al,客户端1向CFG模块输入了将al修改为a2操 作命令,客户端2向CFG模块输入了将al修改为a3的操作命令,假设CFG 模块在运行数据库中同时执行将al修改为a2的操作和执行将al修改为a3 的操作之后,运行数据库中执行的结杲为将al修改为a2;此时客户端2将 获知操作命令执行失败,CFG模块控制运行数据库执行回退操作,第一条回 退操作命令为将a3修改为al,而运行数据库当前的值为a2,这将导致回退
操作无法执行。现有技术中由于并发的配置事务之间将相互影响,不能保证 并发配置事务的独立性,无法成功执行回退操作。
而本发明实施例方案中由于各个候选数据库之间相互独立,且CFG模块
控制候选数据库执行配置事务的各条操作命令时与运行数据库没有关系,对
于两个以上(包括两个)客户端同时向CFG模块输入了启动同一个配置事 务的命令的情况,采取将各个候选数据库中完成的配置按照一定的顺序更新 运行数据库中的配置事务,从而,解决了现有技术中无法执行并发配置事务 的问题,保证了并发配置事务的独立性。并且,由于执行操作命令的过程和 回退过程中运行数据库没有发生变化,执行回退操作时直接删除候选数据库 即可,对于两个以上(包括两个)客户端同时向CFG模块输入了启动同一 个配置事务的命令的情况,也能保证回退操作的成功执行。
本发明实施例实现配置事务的方案,控制候选数据库逐条执行配置事务的 操作命令,如果某条^乘作命令执行失败,则删除候选数据库,这样,进行回退 时无需像现有技术那样在运行数据库中倒序地逐条执行逆操作,从而,实现了 配置事务的快速回退。并且,对于两个以上(包括两个)客户端同时向CFG模 块输入了启动同 一个配置事务的命令情况,采取将各个候选数据库中完成的配 置按照一定的顺序更新运行数据库中的配置事务,从而,保证了并发配置事务 的独立性。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了 进一步详细说明,所应理解的是,以上所述〗又为本发明的具体实施例而已,并 不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种实现配置事务的方法,其特征在于,该方法包括创建候选数据库;控制候选数据库逐条执行配置事务的操作命令,如果操作命令执行失败,则删除候选数据库;如果成功执行配置事务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数据库中的配置事务。
2、 如权利要求l所述的方法,其特征在于,所述控制候选数据库用完成的 配置事务更新运行数据库中的配置事务包括控制候选数据库用候选数据库中完成的配置事务替换运行数据库中的配置 事务;或者,控制候选数据库根据完成的配置事务,更新运行数据库保存的配置事务中 与候选数据库的配置事务中不同的数据。
3、 如权利要求1或2所述的方法,其特征在于,所述控制候选数据库逐条 执行配置事务的操作命令之前,该方法包括控制运行数据库将保存的配置事务拷贝到候选数据库中。
4、 如权利要求1或2所述的方法,其特征在于,所述在候选数据库中逐条 执行配置事务的操作命令之前,该方法包括根据客户端访问配置事务中的数据库表的规则,对配置事务中的数据库表 进行分类;将与客户端指定的配置事务中的数据库表类型对应的数据库表拷贝到候选 数据库中。
5、 如权利要求l所述的方法,其特征在于,所述候选数据库中完成的配置 事务为两个以上候选数据库中分别完成的配置事务,所述控制候选数据库用完 成的配置事务更新运行数据库中的配置事务包括控制各个候选数据库用完成的配置事务顺序更新运行数据库中的配置事务。
6、 如权利要求l所述的方法,其特征在于,所述控制候选数据库用完成的 配置事务更新运行数据库中的配置事务之后,该方法包括将运行数据库中更新后的配置事务发送到应用设备,应用设备在通讯设备 上应用所述配置事务。
7、 一种实现配置事务的设备,其特征在于,该设备包括配置模块、候选数 据库和运行数据库;所述配置;f莫块,用于创建候选数据库,控制候选数据库逐条执行配置事务 的操作命令,如果操作命令执行失败,则删除所述候选数据库,如果成功执行 配置事务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数据 库中的配置事务;所述候选数据库,用于在配置模块的控制下逐条执行配置模块发送的配置 事务的操作命令,在配置模块的控制下将完成的配置事务发送给运行数据库;所述运行数据库,用于在配置模块的控制下接收候选数据库发送的完成的 配置事务,更新自身保存的配置事务。
8、 如权利要求7所述的设备,其特征在于,所述配置模块包括更新模块, 用于控制候选数据库用完成的配置事务替换运行数据库保存的配置事务;或者, 用于控制候选数据库根据完成的配置事务,更新运行数据库的配置事务中与候 选数据库的配置事务中不同的数据。
全文摘要
本发明实施例公开了一种实现配置事务的方法,该方法包括创建候选数据库;控制候选数据库逐条执行配置事务的操作命令,如果操作命令执行失败,则删除候选数据库;如果成功执行配置事务的所有操作命令,则控制候选数据库用完成的配置事务更新运行数据库中的配置事务。本发明实施例还公开了一种实现配置事务的设备。本发明实施例方案实现了配置事务过程中的快速回退。
文档编号G06F9/46GK101178665SQ200710194790
公开日2008年5月14日 申请日期2007年12月6日 优先权日2007年12月6日
发明者越 侯 申请人:华为技术有限公司