图形数据库中联机事务的实现方法

文档序号:6356774阅读:183来源:国知局
专利名称:图形数据库中联机事务的实现方法
技术领域
本发明涉及一种图形数据库中联机事务的实现方法。
背景技术
通常在数据库系统中,事务是工作的离散单位。例如,一个数据库事务可以是修改一个用户的帐户平衡或库存项的写操作。联机事务处理系统实时地采集处理与事务相连的数据以及共享数据库和其它文件的地位的变化。在联机事务处理中,事务是被立即执行的。 在单一用户、单一数据库环境下执行事务是简单的,这是因为没有冲突问题或对数据库间同步的需求。在一个分布式环境下,写操作经常并行地在多个数据库服务器上发生。这样的并发事务处理需要一个“卷回”机制,以保证在一次写操作中系统失效的情况下,仍保证数据库的完整性。事务要么一起确认,要么放弃。如果一个或多个与事务有关的系统响应不一致,这意味着系统或通信可能出现了故障,因而就会放弃一个事务。可以看出,当多个用户试图同时改变数据的同一块时,就出现了冲突问题。

发明内容
为了解决上述问题,本发明提出了一种图形数据库中联机事务的实现方法,以实现对联机事务的控制。本发明采用的技术方案如下一种图形数据库中联机事务的实现方法,其特征在于联机事务处理自上而下分为三层最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用 Java语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集Datakt中,该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均有一个数据集Dat必et,该DatMet中缺省内置如
下两个列
列名称数据类型说明_dirtyNumber该列的值为1或一 1,用于标识该条记录是否从属于某个事务, 当值为-1时表示否,当值为1时表示是。从属于某一事务的数据为未确认的数据,称之为“脏数据”。_tx_noString记录该数据所从属的事务编号。该列的值只有在—dirty列的值为1时才有意义。执行以下步骤1)新建联机事务;2)进行联机事务数据操作;3)提交联机事务,若提交联机事务成功则结束,否则进行下一步骤;4)回滚联机事务。进一步地在所述步骤1)中,新建联机事务的详细步骤是1. 1)生成一个全局唯一事务ID ; 1. 2)获取当前系统时间;1. 3)在名称为graphiC_db_tx_def的DatMet中插入一条新的记录,将生成的事务ID填入该记录的tX_no列中,将获取的当前系统时间填入该记录的 start_time列中;1. 4)将新生成的事务ID返回。在所述步骤幻中,对本次事务中的每一次操作进行如下步骤2. 1)获取本次所操作的节点的名称;2. 2)将该节点的名称保存到graphic_db_tx_def的associate_node列中,若该节点的名称在前面未保存过,则在associatmode列中将该节点的名称与前面的节点名称之间以逗号分隔;否则本次操作中不再保存节点名称;2. 3)同时将当前的系统时间更新至|J graphic_db_tx_def 的列 start_time 中。在所述步骤幻中,提交联机事务的详细步骤是3. 1)标记事务提交状态,查询名称为graphic_db_tx_def的Datakt,将其中对应该事务的那条记录的is_commit列的值置为1 ;3. 2)读取该条记录的associatmode列中的相关节点名称,依次处理相应节点中的与本次事务相关的脏数据,将其转换为正式数据,即,将相应节点的DatMet中的dirty列的值改为-I ;3. 3)删除graphiC_db_tX_def的DatMet中对应该事务的那条记录,事务提交完成。在所述步骤4)中,回滚联机事务的详细步骤是4. 1)标记事务回滚状态,查询名称为graphic_db_tx_def的Datakt,将其中对应该事务的那条记录的is_rolll3ack列的值置为1 ;4. 2)读取该条记录的associatmode列中的相关节点名称,依次恢复相应节点中的与本次事务相关的脏数据,即,将相应节点的DatMet中的dirty列的值恢复为1 ;4. 3) 删除graphiC_db_tX_def的DatMet中对应该事务的那条记录,事务回滚完成。在提交联机事务的过程中还进行如下事务过期处理定期检查名称为graphiC_db_tX_def的DatMet中的数据,对每条记录作如下检查将当前的系统时间与记录中的start_time进行比较,如果当前时间与start_ time的差大于设定的事务处理时间,则意味着该条事务已经过期,然后检查该条事务记录的processing列的值,如果值为1,则说明该事务正在操作中,本次不对该事务记录进行过期处理,事务过期处理结束,反之,继续执行下一步骤;标记事务过期状态,将graphiC_db_tX_def的DatMet中对应该事务的那条记录的is_timeout列的值置为1 ;读取该条记录的associatmode列中的相关节点名称,依次恢复相应节点中的与本次事务相关的脏数据,即,将相应节点的Dat^et中的dirty列的值恢复为1 ;删除graphiC_db_tX_def的DatMet中对应该事务的那条记录,事务过期处理完毕。本发明具有以下优点联机事务以“事务ID”进行标识,不受调用客户端程序的连接限制,同一事务可以在多个客户端间共享,非常方便的实现分布式事务。


