图形数据库联机事务中事务回滚机制的实现方法技术

技术编号:6640095 阅读:481 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及图形数据库联机事务中事务回滚机制的实现方法,包括步骤:客户端程序调用图形数据的API,传入将要提交的事务编号;检查事务是否存在,事务是否已过期,事务是否已提交,检查事务是否已回滚,检查事务是否已被锁定,标记事务回滚状态;恢复事务锁定的数据记录;删除脏数据;删除事务记录。本发明专利技术提供了简单可靠的数据回滚机制,在回滚与未回滚状态之间不会出现第三种状态。数据操作具有任意断点持续性,事务回滚操作调用后,在数据恢复开始至完成的任意时间点的意外执行中断,均可在再次启动系统后继续执行,直至恢复完成。

【技术实现步骤摘要】

本专利技术涉及一种。
技术介绍
通常在数据库系统中,事务是工作的离散单位。例如,一个数据库事务可以是修改一个用户的帐户平衡或库存项的写操作。联机事务处理系统实时地采集处理与事务相连的数据以及共享数据库和其它文件的地位的变化。在联机事务处理中,事务是被立即执行的。 在单一用户、单一数据库环境下执行事务是简单的,这是因为没有冲突问题或对数据库间同步的需求。在一个分布式环境下,写操作经常并行地在多个数据库服务器上发生。这样的并发事务处理需要一个“卷回”机制,以保证在一次写操作中系统失效的情况下,仍保证数据库的完整性。事务要么一起确认,要么放弃。如果一个或多个与事务有关的系统响应不一致,这意味着系统或通信可能出现了故障,因而就会放弃一个事务。可以看出,当多个用户试图同时改变数据的同一块时,就出现了冲突问题。
技术实现思路
为了解决上述问题,本专利技术提出了一种,以实现事务的回滚机制。本专利技术采用的技术方案如下一种,其特征在于联机事务处理自上而下分为三层最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用 Java语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集Datakt中,该Datakt的数据结构如下权利要求1. 一种,其特征在于 联机事务处理自上而下分为三层 最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用Java 语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集 DataSet中,该Datakt的数据结构如下列名称数据类型说明tx—noNumber事务ID,全局唯一的IDis—commitNumber该列的值为1或一 1,用于标识事务是否已提交,当值为-ι时表示未提交,当值为1时表示已提交。is—rollbackNumber该列的值为1或一 1,用于标识事务是否已回滚,当值为-ι时表示未回滚,当值为1时表示已回滚。is_timeoutNumber该列的值为1或一 1,用丁·标识事务是否已过期,当值为-1时表示尚未过期,当值为1时表示已过期。start_timeNumber用于记录该事务最后一次进行操作的时间,值为1970年1月1 日0时0分0秒到当前时间的累计毫秒数。associate—nodeString该事务相关联的Node,当开启事务后,在事务中对任何Node 进行增、删、改操作后,需将该Node的名称记录在当前列表中,多个Node的名称之间以逗号进行分隔。processingNumber该列的值为1或一 1,用于标识该事务是否有增、删、改的操作正在进行处理中,当值为-ι时表示否,当值为1时表示正在处理中。在同·事务中,同·吋间只允许处理·个操作。在图形数据库中每个Node均有一个数据集DatMet,该DatMet中缺省内置如下两个列列名称数据类型说明_dirtyNumber该列的值为1或一 1,用于标识该条记录是否从属于某个事务, 当值为-1时表示否,当值为1时表示是。从属于某一事务的数据为未确认的数据,称之为“脏数据”。_tx_noString记录该数据所从属的事务编号。该列的值只有在—dirty列的值为1时才有意义。用Relation描述Node与Node之间的关系,每一个Relation均有一个全局唯一的名称、一个源Node、一个目标Node,由源Node到目标Node的方向,称之为正向,由目标Node 到起始Node的方向称之为反向,将每一个Relation的定义信息保存在名称为graphic_db_ relation_def的DataSet中,该DataSet的数据结构如下2.如权利要求1所述的,其特征在于在所述步骤2、中,检查事务是否存在的方法是读取名为graphiC_db_tX_def的 DataSet,查找tX_no列的值与API中传入的tX_no值相等的记录,如果记录存在,则意味着当前的图形数据库中存在该联机事务。3.如权利要求1所述的,其特征在于在所述步骤幻中,检查事务是否已过期的方法是读取名为graphi c_db_tX_def 的DatMet,查找tx_n0列的值与API中传入的tx_n0值相等的记录,检查该记录中is_ timeout列的值,如果值为-1,则意味着在当前的图形数据库中该联机事务没有过期。4.如权利要求1所述的,其特征在于在所述步骤4)中,检查事务是否已提交的方法是读取名为graphiC_db_tX_def的 DataSet,查找tx_no列的值与API中传入的tx_no值相等的记录,检查该记录中is_commit 列的值,如果值为-1,则意味着在当前的图形数据库中该联机事务没有进行提交。5.如权利要求1所述的,其特征在于在所述步骤5)中,检查事务是否已标记回滚的方法是查找tx_n0列的值与API中传入的tX_no值相等的记录,检查该记录中is_rollback列的值,如果值为-1,则意味着在当前的图形数据库中该联机事务没有回滚。6.如权利要求1所述的,其特征在于在所述步骤6)中,检查事务是否被锁定的方法是读取名为graphiC_db_tX_def 的DatMet,查找tx_n0列的值与API中传入的tx_n0值相等的记录,检查该记录中 processing列的值,如果值为-1,则意味着在当前的图形数据库中该事务没有被标记锁定。7.如权利要求1所述的,其特征在于在所述步骤7)中,标记事务回滚状态的方法是查询graphiC_db_tX_def,查找tx_n0 列的值与API中传入的tX_no值相等的记录,将该条记录is_rollback列的值置为1。8.如权利要求1所述的,其特征在于在所述步骤8)中,恢复事务锁定的数据记录的方法是查询graphic_db_tx_def,查找tx_no列的值与API中传入的tx_no值相等的记录,读取该条记录的associate^ode列中的记录,获取当前事务操作中相关联的节点名称,然后依次查找各关联节点数据中_tX_no列的值与当前事务记录tX_no列中值相等,且_肚汁7 列值为-1的数据记录,将这些记录的_tX_no列的值设为null ;查询graphic_db_relation_record_def,查找数据中_tx_no列的值与API中传入的 tx_no值相等,且_dirty列值为-1的记录,将这些记录的_tX_no列的值设为null。9.如权利要求1所述的,其特征在于在所述步骤9)中本文档来自技高网...

