图数据库 Neo4j

1 图数据库

与传统数据库不同,图数据库在底层用图的方式存储用户定义的节点和关系。因此,在查询两个节点的联系时,可以在图上从其中一个节点开始,通过表示节点与节点之间关系的线段,到达另一节点,根据这一过程中经过的节点与关系,得到两个节点之间的联系。因此,图数据库可以高效地处理复杂网络关系。
例

2 Neo4j 的特点

2.1 特点

  • 在创建节点的同时建立关系
  • 时间复杂度在常数级别
  • 基于JVM实现
  • 有事务机制

2.2 优点

  • 数据插入和查询直观,不需要考虑表之间的联系
  • 查询的时间复杂度低,速度快
  • 有效避免并行冲突的问题

2.3 缺点

  • 插入数据速度极慢
  • 当某个节点的边特别多时,对于该节点的操作速度会大大下降

3 Neo4j 的应用

适用于修改较少,查询较多,没有超大节点(即连接的边特别多的节点)的图数据。如社交网络,推荐引擎等等。

4 Neo4j 的使用

4.1 安装

在官网上下载 Neo4j Desktop 并完成安装

4.2 创建数据库

新建 project,点击“add graph”,选择“Create a Local Graph”,输入图数据库名和密码,点击“Create”,然后点击“Start”

创建图数据库

当出现如上图的界面时,点击“Manage”,会出现如下图所示的界面,选择“Open Folder”,查看安装目录

选择“Open Browser”,在浏览器中打开

4.3 使用cypher语言

4.3.1 创建节点

create( a : Person { name : 'gtx' , number : 123456 , age : 22 } )

创建标签为 Person(即节点类型),属性 name 值为 gtx,属性number 值为123456,属性 age 为22的节点

create( b : Course { name : 'Advanced Web Tecnology' , teacher : 'dky' } )

创建标签为 Cource,属性 name 值为 Advanced Web Tecnology,属性teacher 值为 dky 的节点

4.3.2 创建关联

match(a),(b) where a.name='gtx' and b.name="Advanced Web Technology" create ( a ) - [ r : Take ] -> ( b )  return a,b

创建特点节点之间的关联,该关联标签为Take

4.3.3 查询

match ( a ) - [ r : Take ] -> ( b ) where a.number = 15302010048 return a , b

查询与number属性为15302010048的节点有Take关联的节点,返回节点本身和关联节点
返回值同上

4.3.4 修改属性值

start n = node( * ) where n.name = "gtx"  set n.age = 23  return n

把 name 属性值为 gtx 的 age 属性值改为23

4.3.5 删除节点与关联

不能单独删除有关联的节点,必须先删除关联或同时删除节点与其所有关联

match ( a ) - [ r ]  -> ( b ) where a.number = 123456  delete a , r

删除 number 属性为 123456 的节点及其所有关联

start n = node( * ) return n

显示所有节点,确认属性为 123456 的节点及其所有关联已被删除

猜你喜欢

转载自blog.csdn.net/gtx1502/article/details/81360563