图1为图形数据库的架构;图2为节点之间的关系图;图3为数据在DatMet中的存储方式;图4为节点之间的引用图;图5为联机事务处理流程;图6联机事务处理的结构。
具体实施方式
本发明提出了一种图形数据库中联机事务的实现方法,下面结合附图详细说明。图形数据库概述本发明图形数据库的架构自上而下可以分为三层。如图1所示,最上层为图形数据中各种概念对象的组织与实现。中间层为抽象的数据物理存储接口层,将物理存储的数据抽象为若干个数据集DatMet。底层为物理存储实现层,由程序借助现有的存储引擎实现,比如传统的关系数据库,XML文件等等。Datakt (数据集)DataSet是图形数据库中数据的逻辑存储单元,图形数据库中的数据以及数据库自身的逻辑定义均存储在DatMet中,DataSet是一个抽象的接口,真实的数据可以通过遵循DataSet接口的实现程序存储在关系数据库、XML或自定义格式的文件中。每一个 DataSet由一个全局唯一的名称和若干个列(Column)组成。DataSet中的列表支持如下两种数据类型
权利要求
1. 一种图形数据库中联机事务的实现方法,其特征在于 联机事务处理自上而下分为三层 最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用Java 语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集 DataSet中,该Datakt的数据结构如下
2.如权利要求1所述的图形数据库中联机事务的实现方法,其特征在于 在所述步骤1)中,新建联机事务的详细步骤是1. 1)生成一个全局唯一事务ID ; 1. 2)获取当前系统时间;1.3)在名称为graphic_db_tx_def的Datakt中插入一条新的记录,将生成的事务ID 填入该记录的tX_no列中,将获取的当前系统时间填入该记录的Start_time列中;1.4)将新生成的事务ID返回。
3.如权利要求1所述的图形数据库中联机事务的实现方法,其特征在于 在所述步骤幻中,对本次事务中的每一次操作进行如下步骤2.1)获取本次所操作的节点的名称;2. 2)将该节点的名称保存到graphic_db_tx_def的associate_node列中,若该节点的名称在前面未保存过,则在associatmode列中将该节点的名称与前面的节点名称之间以逗号分隔;否则本次操作中不再保存节点名称;2.3)同时将当前的系统时间更新到graphic_db_tx_def的列start_time中。
4.如权利要求1所述的图形数据库中联机事务的实现方法,其特征在于 在所述步骤幻中,提交联机事务的详细步骤是3.1)标记事务提交状态,查询名称为graphiC_db_tX_def的DatMet,将其中对应该事务的那条记录的is_COmmit列的值置为1 ;3. 2)读取该条记录的associatmode列中的相关节点名称,依次处理相应节点中的与本次事务相关的脏数据,将其转换为正式数据,即,将相应节点的DatMet中的dirty列的值改为-ι ;3.3)删除graphiC_db_tX_def的DatMet中对应该事务的那条记录,事务提交完成。
5.如权利要求1所述的图形数据库中联机事务的实现方法,其特征在于 在所述步骤4)中,回滚联机事务的详细步骤是4.1)标记事务回滚状态,查询名称为graphiC_db_tX_def的DatMet,将其中对应该事务的那条记录的is_rollbaCk列的值置为1 ;4. 2)读取该条记录的associatmode列中的相关节点名称,依次恢复相应节点中的与本次事务相关的脏数据,即,将相应节点的Dat^et中的dirty列的值恢复为1 ;4. 3)删除graphiC_db_tX_def的DataSet中对应该事务的那条记录,事务回滚完成。
6.如权利要求1所述的图形数据库中联机事务的实现方法,其特征在于 在提交联机事务的过程中还进行事务过期处理定期检查名称为graphiC_db_tX_def的DatMet中的数据,对每条记录作如下检查 将当前的系统时间与记录中的start_time进行比较,如果当前时间与Start_time 的差大于设定的事务处理时间,则意味着该条事务已经过期,然后检查该条事务记录的 processing列的值,如果值为1,则说明该事务正在操作中,本次不对该事务记录进行过期处理,事务过期处理结束,反之,继续执行下一步骤;标记事务过期状态,将graphiC_db_tX_def的DataSet中对应该事务的那条记录的is_ timeout列的值置为1 ;读取该条记录的associatmode列中的相关节点名称,依次恢复相应节点中的与本次事务相关的脏数据,即,将相应节点的DatMet中的dirty列的值恢复为1 ;删除graphiC_db_tX_def的DatMet中对应该事务的那条记录,事务过期处理完毕。
全文摘要
本发明涉及图形数据库中联机事务的实现方法,包括步骤1)新建联机事务。2)进行联机事务数据操作。3)提交联机事务标记事务提交状态;读取该条记录的associate_node列中的相关节点名称,依次处理相应节点中的与本次事务相关的脏数据;删除DataSet中对应该事务的那条记录。若提交联机事务成功则结束,否则回滚联机事务。本发明的优点是联机事务以“事务ID”进行标识,不受调用客户端程序的连接限制,同一事务可以在多个客户端间共享,非常方便地实现分布式事务。
文档编号G06F17/30GK102193986SQ20111007298
公开日2011年9月21日 申请日期2011年3月25日 优先权日2011年3月25日
发明者于洪方, 井卫军, 刘健, 蒋建平, 陈升, 陈晞 申请人:北京世纪互联工程技术服务有限公司, 北京云快线软件服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1