当前位置:   article > 正文

图数据库Neo4j——Neo4j简介、数据结构 &; Docker版本的部署安装 &; Cypher语句的入门(1)_docker 中的 neo4j 入门

docker 中的 neo4j 入门

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文


1.Neo4j是用Java实现的开源NoSQL图数据库;
2.dokcer版本的Neo4j部署安装,数据结构介绍;
3.Cypher是Neo4j的查询语言,创建和查询入门;

Neo4j

什么是Neo4j?

Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发,2007年正式发布第一版,其源码托管于GitHtb。Neo4j作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理、软件分析、组织和项目管理、社交项目等方面。

官网:https://neo4j.com/

在这里插入图片描述

Neo4j实现了专业数据库级别的图数据模型的存储,提供了完整的数据库特性,包括ACID事务的支持、集群的支持、备份和故障转移等。

Neo4j提供了申明式的查询语言Cypher,它类似于关系型数据库中的SQL语言,其具有表现力丰富、使用简单、查询效率高、高扩展性等特点。

其中,紫色圆圈是【人】数据,橙色圆圈是【电影】数据,表示人与电影之间参演或导演的数据关系。

在这里插入图片描述

部署安装

Neo4j支持众多平台的部署安装,如:Windows、Mac、Linux等系统。Neo4j是基于Java平台的,所以部署安装前先保证已经安装了Java虚拟机。

7474是web管理工具的端口,7687是neo4j协议端口进行数据通信

docker run
-d
–restart=always
–name neo4j
-p 7474:7474
-p 7687:7687
-v neo4j:/data
neo4j:4.4.5

在这里插入图片描述

查看运行的容器

在这里插入图片描述

查看日志

在这里插入图片描述

http://119.3.162.127:7474/browser/

在这里插入图片描述

首次登录需要修改密码

在这里插入图片描述

修改后进入首页

在这里插入图片描述

查询语句入门

在这里插入图片描述

MATCH (tom:Person {name: “Tom Hanks”})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies

在这里插入图片描述

数据结构

在这里插入图片描述

  • 节点
    • 存储实体数据,在上图中,演员、电影都是节点。
  • 可以理解为关系型数据库中的表。
  • 关系
    • 存储节点之间的关系。
  • 关系只能有一个类型,必须有开始节点和结束节点以及指向。
  • 关系可以自我循环引用,但是两头永远不能为空。
  • 属性
    • 节点和关系都可以有属性,它是由键值对组成的。
  • 节点的属性可以理解为关系型数据库中的字段。
  • 关系中的属性进一步的明确了关系。
  • 标签
    • 标签是对节点的分类,这样使得构建Neo4j数据模型更加简单。
  • 在上面的电影案例中,Movie、Person就是标签

Cypher入门

Cypher是Neo4j的查询语言,类似与关系型数据库中的SQL,一些关键词来源于SQL,比如:CREATE、WHERE、RETRUN等。下面我们一起学习Cypher的基本语句。

Cypher语句的关键字对大小写不敏感。

创建数据

使用CREATE命令来创建节点、关系、属性数据。语法如下

//查询所有数据
MATCH (n) RETURN n
//删除所有节点和关系,慎用!
MATCH (n) DETACH DELETE n
CREATE (n {name: KaTeX parse error: Expected 'EOF', got '}' at position 6: value}̲) RETURN n //…Tag {name: $value}) //创建节点,指定标签
CREATE (n)-[r:KNOWS]->(m) //创建n指向m的关系,并且指定关系类型为:KNOWS

删除数据

//删除节点
MATCH (n:AGENCY {name:“航头营业部”}) DELETE n
//有关系的节点是不能直接删除的
MATCH (n:AGENCY {name:“北京市昌平区新龙城”}) DELETE n
//删除节点和关系
MATCH (n:AGENCY {name:“北京市昌平区新龙城”}) DETACH DELETE n
//删除所有节点和关系,慎用!
MATCH (n) DETACH DELETE n

查询语句

[MATCH WHERE] //条件查询
[WITH [ORDER BY] [SKIP] [LIMIT]] //查询的结果以管道的形式传递给下面的语句,聚合查询必须使用WITH
RETURN [ORDER BY] [SKIP] [LIMIT] //返回、排序、跳过、返回个数

MATCH (n) RETURN n //查询所有的数据

//查询关系,relationships()获取结果中的关系,WITH向后传递数据
MATCH path = (n:OLT {name:“北京市转运中心”}) -[*…2]->(m)
WITH n,m, relationships(path) AS r
RETURN r

在这里插入图片描述

MATCH p = (n:OLT {name:“北京市转运中心”}) --> (m:OLT) RETURN p //将查询赋值与变量

在这里插入图片描述

MATCH (n:OLT {name: “北京市转运中心”}) – (m) RETURN n,m
//查询所有与“北京市转运中心”有关系的节点

在这里插入图片描述

//查询两个网点之间所有的路线,最大深度为6,可以查询到2条路线
MATCH path = (n:AGENCY) -[*…6]->(m:AGENCY)
WHERE n.name = “北京市昌平区定泗路” AND m.name = “上海市浦东新区南汇”
RETURN path

在这里插入图片描述

按照转运次数最少

//查询两个网点之间最短路径,查询深度最大为10
MATCH path = shortestPath((n:AGENCY) -[*…10]->(m:AGENCY))
WHERE n.name = “北京市昌平区定泗路” AND m.name = “上海市浦东新区南汇”
RETURN path

在这里插入图片描述

按照费用最少

//查询两个网点之间所有的路线中成本最低的路线,最大深度为10(如果成本相同,转运节点最少)
MATCH path = (n:AGENCY) -[*…10]->(m:AGENCY)
WHERE n.name = “北京市昌平区定泗路” AND m.name = “上海市浦东新区南汇”
UNWIND relationships(path) AS r
WITH sum(r.cost) AS cost, path
RETURN path ORDER BY cost ASC, LENGTH(path) ASC LIMIT 1

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
RETURN path ORDER BY cost ASC, LENGTH(path) ASC LIMIT 1

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-muIIG4TG-1713475895232)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号