首页> 中国专利> 基于图形数据库的联机事务处理系统及数据插入方法

基于图形数据库的联机事务处理系统及数据插入方法

摘要

本发明提供了基于图形数据库的联机事务处理系统及数据插入方法,所述方法包括:预先创建一个新事务,接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识;锁定所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入;所述数据插入具体包括:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中,并将所述待插入数据写入所述目标数据集;解锁所述事务标识对应的当前事务记录。本发明实施例可以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-07-08

    授权

    授权

  • 2012-10-31

    专利申请权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20120920 申请日:20110325

    专利申请权、专利权的转移

  • 2011-11-23

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110325

    实质审查的生效

  • 2011-09-21

    公开

    公开

说明书

技术领域

本发明涉及数据处理领域,特别是涉及基于图形数据库的联机事务处理系统及数据插入方法。

背景技术

数据库(Database)可以认为是按照数据结构来组织、存储和管理数据的仓库,而图形数据库(graphic database)是利用计算机将点、线、面等图形基本元素按一定数据结构进行存储的数据集合。而关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。在关系数据库中,采用单一的数据结构即是关系来描述数据,即是关系数据库中的数据之间的各种联系均用关系来表示。数据的逻辑结构可以采用二维表来实现。

通常在数据库系统中,事务是工作的离散单位。例如,一个数据库事务可以是修改一个用户的帐户平衡或库存项的写操作。联机事务处理系统(On-Line Transaction Processing,OLTP)实时地采集处理与事务相连的数据以及共享数据库和其它文件的地位的变化,在联机事务处理中,事务是被立即执行的,一批事务被存储一段时间,然后再被执行,假设这些事务可以完成,OLTP的结果可以在这个数据库中立即获得。联机事务处理以实时的方式发生。例如:民航定票系统和银行ATM机是联机事务处理系统的例子。在单一用户、单一数据库环境下执行事务是简单的,这是因为没有冲突问题或对数据库间同步的需求。

一般情况下,大多数OLTP系统在大型计算机系统上实现,如果一个事务必须在多个场地进行修改,那么就需要管理机制来防止重写数据并提供同步。而在一个分布式环境下,写操作经常并行地在多个数据库服务器上发生,这样的并发事务处理需要一个“卷回”机制,以保证在一次写操作中系统失效的情况下,仍保证数据库的完整性。这就导致了事务可能一起确认也可能放弃的结果。而如果一个或多个与事务有关的系统响应不一致,就意味着系统或通信可能出现了故障,因而就会放弃一个事务。

可以从上述过程中看出,当多个用户试图同时改变数据的同一块时,就出现了冲突问题。进一步的,不管是事务一起确认还是放弃,都会导致数据库中数据的不完整。

发明内容

本发明所要解决的技术问题是提供一种应用于图形数据库联机事务中的数据插入方法,用以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题。

本发明的另一个目的是将上述构思应用于具体的应用环境中,提供一种应用于图形数据库联机事务中的数据插入系统,从而保证该方法的实现和应用。

为解决上述技术问题,本发明实施例提供了一种基于图形数据库的数据插入方法,该方法包括:预先创建一个新事务,

接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识;

锁定所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入;所述数据插入具体包括:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中,并将所述待插入数据写入所述目标数据集;

解锁所述事务标识对应的当前事务记录。

优选的,所述创建一个新事务,具体包括:

生成一个全局唯一的事务标识,并获取第一系统时间;

在事务的状态数据的数据集中插入一条当前事务记录,所述当前事务记录包括所述事务标识和第一系统时间。

优选的,还包括:

当所述待插入数据插入完毕后,将所述第一系统时间更新为插入完毕时的第二系统时间。

优选的,所述将所述待插入数据写入所述目标数据集,具体包括:

将所述目标数据集标识对应的目标数据记录标志为从属于所述新事务;

将所述目标数据集的事务编号更新为所述新事务的事务标识。

优选的,所述接收所述新事务的事务标识、待插入数据和目标数据集标识之后,还包括:

判断所述新事务是否有效,如果是,则执行所述按照所述事务标识锁定所述事务标识对应的当前事务记录的步骤,如果否,则结束本次数据插入过程。

优选的,所述解锁所述事务标识对应的当前事务记录之后,还包括:

将所述事务标识对应的事务提交状态标识为有效;

将目标数据集标识对应的目标数据记录标识为不从属于所述新事务;并将所述目标数据记录中的目标数据集标识的字段值更新为空;

删除所述事务标识对应的当前事务记录。

优选的,所述解锁所述事务标识对应的当前事务记录之后,还包括:

将所述事务标识对应的事务回滚状态标识为有效;

