精通Neo4j
上QQ阅读APP看书,第一时间看更新

1.2 图数据库基础概念

1.2.1 图数据模型

图数据需要存储到具体图数据库中,才能最终落实为具体的数据文件,这个过程自然就涉及了特定的图数据模型,即采用什么实现方式来保存图数据。常用的有三种:属性图(Property Graphs)、超图(Hypergraphs)和三元组(Triples)。下面分别讨论每种模型。

1.2.1.1 属性图

属性图模型直观更易于理解,能描述绝大部分图使用场景,也是当下最流行的图数据模型。Neo4j采用的就是这种属性图模型。符合下列特征的图数据模型就称为属性图:

● 包含节点和关系。

● 节点可以有属性(键值对)。

● 节点可以有一个或多个标签。

● 关系有名字和方向,并总是有一个开始节点和一个结束节点。

● 关系也可以有属性。

1.2.1.2 超图

超图是一种更为广义的图模型。在超图中,一个关系(称作超边)可以关联任意数量的节点,无论是开始节点端还是结束节点端,而属性图中一个关系只允许一个开始节点和一个结束节点,因此,超图更适用表示多对多关系。比如常见的房产拥有关系,如图1-4所示,在房产证上张三与李四共同拥有三套房,在超图中就只需一条超边(拥有)就能表示出来。

但现实中,仅仅一条超边来表示拥有关系,可能会隐藏很多细节,例如房产证中每套房张三、李四各自占有的比率,因此,如果用属性图来表示将更为丰富,一条超边将转化为6条属性图中的关系,如图1-5所示。

图1-4 房产拥有关系超图表示

图1-5 房产拥有关系属性图表示

1.2.1.3 三元组

三元组思想来源于语义义(Semantic Web),虽然迄今为止,只有很少的网络资源是用语义义来表示的,但研究人员发现可以使用带语义的标签网来表示图数据。三元组是一个包含主谓宾的数据结构,例如张三和李四拥有三套房子等。显然,单个三元组的语义还是比较有限,需要借助资源描述框架(Resource Description Framework,RDF)来增强其知识推理及数据关联性。由于按三元组模型来实现的图数据库产品很少,在此不作进一步介绍,有兴趣的读者可以深入查阅语义义的相关资料。