领域对象
Neo4j中的信息主要通过如下4个基本的构建块表示:
- Node(又叫做vertex)——从概念上来说,这类似于对象实例,拥有唯一的ID。
- Relationship(又叫做edge)——它连接了两个Node,此外还有方向和[RelationshipType](http://api.neo4j.org/current/org/neo4j/graphdb/RelationshipType.html)。
- Property(又叫做attribute)——他们是字符串类型的key/Object值对,Node与Relationship都有Property。
- Labels --标签
neo4j中木有scheme的概念,所有的数据都是以节点(node)和关系(relationship)的形式进行存储。
实例演示
一个叫Robert Zemeckis的人(出生于1952年),在导演了一部叫做“Forrest Gump”的电影(1994年上映)。一个叫Tom Hanks的人(出生于1956)参演了这部电影,扮演角色的名称叫做“Forrest”。
针对上面的关系图进行数据模型抽取:
三个节点:
(p1:Person{name="Tom Hanks",born=1956}),
(p2:Person{name="Robert Zemeckis",born=1951}),
(m1:Movie{title="Forrest Gump",released=1994}).
两个关系:
p1 -[:ACTED\_IN{roles:"Forrest"}]->\(m1\),
p2 - \[:DIRECTED\]->\(m1\).
两个标签:
Person、Movie
存储结构
- Node和Relationship 的 Property 是用一个 Key-Value 的双向列表来保存的;
- Node 的 Relatsionship 是用一个双向列表来保存的;
- Node对象中只保存到第一个属性的引用和第一个关系的引用;