删除与所述目标数据集标识对应目标数据记录;

删除与所述事务标识对应的当前事务记录。

本发明实施例还提供了一种基于图形数据库的联机事务处理系统,包括:

创建模块,用于创建一个新事务;

接收模块,用于接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识;

锁定模块,用于所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入;所述数据插入具体包括:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中,并将所述待插入数据写入所述目标数据集;

解锁模块,用于解锁所述事务标识对应的当前事务记录。

优选的,还包括:

标识提交状态模块,将所述事务标识对应的事务提交状态标识为有效;

标识脏数据模块,用于将目标数据集标识对应的目标数据记录标识为不从属于所述新事务;并将所述目标数据记录中的目标数据集标识的字段值更新为空;

第一删除模块,用于删除所述事务标识对应的当前事务记录。

优选的,还包括:

标识回滚状态模块,用于将所述事务标识对应的事务回滚状态标识为有效;

第二删除模块,用于删除与所述目标数据集标识对应目标数据记录;

删除与所述事务标识对应的当前事务记录。

与现有技术相比,本发明具有以下优点:

在本发明实施例中,可以保证在基于图形数据库的联机事务处理系统中插入数据时,可以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题,因为在进行当前的数据插入时,会对当前事务记录进行锁定,此时即便有其他的数据插入操作,也会处于等待状态。因此,本实施例所公开的数据插入方法,能够保证数据的完整性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明中联机事务处理系统的分层结构示意图;

图2为本发明的一种基于图形数据库的数据插入方法实施例1的流程图;

图3是本发明方法实施例1中步骤201的流程图;

图4是本发明的一种基于图形数据库的数据插入方法实施例2的流程图;

图5是本发明的一种基于图形数据库的数据插入方法实施例3的流程图;

图6是本发明的一种基于图形数据库的数据插入方法实施例4的流程图;

图7是本发明的一种应用于图形数据库联机事务中的数据插入系统实施例1的结构示意图;

图8是本发明的一种应用于图形数据库联机事务中的数据插入系统实施例2的结构示意图;

图9是本发明的一种应用于图形数据库联机事务中的数据插入系统实施例3的结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明的联机事务处理系统可以采用自上而下的三层结构实现,参考图1所示,为本发明中联机事务处理系统的分层结构示意图。最上层为面向外部调用程序的API(Application Programming Interface,应用程序编程接口)。API是一些预先定义的函数,目的是提供应用程序与用户基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区中操作内容意味着在同一时间只能有一个操作进行,在该操作进行时其他操作在进入同步区之间均处理等待状态,该方式可以利用Java语言的线程同步锁定特性实现。同步区的操作包括:事务过期检查、插入数据控制、删除数据控制、修改数据控制和灾难恢复。而非同步区的操作则不受限制,在任何时间均可以进行。非同步区的操作包括查询数据控制。最下层为存储数据的图形数据库中的数据集(DataSet)接口,在DataSet中保存有联机事务自身的状态信息,以及数据的事务状态属性信息。

在图形数据库中,联机事务的状态信息可以存储在名称为graphic_db_tx_def的DataSet中,该DataSet需要满足的数据结构可以如表1所示:

表1

而在图形数据库中每一个Node均有一个相对应的同名DataSet,数据之间的关系(Relation)信息则可以保存在名称为graphic_db_relation_record_def的DataSet中。这些保存了Relation信息的DataSet中均缺省内置如表2所示的两列:

表2

基于上述联机事务处理系统,参考图2,示出了本发明的一种基于图形数据库的数据插入方法实施例1的流程图,可以包括以下步骤:

步骤201:预先创建一个新事务。

首先需要预先在联机事务处理系统中创建一个新事务,建立新事务之后才能够进行数据的操作,例如数据插入。参考图3所示,所述步骤201在实际应用中可以包括以下步骤:

步骤301:生成一个全局唯一的事务标识,并获取第一系统时间。

当接收到创建新事务的API调用时,生成一个全局唯一的事务标识。例如生成的事务标识(ID)可以为:123abc。并且获取当前系统时间作为第一系统时间,例如第一系统时间可以为:1291739790803。

步骤302:在事务的状态数据的数据集中插入一条当前事务记录,所述当前事务记录包括所述事务标识和第一系统时间。

例如可以在名称为graphic_db_tx _def的DataSet中插入一条新的记录作为当前事务记录,该当前事务记录的各个字段值可以如表3所示:

表3

  tx_no  is_commit  is_rollback  is_timeout  start_time  associate_node  processing  123abc  -1  -1  -1  1291739790803  null  -1

步骤202:接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识。

