什么是Neo4J? | 带你读《SpringBoot实战教程》之三十

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 本节介绍了Neo4j是一个高性能的,NOSQL图形数据库,它的安装步骤以及语法使用。

上一篇:SpringBoot实现批量文件上传 | 带你读《SpringBoot实战教程》之二十九
下一篇:SpringBoot如何整合Neo4j? | 带你读《SpringBoot实战教程》之三十一

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《SpringBoot实战教程》,主讲人杨红艳,点击查看视频内容

Neo4J介绍及安装

Neo4j是一个高性能的,NOSQL图形数据库,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

这种数据库与传统的关系型数据库有很大的差别。为了更好地帮助大家理解,来将关系型数据库与图形数据库作个比较。
关系型数据库:
我们常用的像mysql,oracle等都是关系型数据库,在关系型数据库里面对数据的处理是这样子的:对每个对象都创建一个表,对象的属性对应表里面的列
image.png
如图所示。在数据库里有条数据表示两个对象:tim,lili。在现实生活中我们会发现任何对象都是有某种联系的,那么关系型数据库里是怎样来表示这种关系呢?就比如tim和lili是好朋友,那么在数据库里怎样来表示他们的关系呢?关系型数据库里面是 这样处理的——新建一个叫relationship的表,表里面有两个字段id,friendid。
image.png
如图所示。如果我们要查找tim的朋友那么我们可以遍历relationship表就可以了。
这种数据模型会有什么问题呢?其实我们可以对这个数据模型提个问题——tim的朋友的朋友的朋友的朋友是谁?关系型数据会这样回答你的问题:首先在relationship表里面找到所有id为1(tim的id)的数据,然后拿到对应的friendid,接着逐个根据friendid再进行遍历找到对应的friendid,如此反复地遍历查询......
也许10分钟也许一小时,也许它永远都无法回答你的问题。
其实,这种关系只要超过5级关系型数据库就无法解决问题,这就是为什么需要图形数据库的出现了。
图形数据库:
在图形数据库里面对数据的处理是这样子的:每个对象都表示成为一个节点(node),每个节点之间的联系表示成关系(relationship),节点与节点之间用关系关联在一起。我们可以看图更好理解一点。
image.png
如图所示,有三个节点(node)它们都通过FRIEND关系(relationship)关联起来。Tim的朋友是lili,lili跟jack互为朋友,同时jack认识tim。在图形数据库里要回答像“tim的朋友的朋友的朋友”的问题非常简单,数据库只需要找到tim的关系(relationship)所对应的节点然后找到对应节点的关系(relationship),只需遍历几次,这样就可以很容易回答了上面的问题了。

安装

1、官网下载windows环境下的安装包
2、解压,比如目录为E:neo4j
3、设置环境变量
变量名:NEO4J_HOME
变量值:E:neo4j
再修改变量path,增加%NEO4J_HOME%bin
4、查看并编辑配置参数
%NEO4J_HOME%confneo4j.conf
5、启动
在DOS命令行窗口,执行:neo4j.bat console
image.png
出现此界面,证明可以正常启动。
6、 打开neo4j集成的浏览器
http://localhost:7474/
第一次打开需要登录。默认的登录名和密码都是:neo4j
image.png

使用Cypher语言:Cypher是专门为图像数据库设计的语言,它浅显易懂。举个例子,假如要创建这么一个数据模型——好友A与好友B是朋友关系,好友B与C也是朋友关系,好友A认识C但C不认识A——这样的数据模型用Cypher描述如下:

create (A:Person{name:'jack'})-[:Friend]->(B:Person {name:'tom'})-[:Friend]->(C:Person {name:'lucy'}), (A)-[:Know]->(C)

(注:()里面的是节点,[]里面的是关系,{}里的是属性, >表示关系的方向)

要查询A的一个名叫”tom”的朋友:

match (a)-[:Friend]->(b)
where b.name='tom'
return b

配套视频

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5天前
|
存储 Java Maven
Spring Boot WebFlux 增删改查完整实战 demo
Spring Boot WebFlux 增删改查完整实战 demo
|
1月前
|
Java 应用服务中间件 测试技术
深入探索Spring Boot Web应用源码及实战应用
【5月更文挑战第11天】本文将详细解析Spring Boot Web应用的源码架构,并通过一个实际案例,展示如何构建一个基于Spring Boot的Web应用。本文旨在帮助读者更好地理解Spring Boot的内部工作机制,以及如何利用这些机制优化自己的Web应用开发。
52 3
|
1月前
|
安全 Java 开发者
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
29 1
|
1月前
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
85 3
|
1月前
|
安全 Java 测试技术
Spring Boot集成支付宝支付:概念与实战
【4月更文挑战第29天】在电子商务和在线业务应用中,集成有效且安全的支付解决方案是至关重要的。支付宝作为中国领先的支付服务提供商,其支付功能的集成可以显著提升用户体验。本篇博客将详细介绍如何在Spring Boot应用中集成支付宝支付功能,并提供一个实战示例。
104 2
|
26天前
|
Java 数据库 Spring
springboot 解耦、隔离、异步的原则以及实战
【5月更文挑战第30天】在Spring Boot中实现解耦、隔离和异步的原则,能够提升应用程序的可维护性、可扩展性和性能。下面我会先介绍这三个原则的基本概念和意义,然后通过实战示例展示如何在Spring Boot应用中应用这些原则。
42 1
|
27天前
|
IDE Java Maven
Springboot中Processor注解概念以及实战案例
【5月更文挑战第28天】在Spring Boot中,没有直接名为Processor的注解。不过,你可能是在谈论与Spring Boot相关的注解处理器(Annotation Processors)的概念,尤其是在处理自定义注解或@ConfigurationProperties注解时的情况。
35 1
|
12天前
|
前端开发 Java 测试技术
【SpringBoot】单元测试实战演示及心得分享
【SpringBoot】单元测试实战演示及心得分享
16 0
|
1月前
|
Java 开发者 Spring
springboot DDD的概念以及实战
【5月更文挑战第15天】领域驱动设计(Domain-Driven Design,简称DDD)是一种软件设计方法论,它强调基于业务领域的复杂性来构建软件
93 2
|
1月前
|
开发框架 监控 Java
深入探索Spring Boot的监控、管理和测试功能及实战应用
【5月更文挑战第14天】Spring Boot是一个快速开发框架,提供了一系列的功能模块,包括监控、管理和测试等。本文将深入探讨Spring Boot中监控、管理和测试功能的原理与应用,并提供实际应用场景的示例。
30 2