首页> 中国专利> 图形数据库基于关系路径的节点数据过滤方法

图形数据库基于关系路径的节点数据过滤方法

摘要

本发明涉及图形数据库基于关系路径的节点数据过滤方法,包括步骤:1)以起始节点开始,按路径表达式的描述,依次查询graphic_db_relation_def数据集,获取下个节点的名称,直至路径表达式结束;2)以过滤条件对最终节点中的数据进行检索,获取匹配的数据记录;3)以刚才查询所得的各条数据记录为起点,按反转后的路径表达式的描述,依次查询graphic_db_relation_record_def数据集,获取与该条记录相关联的记录,直至路径表达式结束,获取的最终相关联的数据记录即为最终的查询结果。本发明在对图形数据库中某一节点的数据进行过滤检索时,不仅可以依据当前节点中的数据属性列作为过滤条件,而且可以通过关系路径,依据与之有关联关系的其他节点中的数据属性列作为过滤条件,提高了查询灵活性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-01-22

    授权

    授权

  • 2012-11-21

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

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

  • 2011-11-23

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

    实质审查的生效

  • 2011-09-21

    公开

    公开

说明书

技术领域

本发明涉及一种图形数据库基于关系路径的节点数据过滤方法。

背景技术

现有图形数据库系统中,数据的检索一般都基于单个节点,通过内部实现的数据结构对数据进行遍历,返回匹配的数据,无法做多个节点关联的条件检索。

发明内容

为了解决上述问题,本发明提出了一种图形数据库基于关系路径的节点数据过滤方法,它在对图形数据库中某一节点的数据进行过滤检索时,不仅可以依据当前节点中的数据属性列作为过滤条件,而且可以通过关系路径,依据与之有关联关系的其他节点中的数据属性列作为过滤条件,以提高查询灵活性。

本发明采用的技术方案如下:

一种图形数据库基于关系路径的节点数据过滤方法,其特征在于:

将图形数据库中的每一个节点Node的定义信息保存在名称为graphic_db_node_def的数据集DataSet中,该DataSet的数据结构如下:

 列名称  数据类型  说明 node_id  Number  全局唯一的ID name  String  用于保存Node的名称

用Relation描述Node与Node之间的关系,每一个Relation均有一个全局唯一的名称、一个源Node、一个目标Node,由源Node到目标Node的方向,称之为正向,由目标Node到起始Node的方向称之为反向,将每一个Relation的定义信息保存在名称为graphic_db_relation_def的DataSet中,该DataSet的数据结构如下:

  列名称  数据类型  说明  relation_id  Number  全局唯一的ID  name  String  用于保存Relation的名称  source_node  Number  源Node的ID  target_node  Number  目标Node的ID

两个通过Relation连接的Node中的数据可以建立连接,将所有数据的连接信息保存在名称为graphic_db_relation_record_def的DataSet中,该DataSet的数据结构如下:

执行以下步骤:

1)进行路径表达式的解析,以起始节点开始,按路径表达式的描述,依次查询graphic_db_relation_def数据集,获取下一个节点的名称,直至路径表达式结束,获取最终的节点名称;

2)以路径表达式后面给定的过滤条件对最终节点中的数据进行检索,获取匹配的数据记录;

3)反转路径表达式,以刚才查询所得的各条数据记录为起点,按反转后的路径表达式的描述,依次查询graphic_db_relation_record_def数据集,获取与该条记录相关联的记录,直至路径表达式结束,获取最终相关联的数据记录,这些记录即为最终的查询结果,如果在查找的过程中无记录匹配,则抛弃该条记录的中间结果。

本发明具有以下优点:对图形数据库中某一节点的数据进行过滤检索时,不仅可以依据当前节点中的数据属性列作为过滤条件,而且可以通过关系路径,依据与之有关联关系的其他节点中的数据属性列作为过滤条件,因而提高了查询灵活性。

附图说明

图1为图形数据库的架构;

图2为节点之间的关系图;

图3为数据在DataSet中的存储方式;

图4为节点之间的引用图;

图5为假定图形数据库中的数据结构;

图6为检索路径图;

图7为检索结果图。

具体实施方式

本发明涉及一种图形数据库基于关系路径的节点数据过滤方法,下面结合附图详细说明。

图形数据库概述

