基于oltp的增加节点数据关系的方法及系统的制作方法

文档序号:6356824阅读:95来源:国知局
专利名称:基于oltp的增加节点数据关系的方法及系统的制作方法
技术领域
本发明涉及数据库应用技术领域,特别是涉及一种基于OLTP (On-Line Transaction Processing,联机事务处理系统)的增加节点数据关系的方法及系统。
背景技术
OLTP是实时采集处理与事务相关联的数据,以及共享数据库和其它文件间变化的系统。在进行联机事务处理时,待处理原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,以实现对数据的即时处理和即时应答,常用于分布式环境下,图形数据库并发事务的处理。基于分布式环境的OLTP系统中,需要维护数据库的完整性,现有技术中,由于 OLTP的操作复杂性,及快速输入/输出的需求,大多数OLTP在大型计算机系统上实现,如果一个事务必须在多个场地进行修改,那么就需要管理机制来防止重写数据并提供同步。而在一个分布式环境下,写操作经常并行地在多个数据库服务器上发生,这样的并发事务处理需要一个“卷回”机制,以保证在一次写操作中系统失效的情况下,仍保证数据库的完整性。这就导致了事务可能一起确认也可能放弃的结果。而如果一个或多个与事务有关的系统响应不一致,就意味着系统或通信可能出现了故障,因而就会放弃一个事务。从上述过程中可以看出,当多个用户试图同时改变数据的同一块时,例如多个用户试图同时对某对儿源节点数据和目标节点数据,添加节点数据关系时,就出现了冲突问题,容易造成数据的重写和不同步;并且,特别当事务失效时,难以进行恢复,容易导致数据库不完整。

