告诉大家我所知道的Neo4j(一) ——基本概念

 

    Neo4j 是什么?首先让我们看看 Neo4j 自己是怎么介绍自己的。下面是 Neo4j 官网 (www.neo4j.org) 首页上的一段话。

  The World's Leading Graph Database

Neo4j is an open-source, high-performance, enterprise-grade NOSQL graph database.

 

就像Neo4j自己介绍的:Neo4j是世界领先的图数据库。这里提到图数据库,图数据库和我们常见的关系型数据库有什么不同呢?其实感觉二者就没有什么相同之处,完全不同的两种数据组织方式。下面我们就介绍下graph database的一些基本概念,大家可以自己感觉一下。

基本概念

   Graph中最基本的组成是NodeRelationship。为了更加直观,我们看一下下面这张图,这是一个简单的社交网络。

社交网络示意图

1.Node(节点)

    NodeGraph中通常表现为Entity,比如图中的”Joe”,“Bill”等几个人所对应的数据单元均称为“Node”。

与关系型数据库不同,在Graph baseNode无类型的概念。所有Node对于Graph database来说是没有任何差别的。比如上图中Joe-OWNS->房产,在现实中我们知道“房产”和“人“是两个截然不同的类型,但是对Graph dababase来说这两个节点是没有类型差别的,都是Graph Database的一个Node而已。

另外一个与关系型数据库不同的是,NodeSchema的概念。比如同样对于“人”的Node,有的Node具有属性“Addr”,有的则有属性“Age”,等等。也就是说每个Node的属性可以各不相同,没有schema的约束。

2.   Relationship(关系)

    Node之间的通过Relationship来关联。在上图中的“KNOWS”和“OWNS”均为“Relationship”。

Node相同,Relationship也没有类型的概念。

但是Relationship有一个“Type”的说法,这点最容易引起误会。既然是说没有类型和schema概念,怎么这个地方又冒出来一个Type,这不是欺负人不认识英文吗?

relationship没有类型是说在graph database中不像关系型数据库中的表,有Person表,House表的分类,每种表都自己特定的schema结构。在Graph database中所有的relationship的处理上都是一样,没有任何差别。但是每个relationship又有type,而这个type更“像”是一个属性的含义。比如Joebill之间的relationshiptype是“KNOWS”,Joe与自己的那套房产的relationshiptype是“OWNS”。

Relationship的另一个重要特性就是Directionincomingoutgoing。分别对应图上的展示就是一个是进的方向,一个是出的方向。

如下图,体会其中relationshipTypedirection这两个特性。

realtionship

3.   Property(属性)

    NodeRelationship均可以具有Property。比如图中Joe对应的节点就具有两个属性“name”、“Addr”。同样的relationship也同样可以具有 property,比如KNOWS关系附加了property age=3”来表示“认识对方多少年”。

4.   Traversal(遍历)

    加入我们现在想在图中找到JoeDerrick之间的人际关系,我们既可以选择Joe-[:KNOWS]->Bill-[:KNOWS]->Derrick,也可以选择Joe-[:KNOWS]->Sara-[:KNOWS]->Bill-[:KNOWS]->Derrick,而我们这个在图中游走的这个过程就称之为”Traversal”。通常情况下都不会需要遍历整图,需要的只是一个Sub-Graph,获取这个sub-graph的过程就需要Traversal来完成。

5.   Path(路径)

    Path是由一个或者多个Noderelationship组成的,Path通常作为querytraversal的结果返回。像刚才我们得到的JoeDerrick的关系路线都是“path”,我们现在把两个path分别命名为path1path2.

PathLength的概念,length表示了路径中包含的relationship的数量。Path1length2path2length3.

 

    关于Graph database的基本概念就讲这些。

你可能感兴趣的:(开源,database,Graph,neo4j)