本发明图形数据库的架构自上而下可以分为三层。如图1所示,最上层为图形数据中各种概念对象的组织与实现。中间层为抽象的数据物理存储接口层,将物理存储的数据抽象为若干个数据集DataSet。底层为物理存储实现层,由程序借助现有的存储引擎实现,比如:传统的关系数据库,XML文件等等。

DataSet(数据集)

DataSet是图形数据库中数据的逻辑存储单元,图形数据库中的数据以及数据库自身的逻辑定义均存储在DataSet中,DataSet是一个抽象的接口,真实的数据可以通过遵循DataSet接口的实现程序存储在关系数据库、XML或自定义格式的文件中。每一个DataSet由一个全局唯一的名称和若干个列(Column)组成。DataSet中的列表支持如下两种数据类型:

  类型 说明  String 用于保存文本性的描述信息  Number 用于保存整数、浮点数等数字信息,或用来保存布尔值信息,用1表示true,用-1表示false.

表1

Node(节点)

Node为图形数据库中存储数据的逻辑单元,在图形数据库中,每一种记录实体均可抽象为Node,比如在表述一个计算机网络应用系统时,交换机中的端口、PC服务器的网卡、CPU、生产配件的厂商、我们为之提供服务的客户、系统中的用户、权限等等,每个Node拥有一个全局唯一的名称,和一些其特有的属性,用于记录配置信息,例如:相对于我们服务的客户,我们将其命名为Customer,其拥有如下属性:contractedAmount(合同总额)、industry(所属行业)、name(客户名称)、description(描述)等。在本发明中,Node的属性可以是如下类型的数据。

表2

每一个Node的定义信息均保存在名称为graphic_db_node_def的DataSet中,该DataSet的数据结构如下:

 列名称  数据类型  说明 node_id  Number  全局唯一的ID name  String  用于保存Node的名称

表3

每一个Node中所定义的属性信息保存在名称为graphic_db_node_attr_def的DataSet中,该DataSet的数据结构如下:

表4

针对于Node的定义,物理存储的DataSet类似如下两个表:

表5

表6

每一个Node的数据信息保存在与其同名的DataSet中,假设我们有一个名称为Customer的Node,该Node有如下属性:

  属性名称  数据类型  说明  RID  String  数据库内置  name  String  客户名称  contractedAmount  Number  合同金额  industry  Reference  所属行业  description  String  客户描述信息

表7

则该Node对应的DataSet结构为:

表8

物理存储的DataSet类似下表:

表9

RID(记录ID,Record ID)

在图形数据库中,每一个Node都会有一个名称为RID的属性,存储在Node中的每一条数据的RID值均是全局唯一的,作为该条记录在图形数据库中的标识。RID的数据类型为String型。每一个Node均含有该属性。RID格式为:Node名称+下划线+递增数字,一个典型的RID数值类似于如下形式:Industry_109。

Relation(关系)

每一类信息的实体均可以抽象为Node,在现实应用中,常常需要将这些Node按某种逻辑组织起来,Relation就是用来描述Node与Node之间的组织关系的。假设现在已有代表客户的Node:Customer,代表系统用户的Node:SysUser,在现实世界中,我们的一个销售人员会成为系统中的一个用户,并负责一些客户的销售、及沟通工作。因此,我们可以在SysUser与Customer之间建立一个名为SysUserServeCustomer的Relation来表述两者之间的关系。我们用图2来表述这种关系,Relation就是用于描述Node与Node之间关系的特殊对象。每一个Relation均有一个全局唯一的名称,一个源Node,一个目标Node。由源Node到目标Node的方向,我们称之为正向,由目标Node到起始Node的方向我们称之为反向。

每一个Relation的定义信息均保存在名称为graphic_db_relation_def的DataSet中,该DataSet的数据结构如下:

  列名称  数据类型  说明  relation_id  Number  全局唯一的ID  name  String  用于保存Relation的名称  source_node  Number  源Node的ID  target_node  Number  目标Node的ID

表10

针对于Relation的定义,物理存储的DataSet类似下表:

表11

按照Relation的定义,两个通过Relation连接的Node中的数据可以建立连接。所有数据的连接信息保存在名称为graphic_db_relation_record_def的DataSet中,该DataSet的数据结构如下:

表12

在应用场景中,其物理存储的DataSet类似下表:

