图数据库基础知识
图数据库以图这种数据结构为基础,可以保存任意种类的数据,以下图为基础,简单介绍Neo4j中的几个简单概念:
1.节点(Nodes)
表示图数据库的实体(entities),代表图数据库中的数据记录。上图中的圆角矩形即代表图数据库中的一个节点。
2.关系(Relationships)
描述节点之间的关系,关系总是有方向并且有一个类型的,一个节点也可以和自己有关系。上图中的箭头便代表关系,ACTED_IN和DIRECTED表示关系的类型。
3.属性(Properties)
用来保存数据,表示方法为name/value对,属性值可以有多种数据类型,比如数字、字符串和布尔值。节点和关系都可以有自己的属性,比如name='Tom Hanks’是一个节点的属性,roles=[‘Forrest’]是一个关系的属性。
4.标签(Labels)
用来关联一系列相关的节点,表示一组相关节点的域,没有属性。比如表示人的节点可以使用标签:Person
,表示关系的类型为出演也使用标签:ACTED_IN
。在执行图数据库操作时可以在限定的标签域上进行。
5.模式(Schema)
Neo4j中的模式指的是索引(indexes)和约束(constraints)。不过Neo4j中的模式是可选的,即创建索引和约束不是必须的。索引可以提高性能,约束可以确保数据遵守领域规则。
6.Neo4j命名规则
Neo4j官方给出了推荐的命名规则,注意Neo4j中的命名是大小写敏感的:
- 节点标签(Node label):推荐首字母大写的驼峰命名,如VehicleOwner
- 关系类型(Relationshio type):大写字母结合下划线,如OWNS_VEHICLE
- 属性(Property):首字母小写的驼峰命名,如firstName
Neo4j Browser
Neo4j Browser是一个命令驱动的客户机,适合运行即时的图查询语句。下载Neo4j Desktop之后,启动工程后,在浏览器输入http://localhost:7474/browser/ 便可以使用。在Neo4j Browser中:
- 开发人员只需要注重使用Cypher编写和运行图查询语句
- 任何查询结果可以导出为表格
- 查询结果可以使用包含节点和关系的可视化图形展示
- Cypher语句编辑框在浏览器上部,起始符为$。若想多行输入,以< shift+enter > 换行,使用< ctrl+enter >运行查询。
Neo4j Browser中也有指导教程,在编辑框输入:play start
便可以开始探索Neo4j Browser了。
Neo4j基础语法
1.节点语法(Node Syntax)
Neo4j中使用
()
代表一个节点
() # 一个匿名无特征地节点
(matrix) # 拥有变量名matrix的节点,其他地方可以通过变量名使用
(:Movie) # 声明节点标签为Movie,限制了匹配的模式
(matrix:Movie) # 既赋变量名又声明标签的节点
# {}表示节点属性,用来存储信息或限制模式
(matrix:Movie{
title:"the matrix"})
(matrix:Movie{
title:"the matrix",released:1997})
2.关系语法(Relationship Syntax)
Neo4j中使用一对虚线
--
表示无向关系,有向关系在尾部会有箭头,比如<--
和-->
。中括号表达式[...]
用来为关系添加详细信息,比如变量名、类型和属性。
-->
-[role]-> #定义关系的变量名为role,其他地方可以使用
-[:ACTED_IN]-> # 定义关系的类型为ACTED_IN
-[role:ACTED_IN]-> # 同时定义关系的变量名和类型
-[role:ACTED_IN {
roles