neo4j介绍
经常进警局的人都知道,警察在锁定犯罪嫌疑人前,通过分析嫌疑人之间的关系网络,可以挖掘出关键联系人和潜在凶手。
像这种少量节点(如5人)可用关系型数据库存储一条一条存储。
如果我搬出红楼梦,去做出其中出现的人物网络关系图(结点多,关系复杂),阁下又将怎么应对?
再用传统的关系数据库,想必肯定做不了这件事情。所以我们现在提出来一个东西——图数据库
图数据库优势: 专门设计用于存储和查询高度互联的数据,比关系型数据库更适合处理复杂网络关系。
我们现在说的知识图谱,大部分时候也都是用neo4j这个图数据库去做的
- 选择理由:
- 用户基础: 使用人数最多,社区支持完善
- 学习资源: 官方和开源模板丰富,降低学习成本
- 问题解决: 报错时容易找到解决方法
- 提供多种语言接口,包括Java和Python
neo4j的相关教程: https://www.w3cschool.cn/neo4j/neo4j_need_for_graph_databases.html(很实用的编程学习网站)
neo4j的下载网上教程很多,这里不再介绍
演示使用neo4j通过官方示例做一些基本操作
1、打开neo4j,在命令提示符中输入neo4j.bat console,成功启动后,再在浏览器中输入http://localhost:7474/,打开的界面如下
2、按照以下步骤操作,执行官方的电影图
3、点击执行之后,弹出相关执行操作的解释
3.1、创建电影图
3.2、查找名为Tom hanks的结点
3.3查找结点标签为Person,并返回10个person的name
3.4、查找标签为Person,name为Tom hanks的结点饰演的电影
3.5、找个人把Tom Hanks介绍给Tom Cruise
3.6、快速清空数据库
neo4j的增删改查
(先熟悉一下基本的neo4j中的相关操作,实际用的话需要与python交互,用脚本去写)
对于数据库的语法,第一点没必要去背,第二点你也不也不可能背下来,那怎么办?——现用现查
增
增加一个节点
create( n: Person {name: '我', age: 31})
带有关系属性
create (p:Person {name:"李四",age:"31"})-[:包工程{金额:10000}]->(n:Person {name:"王二",age:"35"})
删:
create(n:Person{name:'闰土',age:31})
match(n:Person{name:"闰土"}) delete n
删除关系
match (p:Person {name:"李四",age:"31"})-[f:包工程]->(n:Person {name:"王二",age:"35"}) delete f
改:
加上标签
match( t: Person) where id(t) = 789 set t:好人 return t
加上属性
match (a:好人)where id (a)=789 set a.战斗力=200 return a
修改属性
match (a:好人)where id (a)=789 set a.战斗力=500 return a
查:(查操作太多 直接参考neo4j的例子就好)
match (p:Person)-[:包工程]->(n:Person) return p,n
快速清空数据库:
MATCH(n)
DETACH DELETE n
基本上neo4j图数据库大概内容就这些,有时间我再精细一下,下篇搞一个使用python操作neo4j