【技术保护点】
1.一种图形数据库联机事务中事务回滚机制的实现方法,其特征在于:联机事务处理自上而下分为三层:最上层为暴露给外部调用程序的API;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用Java语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphic_db_tx_def的数据集DataSet中,该DataSet的数据结构如下:在图形数据库中每个Node均有一个数据集DataSet,该DataSet中缺省内置如下两个列:用Relation描述Node与Node之间的关系,每一个Relation均有一个全局唯一的名称、一个源Node、一个目标Node,由源Node到目标Node的方向,称之为正向,由目标Node到起始Node的方向称之为反向,将每一个Relation的定义信息保存在名称为graphic_db_relation_def的DataSet中,该DataSet的数据结构如下:?  列名称?  数据类型?  说明?  relation_id?  Number?  全局唯一的ID?  name?String?  用于保存Relation的名称?  source_node?  Number?  源Node的ID?  target_node?  Number?  目标Node的ID两个通过Relation连接的Node中的数据可以建立连接,将所有数据的连接信息保存在名称为graphic_db_relation_record_def的DataSet中,该DataSet的数据结构如下:执行以下步骤:1)客户端程序调用图形数据的API,进行事务的提交操作,调用API时,传入将要提交的事务编号tx_no;2)检查事务是否存在,若不存在则退出,否则继续下面的步骤;3)检查事务是否已过期,若过期则退出,否则继续下面的步骤;4)检查事务是否已提交,若提交则退出,否则继续下面的步骤;5)检查事务是否已回滚,若回滚则退出,否则继续下面的步骤;6)检查事务是否已被锁定,若被锁定则退出,否则继续下面的步骤;7)标记事务回滚状态;8)恢复事务锁定的数据记录;9)删除脏数据;10)删除事务记录,至此完成事务的回滚操作。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陈升于洪方井卫军蒋建平陈晞刘健
申请(专利权)人:北京世纪互联工程技术服务有限公司北京云快线软件服务有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1