当应用程序调用需要插入数据的API时,将事务标识、待插入的数据以及目标数据集标识传给图形数据库。其中,所述目标数据集标识用于表示待插入数据在插入之后需要存储的位置信息,即是存到哪个数据集中。

步骤203:锁定所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入。

在本步骤中需要打开事务处理标记,即是通过查询graphic_db_tx_def找到当前事务记录,假定事务标识为123abc,则将该条当前事务记录的processing列的值置为1,如表4所示:

表4

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  -1  -1  -1  1291739790803  null  1

步骤204:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中。

将本次插入数据操作涉及的Node的名称增加到当前事务记录中的关联节点字段。假定在事务标识123abc对应的当前事务记录中,应用程序调用API需要将待插入数据插入到名称为Customer的Node中,此时目标数据集标识即为Customer,即是需要将Customer赋予associate_node;则对应的当前事务记录中的信息如表5所示:

表5

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  -1  -1  -1  1291739790803  Customer  1

需要说明的是,当在相同的事务中,如果涉及多个目标数据集的Node时,则将多个Node的名称以逗号分隔。

步骤205:将所述待插入数据写入所述目标数据集。

在本步骤中需要将待插入数据写入目标DataSet中。首先需要将目标数据集对应的目标数据记录的“_dirty”列的值设为1,表明该条目标数据记录为脏数据,即是该条目标数据记录所属的事务还没有提交。再将“_tx_no”列的值设为事务标识,在本实施例中即为“123abc”。

步骤206:解锁所述事务标识对应的当前事务记录。

将待插入数据写入到所述目标数据集中,还需要关闭事务处理标记。具体可以先查询graphic_db_tx_def,如果事务标识为“123abc”,则将该条记录的processing列的值置为“-1”,此时的当前事务记录可以如表6所示:

表6

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  -1  -1  -1  1291739798888  Customer  -1

解锁当前事务记录之后,后续在该事务下如果再有其他的数据插入操作,就可以继续执行。

在实际应用中,本实施例可以保证在基于图形数据库的联机事务处理系统中插入数据时,可以解决现有技术中存在冲突以及冲突导致的数据库中数据不完整的技术问题,因为在进行当前的数据插入时,会对当前事务记录进行锁定,此时即便有其他的数据插入操作,也会处于等待状态。因此,本实施例所公开的数据插入方法,能够保证数据的完整性。

参考图4,示出了本发明的一种基于图形数据库的数据插入方法实施例2的流程图,本实施例可以包括以下步骤:

步骤401:接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识。

本步骤在上一个实施例已经详细说明,在此不再赘述。

步骤402:判断所述新事务是否有效,如果是,则进入步骤303,如果否,则结束本次数据插入过程。

在本实施例中判断的具体方式可以为,查询graphic_db_tx_def,并以事务标识作为过滤条件进行检索,如果存在如下情形之一,则表示该新事务是无效的:记录没有找到,记录中is_commit的值为1(说明事务已提交),记录中is_rollback的值为1(说明事务已回滚),以及记录中is_timeout的值为1(说明事务已过期)。如果事务无效,则结束本次数据插入过程,还可以返回错误信息。

步骤403:按照所述事务标识锁定所述事务标识对应的当前事务记录。

如果创建的新事务有效,则执行本步骤。

步骤404:锁定所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入。

步骤405:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中。

步骤406:将所述目标数据集标识对应的目标数据记录标志为从属于所述新事务。

本步骤即是将目标数据集对应的目标数据记录的“_dirty”列的值设为1,表明该条目标数据记录为脏数据,即是该条目标数据记录所属的事务还没有提交。

步骤407:将所述目标数据集的事务编号更新为所述新事务的事务标识。

本步骤即是将目标数据记录中“_tx_no”列的值更新为事务标识,在本实施例中即为“123abc”。

步骤408:解锁所述事务标识对应的当前事务记录。

步骤409:当所述待插入数据插入完毕后,将所述第一系统时间更新为插入完毕时的第二系统时间。

在本实施例中,当数据插入完毕后,还包括更新当前事务记录的时间戳,即将最新的系统时间更新到所属事务记录的start_time列中。假设当前事务的编号为123abc,当前的系统时间为1291739798888,则更新后的当前事务记录可以如表7所示:

表7

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  -1  -1  -1  1291739798888  Customer  1

参考图5,示出了本发明的一种基于图形数据库的数据插入方法实施例3的流程图,本实施例是在步骤206之后才可以执行的,本实施例所介绍的方法也可以称为联机事务处理系统中事务提交方法,本实施例在步骤206之后,还可以包括以下步骤:

步骤501:将所述事务标识对应的事务提交状态标识为有效。

