图形数据库联机事务中查询数据的控制方法

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

发明内容
为了解决上述问题,本发明提出了一种图形数据库联机事务中查询数据的控制方法,以实现对联机事务的查询。本发明采用的技术方案如下一种图形数据库联机事务中查询数据的控制方法,其特征在于联机事务处理自上而下分为三层最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用 Java语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集Datakt中,该Datakt的数据结构如下
权利要求
1. 一种图形数据库联机事务中查询数据的控制方法,其特征在于 联机事务处理自上而下分为三层 最上层为暴露给外部调用程序的API ;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之间均处于等待状态,该机制利用Java 语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;将图形数据库中联机事务的状态数据存储在名称为graphiC_db_tX_def的数据集 DataSet中,该Datakt的数据结构如下列名称数据类型说明txnoNumber事务ID,全局唯一的IDis—commitNumber该列的值为1或一 1,用于标识事务是否已提交,当值为-ι时表示未提交,当值为1时表示已提交。is—rollbackNumber该列的值为1或一 1,用于标识事务是否已回滚,当值为-ι时表示未回滚,当值为1时表示已回滚。istimeoutNumber该列的值为1或一 1,用于标识事务是否已过期,当值为-1时表示尚未过期,当值为1时表示已过期。starttimeNumber用于记录该事务最后一次进行操作的时间,值为W70年1月1 日0时0分0秒到当前时间的累计毫秒数。associatenodeString该事务相关联的Node,当开启事务后,在事务中对任何Node 进行增、删、改操作后,需将该Node的名称记录在当前列表中,多个Node的名称之间以逗号进行分隔。processingNumber该列的值为1或一 1,用于标识该事务是否有增、删、改的操作正在进行处理中,当值为-ι时表示否,当值为1时表示正在处理中。在同一事务中,同一时间只允许处理一个操作。将图形数据库中的每一个节点Node的定义信息保存在名称为graphiC_db_n0de_def 的数据集DatMet中,该DatMet的数据结构如下列名称数据类型说明node—idNumber全局唯一的IDnameString用于保存Node的名称用Relation描述Node与Node之间的关系,每一个Relation均有一个全局唯一的名称、一个源Node、一个目标Node,由源Node到目标Node的方向,称之为正向,由目标Node 到起始Node的方向称之为反向,将每一个Relation的定义信息保存在名称为graphic_db_ relation_def的DataSet中,该DataSet的数据结构如下 列名称数据类型厂说明
2.如权利要求1所述的图形数据库联机事务中查询数据的控制方法,其特征在于在所述步骤1)中,API传入的参数包括n0de_name,指定进行查询的起始节点名称;fetch_path,以路径表达式的形式指定返回的关联节点数据;filter,过滤条件;tx_no,事务编号。
3.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于 在所述步骤2~)中,检查事务是否有效的方法是查询名称为graphiC_db_node_def的DataSet,以API中传入的tx_n0事务编号作为过滤条件进行检索,如果存在如下情形,则事务无效记录没有找到;记录中is_COmmit列的值为1,说明事务已提交; 记录中is_rollback列的值为1,说明事务已回滚; 记录中is_time0ut列的值为1,说明事务已过期。
4.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于 在所述步骤幻中,检查目标节点是否存在的方法是查询名称为graphiC_db_n0de_def的Datakt,查找name列中的值与API中传入的node_name值相等的数据记录,如果找到相应记录,则说明目标节点存在。
5.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于 在所述步骤4)中,检查返回节点数据结果集的路径表达式是否正确的方法是解析路径表达式,以API中传入的node_name为起始点,查询名称为graphic_db_relation_def的 Datakt,根据关系表达式的方向不同,查找source_node列或target_node列中与name列相匹配的数据记录,如果记录存在,说明表达式正确,否则,说明表达式不合法。
6.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于 在所述步骤幻中,检查过滤条件是否合法的方法是a.如果过滤条件中包含路径表达式,则首先进行路径表达式合法性的检查,检查逻辑与步骤4)相同,然后获取过滤条件中的列属性名称,查询名为graphiC_db_n0de_def的 Dat必et,查看路径表达式中的最后一个节点是否包含该列,如果包含,则说明过滤条件合法;b.如果过滤条件中不包含路径表达式,则直接获取过滤条件中的列属性名称,然后查询名为graphic_db_node_def的DataSet,查看API中的传入的node_name标识的节点是否包含该列,如果包含,则说明过滤条件合法。
7.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于 在所述步骤7)中,基于路径表达式的条件查询的详细步骤如下a.反转路径表达式,以过滤条件中路径表达式的终点为起点,以其起点为终点,同时将关系的方向倒转;b.查询反转后的路径表达式的起始节点,按过滤条件获取匹配的数据记录,如果结果集中有_dirty列的值为1且_tX_no列的值与当前事务编号不相等的数据,说明该条记录为其他事务中的脏数据,将其从结果集中去除;c.以上一步查询的结果集为起点,依照反转后的路径表达式,通过查询名称为 graphic_db_relation_record_def的Datakt,递归获取与之建立关系的记录,如果记录列的值为1,且记录的_tX_no列的值与当前事务编号不相等,则说明该条记录为其他事务中的脏数据,忽略该条记录;d.反转路径表达式终点节点的关联记录即为当前过滤条件的查询结果。
8.如权利要求2所述的图形数据库联机事务中查询数据的控制方法,其特征在于在所述步骤8)中,简单查询的详细步骤如下查询API中传入的nodmame参数指定的节点,按过滤条件对其中的记录进行匹配,获取与过滤条件相符合的记录,如果记录中_dirty列的值为1并且_tX_no列的值与当前事务编号不相等,则说明该条记录为其他事务中的脏数据,将该条记录从结果集中去除。
全文摘要
本发明涉及图形数据库联机事务中查询数据的控制方法,包括步骤1)客户程序调用API;2)检查事务是否有效,无效则本次调用结束并返回错误信息,反之继续;3)检查目标节点是否存在,不存在则退出,否则继续;4)检查返回节点数据结果集的路径表达式是否正确,不正确则退出,否则继续;5)检查过滤条件是否合法,不合法则退出,否则继续;6)检查过滤条件中是否包含路径表达式,包含则进行基于路径表达式的查询步骤7),否则进行简单查询步骤8);7)执行基于路径表达式的条件查询,转步骤9);8)进行简单查询;9)将查询后的结果集返回给API调用者,本次查询结束。本发明具有事务隔离的特性,某联机事务内的查询不会受到其他联机事务或非联机事务的影响。
文档编号G06F17/30GK102193982SQ20111007295
公开日2011年9月21日 申请日期2011年3月25日 优先权日2011年3月25日
发明者于洪方, 井卫军, 刘健, 蒋建平, 陈升, 陈晞 申请人:北京世纪互联工程技术服务有限公司, 北京云快线软件服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1