neo4j图数据库基本概念

简介:本文以电影关系图为例,解释neo4j图数据库中的基本概念

电影关系图

下图中的圆圈表示三个节点(node),每个节点都有表示类别的标签(label)和属性(properties),如:name、born、title、released,节点之间用单向箭头连接表示节点间的关系(relationships),如:ACTED_IN、DIRECTED

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MyWLOPT6-1656069356588)(F:/Backup/img/graph_simple.png)]

以下Cycher语句可生成上述图结构

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})-[:ACTED_IN {roles: ['Forrest']}]->(:Movie {title: 'Forrest Gump'})<-[:DIRECTED]-(:Person {name: 'Robert Zemeckis', born: 1951})

节点 node

电影关系图中每一个圆圈都表示一个节点(node),每个节点表示一个实体,下面具体分析第一个节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hui2IOn9-1656069356589)(F:/Backup/img/graph_single_node.png)]

节点中的PersonActor为节点的标签(label),能将有着相同标签的节点划分到同一个类中,类似于Java中类的概念。节点可拥有多个标签,标签间的关系类似于类间的关系(继承),本节点中Actor可看做是Person的子类;

name:'Tom Hanks' born:1956为节点的属性(properties),类似于Java类中的属性

java实现代码如下

public class Person{
    String name;
    long born;
}
class Actor extends Person{}

该节点可由以下Cypher语句生成

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})

语句解释:

  1. 创建节点所属的标签:Person:Actor
  2. 以键值对(key-value pairs)的形式声明属性,并大括号{}括起

关系 relationship

描述相互连接的始末节点间如何关联(describes how a connection between a source node and a target node are related),关系可以将节点构成链表(list)、树(tree)、图(map)、复合实体。

特点:

  1. 有方向且单方向
  2. 必须有一个类型(type)以定义是何种关系
    Must have a type (one type) to define (classify) what type of relationship it is.
  3. 节点可以由指向自己的关系
  4. 关系可以有属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxXMjQEd-1656069356590)(F:/Backup/img/graph_example_relationship.png)]

上图关系的类型(type)是ACTED_IN,属性为roles: ['Forrest']performance: 5

Cypher语句为:

CREATE ()-[:ACTED_IN {roles: ['Forrest'], performance: 5}]->()

()表示节点

-[:ACTED_IN {roles: ['Forrest'], performance: 5}]->为声明关系的语句,键值对同样表示属性(properties)

属性 properties

属性是以键值对的形式描述节点(node)和关系(relationships)的数据

属性可以是各种数据类型,如:numberstringboolean;可以是存储同类数据的array或list,如:stringsnumbersbollean values

CREATE (:Example {a: 1, b: 3.14})  // 属性a存储integer类型的值1,属性b存储float类型的数据
CREATE (:Example {c: 'This is an example string', d: true, e: false})
CREATE (:Example {f: [1, 2, 3], g: [2.71, 3.14], h: ['abc', 'example'], i: [true, true, false]})

其他概念

图数据库中的其他概念暂时不做详述,如:Traversals(遍历)、paths(路径)、Schema、Indexes(索引)、Constraints(约束)

补充

电影数据库为neo4j的官方样例,可使用:guide movie-graph命令查看。关于属性、标签等概念可以借助以下查询语句验证和理解。

Match (n) 
return ID(n) as id, properties(n) AS properties, labels(n) AS label

neo4j中的命名规范

节点的标签、关系的类型、属性都是大小写敏感的,例如:属性nameName,一下为neo4j官方推荐的命名规范

Graph entityRecommended styleExample
Node labelCamel case, beginning with an upper-case character:VehicleOwner rather than :vehice_owner
Relationship typeUpper case, using underscore to separate words:OWNS_VEHICLE rather than :ownsVehicle
PropertyLower camel case, beginning with a lower-case characterfirstName rather than first_name

对比图论

在图论中,节点也称为顶点(vertices )或点(point)
关系也称为边(edges)、链接(links)或线(lines)

创建节点

创建节点的语法中,可将节点名命名为n。因为节点名不作为唯一标识,类似于临时变量,使用相同的节点名不会影响数据库的创建

CREATE (n:Person {name:'Sally'}) RETURN n
CREATE (n:Person {name:'Steve'}) RETURN n
CREATE (n:Person {name:'Mike'}) RETURN n

neo4j图片导出

若导出为svg,可使用vscode或notepad编辑内容,查找font-size设置字体大小,查找font-family设置字体格式,然后使用photoshop将svg导出为png或借助在线转png的网站

neo4j交互设置

点击任一节点,出现一个灰色的圈,分别表示固定节点的位置、隐藏节点、显示与该节点有关系的其他节点

右侧点击节点的标签Person,可以调整节点的颜色和大小

点击箭头,可以设置表示关系箭头的粗细和颜色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GA4QPan5-1656069356591)(F:/Backup/img/image-20220624190647695.png)]


参考文章:

meo4j 4.4 官方文档 Graph database concepts

Neo4j图数据库中文文档—neo4j 0.1.0a documentation

基于Neo4j构建电影图谱 - 知乎 (zhihu.com)

neo4j 图数据库节点名、标签名、属性名 - 简书 (jianshu.com)

neo4j导出高清图片并调整字体 - 知乎 (zhihu.com)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Neo4j是一种高性能的数据库,它以的形式存储和处理数据。以下是Neo4j数据库基本概念和组件: 1. (Graph):Neo4j使用来表示数据模型,由节点(Nodes)和关系(Relationships)组成。节点表示实体,关系表示节点之间的连接。 2. 节点(Node):节点是中的基本单元,用于表示实体。每个节点可以有多个属性(Properties),属性用于描述节点的特征。 3. 关系(Relationship):关系用于连接节点,表示节点之间的关联关系。关系可以有方向和类型,并且可以具有属性。 4. 属性(Properties):属性是节点和关系的特征描述,以键值对的形式存储。属性可以用于存储节点和关系的各种信息。 5. 标签(Label):标签用于对节点进行分类和组织。一个节点可以有多个标签,标签可以用于快速检索和过滤节点。 6. 查询语言(Cypher):Cypher是Neo4j的查询语言,它类似于SQL,但专门用于数据库。通过Cypher语言,可以对数据库进行查询、插入、更新和删除操作。 7. 索引(Index):索引用于加速节点和关系的查找。Neo4j支持多种类型的索引,包括唯一索引、全文索引等。 8. 事务(Transaction):事务用于保证数据的一致性和完整性。在Neo4j中,可以通过事务来执行一系列的数据库操作,并确保这些操作要么全部成功,要么全部失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值