在事务需要进行提交时,对于新插入的数据的事务提交,应用程序首先调用API接口,将事务标识传给图形数据库。

需要说明的是,在步骤501之前,还可以首先判断事务是否有效,如果事务无效,则结束本次事务提交过程,还可以返回错误信息。如果事务有效再触发步骤501的执行。其中,事务是否有效的判断方式在实施例2中已经进行了介绍,在此不再赘述。

本步骤可以理解为标记事务提交状态。查询graphic_db_tx_def,假定所属事务标识为123abc,将该条当前事务记录中is_commit列的值置为1,如表8所示:

表8

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  1  -1  -1  1291739790803  Customer  -1

步骤502:将目标数据集标识对应的目标数据记录标识为不从属于所述新事务。

在本步骤需要将已经插入数据的目标数据集对应的目标数据记录标识为不从属于一个新事务,即是更改目标数据记录的脏数据状态,具体可以为查询graphic_db_tx_def,如果当前事务记录中的associate_node的字段值Customer,则继续查询名为目标数据集标识为Customer的DataSet,将该DataSet中新插入的数据记录的“_dirty”列的值设置为-1。

步骤503:将所述目标数据记录中的目标数据集标识的字段值更新为空。

在本步骤即是将列目标数据记录中“_tx_no”的值设为null。

步骤504:删除所述事务标识对应的当前事务记录。

最后再删除事务记录,将本次提交事务的记录从名称为graphic_db_tx_def的DataSet中删除,完成事务的提交操作。

需要说明的是,如果事务提交不成功,则会执行事务回滚过程,参考图6,示出了本发明的一种基于图形数据库的数据插入方法实施例4的流程图,本实施例是在步骤206之后才可以执行的,本实施例所介绍的方法也可以称为联机事务处理系统中事务回滚方法,本实施例在步骤206之后,本实施例可以包括以下步骤:

步骤601:将所述事务标识对应的事务回滚状态标识为有效。

在应用程序调用API之后,联机事务处理系统将事务标识传给图形数据库。

图形数据库具体可以首先判断事务是否有效,如果事务无效,则结束本次事务回滚操作,还可以返回错误信息。

如果事务有效则标记事务回滚状态,具体要查询graphic_db_tx_def,假定所属事务标识为123abc,则将当前事务记录中is_rollback列的值置为1,如表9所示:

表9

  tx_no  is_commit  is_rollback  is_timeout  Start_time  associate_node  processing  123abc  -1  1  -1  1291739790803  Customer  -1

步骤602:删除与所述目标数据集标识对应目标数据记录。

在本步骤中需要删除脏数据。即是通过查询graphic_db_tx_def,获得当前事务记录中的列associate_node的值,假设该列的值为Customer,则继续查询目标数据集标识为Customer的DataSet,将该DataSet中新插入的数据记录删除。

步骤603:删除与所述事务标识对应的当前事务记录。

最后再将当前事务记录也进行删除。因为将本次回滚事务的数据记录从名称为graphic_db_tx_def的DataSet中删除,才能完成事务的回滚操作。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

参考图7,示出了本发明的一种基于图形数据库的联机事务处理系统实施例1的结构框图,可以包括以下模块:

创建模块701,用于创建一个新事务;

接收模块702,用于接收所述新事务的事务标识、待插入数据和图形数据库中的目标数据集标识;

锁定模块703,用于所述事务标识对应的当前事务记录,以便于图形数据库的当前操作为所述新事务下的数据插入;所述数据插入具体包括:将所述目标数据集标识添加至所述当前事务记录的关联节点字段中,并将所述待插入数据写入所述目标数据集;

解锁模块704,用于解锁所述事务标识对应的当前事务记录。

如果在插入数据之后,需要将事务提交,则除了图7所示的模块之外,参考图8,基于图形数据库的联机事务处理系统还应该包括以下模块:

标识提交状态模块801,将所述事务标识对应的事务提交状态标识为有效。

标识脏数据模块802,用于将目标数据集标识对应的目标数据记录标识为不从属于所述新事务;并将所述目标数据记录中的目标数据集标识的字段值更新为空。

第一删除模块803,用于删除所述事务标识对应的当前事务记录。

如果在插入数据之后,需要进行事务回滚,则除了图7所示的模块之外,参考图9,基于图形数据库的联机事务处理系统还应该包括以下模块:

标识回滚状态模块901,用于将所述事务标识对应的事务回滚状态标识为有效。

第二删除模块902,用于删除与所述目标数据集标识对应目标数据记录。

第三删除模块903,用于删除与所述事务标识对应的当前事务记录。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种应用于图形数据库联机事务中的数据插入方法及应用于图形数据库联机事务中的数据插入系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号