表13

Reference(引用)

在图形数据库抽象中,一些常用的Node会与其他大部分Node有关系,这些常用的Node数据量很有限、且基本不会发生变化,比如:国家、省、市等。如果采用Relation的方式来表述的话,则需要与其他Node之间建立的大量关系,这对后期的维护将会造成一定的困难。在此种情形下,可以考虑采用Reference的形式来表述关系。一个Node通过其所拥有的属性引用另外一个Node,在其实现形式上,很大程度与RDBMS(关系数据库)的Foreign Key(外键)相类似。某一条记录的Dictionary属性中保存的是另外一个Node中数据记录的RID。考虑之前我们讨论过的Node——Customer,拥有(industry)行业这一属性,假设在我们的应用场景中,行业的数量很有限,且不会经常发生变化。则可以用Reference属性的方式引用Industry这一Node中的某条记录。数据在DataSet中的存储方式如图3所示。

在本发明中我们用虚线表示Node之间的Reference,以区别于Relation,见图4。

路径表达式语法

图形数据库中的节点与节点之间通过关系、引用相互连结起来,很类似网状的拓扑结构。在进行查询的很多场景中,我们不仅仅需要查询单个节点中的数据,还需要获取与其相关联的其它节点的数据,这需要一个描述关系路径方法。路径表达式有如下四种表达方式:

  正向关系  ->关系名称  反向关系  <-关系名称  正向引用  .源节点上引用类型属性的名称

  反向引用  .源节点上引用类型属性的名称[源节点名称]

表14

路径条件表达式语法

路径条件表达式的语法规则为:路径表达式\节点属性列名称比较运算符比较值,表达式中支持的比较运算符有:>(大于)、<(小于)、==(等于)、!=(不等于)。

一个典型的路径条件表达式格式如下:

.SomeRefer->SomeRelation<-YetAnotherRelation\ageColumn>18

包含逻辑运算符(and、or)的路径条件表达式:

(.SomeRefer->SomeRelation<-YetAnotherRelation\ageColumn>18)and

(.SomeRefer\name==‘Alex’or.SomeRefer\name==‘Annie’)

数据结构假设

假定图形数据库中的数据结构如图5。为方便表述,假设各节点中相对应的DataSet中均含有存储文本的str_col列和存储数字的num_col列,各DataSet的结构及数据如下:

表15

图中各个节点在节点定义DataSet中的定义如下:

表16

图中各个关系在关系定义DataSet中的定义如下:

表17

在保存数据关系的DataSet中的数据如下:

表18

路径条件表达式描述

综上所述,假定我们要检索N1中的数据,过滤条件为:->R2.R5\num_col==10,即以N1为起点依次经过N3、N4,最后以N4节点上的num_col列的值等于10的数据记录做为关联的过滤条件。对应的路径如图6所示:

条件过滤的详细实现方法为:

(1)以过滤条件对表达式中的终止节点进行查询。查找N4中num_col列的值等于10的数据记录,经过查询匹配后,获取RID为N4_1的记录。

(2)反转路径条件表达式中的路径部分。->R2.R5\num_col==10中的路径表达式部分为:->R2.R5,以N1为起点依次经过N3到N4结束。反转的意思是以N4为起点经由N3到N1结束。则对应的反转路径表达式为:.R5[N3]<-R2

(3)通过反向引用表达式.R5[N3]可知,N4_1的数据记录由N3节点中的数据引用,标识其引用的属性名称为R5,查询N3中所有数据,过滤数据列R5的值为N4_1的数据,通过前面的数据列表可知,N3_1、N3_2这两条数据引用N4_1。通过反向关系表达式<-R2,查询graphic_db_relation_def可知R2的源节点为N1,目标节点为N3,查询graphic_db_relation_record_def,得到N3_1是与N1_1关联,N3_2与N1_2关联。由此可知,以N4节点中RID为N4_1的记录为顶点,按路径.R5[N3]<-R2进行检索,得到的最终结果图7。

(4)遍历完路径表达式后,最后匹配的记录N1_1、N1_2是最终的查询结果。即:查询N1节点,以->R2.R5\num_col==10作为过滤条件进行查询,最后的查询结果为RID为N1_1、N1_2的两条数据。

如果在查找的过程中无记录匹配,则抛弃该条记录的中间结果。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号