发明名称 图形数据库非联机事务中删除数据的控制方法
摘要 本发明涉及图形数据库非联机事务中删除数据的控制方法,包括步骤:1)客户程序调用API,将参数数据传给图形数据库;2)进入同步区;3)确定待删除数据;4)检查待删除数据是否被事务锁定,若锁定则转步骤8),否则继续执行下面的步骤;5)检查与待删除数据相关的Relation是否被事务锁定,若锁定则转步骤8),否则继续执行下面的步骤;6)从DataSet中物理删除在步骤3)中确定的待删除数据;7)退出同步区,程序结束;8)等待一段时间;9)判断操作是否超时,若超时则退出执行逻辑,否则转步骤2)再次进入同步区。本发明的优点是作为联机事务中删除数据的有效补充,在删除数据的应用场景中,如无需开启联机事务,则可调用非联机事务的API直接删除数据。
申请公布号 CN102193978B 申请公布日期 2012.12.05
申请号 CN201110072939.5 申请日期 2011.03.25
申请人 北京世纪互联宽带数据中心有限公司 发明人 陈升;于洪方;井卫军;蒋建平;陈晞;刘健
分类号 G06F17/30(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京北新智诚知识产权代理有限公司 11100 代理人 张卫华
主权项 1.一种图形数据库非联机事务中删除数据的控制方法,其特征在于:非联机事务处理自上而下分为三层:最上层为暴露给外部调用程序的API;中间层为事务逻辑控制层,按操作类别分为同步区与非同步区,同步区意味着在同一时间只能有一个操作进行,其他操作在进入同步区之前均处于等待状态,该同步区的机制利用Java语言的线程同步锁定特性实现,非同步区的操作则不受限制,在任何时间均可以进行;最下层为存储数据的DataSet操作抽象层,在DataSet中,保存有联机事务自身的状态信息,以及数据的事务状态属性信息;用Relation描述图形数据库中的节点与节点之间的关系,每一个Relation均有一个全局唯一的名称、一个源Node、一个目标Node,将每一个Relation的定义信息保存在名称为graphic_db_relation_def的DataSet中,该DataSet的数据结构如下:<tables num="0001"><table><tgroup cols="3"><colspec colname="c001" colwidth="24%" /><colspec colname="c002" colwidth="26%" /><colspec colname="c003" colwidth="51%" /><tbody><row><entry morerows="1">  列名称</entry><entry morerows="1">  数据类型</entry><entry morerows="1">  说明</entry></row><row><entry morerows="1">  relation_id</entry><entry morerows="1">  Number</entry><entry morerows="1">  全局唯一的ID</entry></row><row><entry morerows="1">  name</entry><entry morerows="1">  String</entry><entry morerows="1">  用于保存Relation的名称</entry></row><row><entry morerows="1">  source_node</entry><entry morerows="1">  Number</entry><entry morerows="1">  源Node的ID</entry></row><row><entry morerows="1">  target_node</entry><entry morerows="1">  Number</entry><entry morerows="1">  目标Node的ID</entry></row></tbody></tgroup></table></tables>两个通过Relation连接的Node中的数据可以建立连接,将所有数据的连接信息保存在名称为graphic_db_relation_record_def的DataSet中,该DataSet的数据结构如下:<img file="FDA00001667497000011.GIF" wi="1738" he="804" />执行以下步骤:1)客户程序调用API,将参数数据传给图形数据库;2)进入同步区;3)确定待删除数据;4)检查待删除数据是否被事务锁定,若锁定则转步骤8),否则继续执行下面的步骤;5)检查与待删除数据相关的Relation是否被事务锁定,若锁定则转步骤8),否则继续执行下面的步骤;6)从DataSet中物理删除在步骤3)中确定的待删除数据;7)退出同步区,程序结束;8)等待一段时间;9)判断操作是否超时,若超时则程序结束,否则转步骤2)再次进入同步区;在所述步骤1)中,API传入如下参数:node_name,指定将要删除哪个Node中的数据;filter,过滤条件;在所述步骤3)中,确定待删除数据的详细步骤如下:通过客户程序调用API时传入的filter参数作为过滤条件,对与API参数node_name同名的DataSet中的数据进行过滤,所有与过滤条件相匹配的数据均为待删除的数据记录;在所述步骤4)中,检查待删除数据是否被事务锁定的详细步骤如下:检查每一条待删除数据,如果有任何一条记录列_dirty的值为-1,且列_tx_no的值既不为空也不等于当前事务编号,则意味着在待删除数据中存在被其他事务锁定的情况;在所述步骤5)中,检查与待删除数据相关的Relation是否被事务锁定的详细步骤如下:查询名称为graphic_db_relation_record_def的DataSet,过滤获取所有source_record或target_record列的值与待删除数据的RID相等的记录,依次检查这些记录的_tx_no字段,如果有任何一条记录_tx_no列的值不为空,则意味着相关数据的Relation存在被其他事务锁定的情况。
地址 100015 北京市朝阳区酒仙桥东路1号院5号楼3层
您可能感兴趣的专利