发明内容
本发明所要解决的技术问题是提供一种应用于图形数据库联机事务中的增加节点数据关系的方法及系统,用以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题。为解决上述技术问题,本发明提供的技术方案如下—种基于联机事务处理系统OLTP的增加节点数据关系的方法,包括步骤a,预先创建一个事务;步骤b,接收所述事务的事务标识、源节点数据的标识以及目标节点数据的标识;步骤C,根据所述事务标识查找所述事务的事务记录;步骤d,根据所述事务记录判断所述事务是否有效,如果否,则执行步骤e,如果是,则执行步骤f;步骤e,结束此次增加节点数据关系的操作;步骤f,根据所述源节点数据的标识以及目标节点数据的标识,分别获取所述源节点数据记录与目标节点数据记录;步骤g,根据所述源节点数据记录与目标节点数据记录,判断所述源节点数据和目标节点数据是否被其它事务锁定,如果是,则执行步骤h,如果否,则执行步骤i ;步骤h,等待预设时长;步骤hl,判断所述事务是否超期,如果是,则执行步骤e,如果否,则返回步骤d ;步骤i,锁定所述事务记录,以确定所述事务被本次增加节点数据关系的操作所独占;步骤j,满足预设条件时,将所述源节点数据的标识以及目标节点数据的标识,添加到所述事务记录中,建立所述源节点数据和目标节点数据的关系,生成关系记录,并将所述源节点数据和目标节点数据标记为脏数据;步骤k,解除对所述事务记录的锁定。优选的,上述方法中,所述步骤a具体包括al,生成一个全局唯一的事务标识,并获取第一系统时间;a2,在事务的状态数据的数据集中插入一条事务记录,所述事务记录包括所述事务标识和第一系统时间。优选的,上述方法中,步骤j中,所述满足预设条件具体为所述源节点数据和目标节点数据不存在关系记录。优选的,上述方法中,所述方法还包括当所述源节点数据和目标节点数据存在关系记录时,进一步判断所述关系记录是否被删除,如果是,则更新所述关系记录的状态,然后解除对所述事务记录的锁定;如果否,则直接解除对所述事务记录的锁定。优选的,上述方法中,所述步骤k之前还包括步骤jl,将所述第一系统时间更新为生成关系记录完毕时的第二系统时间。优选的,上述方法中,所述步骤k之后还包括步骤kl,将所述事务记录中的提交标识设置为有效;步骤k2,分别将所述源节点数据记录与目标节点数据记录标记为不从属于所述事务,并分别将所述源节点数据记录与目标节点数据记录中的字段值更新为空;步骤k3,删除所述事务记录。优选的,上述方法中,所述步骤k之后还包括步骤ka,将所述事务记录中的回滚标识设置为有效;步骤1Λ,删除所述关系记录和所述脏数据;步骤kc,删除所述事务记录。一种基于OLTP的增加节点数据关系的系统,包括创建单元,用于预先创建一个事务;接收单元,用于接收所述事务的事务标识、源节点数据的标识以及目标节点数据的标识;第一查找单元,用于根据所述事务标识查找所述事务的事务记录;第一判断单元,用于根据所述事务记录判断所述事务是否有效;终止操作单元,用于当所述第一判断单元的判断结果为否时,结束此次增加节点数据关系的操作;第二查找单元,用于当所述第一判断单元的判断结果为是时,根据所述源节点数据的标识以及目标节点数据的标识,分别获取所述源节点数据记录与目标节点数据记录;
5
第二判断单元,根据所述源节点数据记录与目标节点数据记录,判断所述源节点数据和目标节点数据是否被其它事务锁定;延迟单元,用于当所述第二判断单元的判断结果为是时,等待预设时长;第三判断单元,用于在所述延迟单元等待预设时长后,判断所述事务是否超期,如果是,则返回所述终止操作单元,如果否,则返回所述第一判断单元;锁定单元,用于当所述第二判断单元的判断结果为否时,锁定所述事务记录,以确定所述事务被本次增加节点数据关系的操作所独占;数据关系添加单元,用于满足预设条件时,将所述源节点数据的标识以及目标节点数据的标识,添加到所述事务记录中,建立所述源节点数据和目标节点数据的关系,生成关系记录,并将所述源节点数据和目标节点数据标记为脏数据;解锁单元,用于解除对所述事务记录的锁定。优选的,上述系统中,还包括提交标识设置单元,用于将所述事务记录中的提交标识设置为有效;脏数据处理单元,用于分别将所述源节点数据记录与目标节点数据记录标记为不从属于所述事务,并分别将所述源节点数据记录与目标节点数据记录中的字段值更新为空;第一删除单元,用于删除所述事务记录。优选的,上述系统中,还包括回滚标识设置单元,用于将所述事务记录中的回滚标识设置为有效;第二删除单元,用于删除所述关系记录、脏数据以及事务记录。与现有技术相比,本发明具有以下优点在本发明实施例中,可以保证在基于图形数据库的联机事务处理系统中增加节点数据关系时,可以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题,因为在进行增加节点数据关系的操作时,在确定事务有效,且源节点数据和目标节点数据没有被其它事务占用时,会对事务记录进行锁定,此时即便有其它的增加节点数据关系的操作,也会处于等待状态。因此,本实施例所公开的增加节点数据关系的方法,能够保证数据的完整性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明中联机事务处理系统的分层结构示意图;图2为本发明的一种基于OLTP的增加节点数据关系的方法实施例1的流程图;图3是本发明方法实施例1中步骤a的流程图;图4是本发明的一种基于OLTP的增加节点数据关系的方法实施例2的流程图;图5是本发明的一种基于OLTP的增加节点数据关系的方法实施例3的流程图;图6是本发明的一种基于OLTP的增加节点数据关系的方法实施例4的流程图7是本发明的一种基于OLTP的增加节点数据关系的系统实施例1的结构示意图;图8是本发明的一种基于OLTP的增加节点数据关系的系统实施例2的结构示意图;图9是本发明的一种基于OLTP的增加节点数据关系的系统实施例3的结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。本发明的联机事务处理系统可以采用自上而下的三层结构实现,参考图1所示,为本发明中联机事务处理系统的分层结构示意图。最上层为面向外部调用程序的 API (Application Programming Interface,应用程序编程接口)。API 是一些预先定义的函数,目的是提供应用程序与用户基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区中操作内容意味着在同一时间只能有一个操作进行,在该操作进行时其他操作在进入同步区之间均处理等待状态,该方式可以利用Java语言的线程同步锁定特性实现。同步区的操作包括事务过期检查、插入数据控制、删除数据控制、修改数据控制和灾难恢复。而非同步区的操作则不受限制,在任何时间均可以进行。非同步区的操作包括查询数据控制。最下层为存储数据的DataSet操作抽象层,在DatMet中保存有联机事务自身的状态信息,以及数据的事务状态属性信息。在图形数据库中,联机事务的状态信息可以存储在名称为graphiC_db_tX_def的 DataSet中,该DataSet需要满足的数据结构可以如表1所示
权利要求
1.一种基于联机事务处理系统OLTP的增加节点数据关系的方法,其特征在于,包括 步骤a,预先创建一个事务;步骤b,接收所述事务的事务标识、源节点数据的标识以及目标节点数据的标识; 步骤c,根据所述事务标识查找所述事务的事务记录;步骤d,根据所述事务记录判断所述事务是否有效,如果否,则执行步骤e,如果是,则执行步骤f ;步骤e,结束此次增加节点数据关系的操作;步骤f,根据所述源节点数据的标识以及目标节点数据的标识,分别获取所述源节点数据记录与目标节点数据记录;步骤g,根据所述源节点数据记录与目标节点数据记录,判断所述源节点数据和目标节点数据是否被其它事务锁定,如果是,则执行步骤h,如果否,则执行步骤i ; 步骤h,等待预设时长;步骤hl,判断所述事务是否超期,如果是,则执行步骤e,如果否,则返回步骤d ; 步骤i,锁定所述事务记录,以确定所述事务被本次增加节点数据关系的操作所独占; 步骤j,满足预设条件时,将所述源节点数据的标识以及目标节点数据的标识,添加到所述事务记录中,建立所述源节点数据和目标节点数据的关系,生成关系记录,并将所述源节点数据和目标节点数据标记为脏数据; 步骤k,解除对所述事务记录的锁定。
2.根据权利要求1所述的方法,其特征在于,所述步骤a具体包括 al,生成一个全局唯一的事务标识,并获取第一系统时间;a2,在事务的状态数据的数据集中插入一条事务记录,所述事务记录包括所述事务标识和第一系统时间。
3.根据权利要求1所述的方法,其特征在于,步骤j中,所述满足预设条件具体为所述源节点数据和目标节点数据不存在关系记录。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括当所述源节点数据和目标节点数据存在关系记录时,进一步判断所述关系记录是否被删除,如果是,则更新所述关系记录的状态,然后解除对所述事务记录的锁定;如果否,则直接解除对所述事务记录的锁定。
5.根据权利要求2所述的方法,其特征在于,所述步骤k之前还包括 步骤jl,将所述第一系统时间更新为生成关系记录完毕时的第二系统时间。
6.根据权利要求1所述的方法,其特征在于,所述步骤k之后还包括 步骤kl,将所述事务记录中的提交标识设置为有效;步骤k2,分别将所述源节点数据记录与目标节点数据记录标记为不从属于所述事务, 并分别将所述源节点数据记录与目标节点数据记录中的字段值更新为空; 步骤k3,删除所述事务记录。
7.根据权利要求1所述的方法,其特征在于,所述步骤k之后还包括 步骤ka,将所述事务记录中的回滚标识设置为有效;步骤1Λ,删除所述关系记录和所述脏数据; 步骤kc,删除所述事务记录。
8.一种基于OLTP的增加节点数据关系的系统,其特征在于,包括 创建单元,用于预先创建一个事务;接收单元,用于接收所述事务的事务标识、源节点数据的标识以及目标节点数据的标识;第一查找单元,用于根据所述事务标识查找所述事务的事务记录; 第一判断单元,用于根据所述事务记录判断所述事务是否有效; 终止操作单元,用于当所述第一判断单元的判断结果为否时,结束此次增加节点数据关系的操作;第二查找单元,用于当所述第一判断单元的判断结果为是时,根据所述源节点数据的标识以及目标节点数据的标识,分别获取所述源节点数据记录与目标节点数据记录;第二判断单元,根据所述源节点数据记录与目标节点数据记录,判断所述源节点数据和目标节点数据是否被其它事务锁定;延迟单元,用于当所述第二判断单元的判断结果为是时,等待预设时长; 第三判断单元,用于在所述延迟单元等待预设时长后,判断所述事务是否超期,如果是,则返回所述终止操作单元,如果否,则返回所述第一判断单元;锁定单元,用于当所述第二判断单元的判断结果为否时,锁定所述事务记录,以确定所述事务被本次增加节点数据关系的操作所独占;数据关系添加单元,用于满足预设条件时,将所述源节点数据的标识以及目标节点数据的标识,添加到所述事务记录中,建立所述源节点数据和目标节点数据的关系,生成关系记录,并将所述源节点数据和目标节点数据标记为脏数据; 解锁单元,用于解除对所述事务记录的锁定。
9.如权利要求8所述的系统,其特征在于,还包括提交标识设置单元,用于将所述事务记录中的提交标识设置为有效; 脏数据处理单元,用于分别将所述源节点数据记录与目标节点数据记录标记为不从属于所述事务,并分别将所述源节点数据记录与目标节点数据记录中的字段值更新为空; 第一删除单元,用于删除所述事务记录。
10.如权利要求8所述的系统,其特征在于,还包括回滚标识设置单元,用于将所述事务记录中的回滚标识设置为有效; 第二删除单元,用于删除所述关系记录、脏数据以及事务记录。
全文摘要
本发明公开了一种基于OLTP的增加节点数据关系的方法及系统。本发明在进行增加节点数据关系的操作时,在确定事务有效,且源节点数据和目标节点数据没有被其它事务占用时,会对事务记录进行锁定,此时即便有其它的增加节点数据关系的操作,也会处于等待状态。因此,本发明可以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题。
文档编号G06F17/30GK102193987SQ20111007375
公开日2011年9月21日 申请日期2011年3月25日 优先权日2011年3月25日
发明者于洪方, 井卫军, 刘健, 姚福源, 蒋建平, 陈升 申请人:北京世纪互联工程技术服务有限公司, 北京云快线软件服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1