【Neo4j】- 轻松入门图数据库
文章目录
- 前言-场景
- 一、Neo4j概述
- 二、软件安装部署
- 1.软件下载
- 2.软件部署
- 3.软件使用
- 4.语法学习
- 总结
前言-场景
这里用大家都了解的关系数据与图数据据库对比着说,更加方便大家理解图数据库的作用
图形数据库和关系数据库均存储信息并表示数据之间的关系。但是,关系模型优先考虑数据实体,而图形模型优先考虑实体之间的关系。即关系数据库擅长处理具有明确定义的表间关系的结构化数据,此类数据库在跨多个表执行复杂的筛选、聚合和联接时特别有效。图形数据库有助于处理复杂的互连和查询,因为它们可以理解数据之间的关系。图形遍历算法来查询图形数据模型,这些算法采用深度优先或广度优先形式,这有助于快速查找和检索连接的数据。
一、Neo4j概述
Neo4j是一个高性能的、基于Java的图数据库,它使用原生图存储和检索技术来高效地管理数据。Neo4j中的数据以节点(Nodes)和关系(Relationships)的形式存储,每个节点和关系都可以拥有属性(Properties),这使得Neo4j在处理复杂关系网络时表现出色。以下是其他的一些数据库:https://db-engines.com/en/ranking/graph+dbms

二、软件安装部署
1.软件下载
neo4j官网下载地址:https://neo4j.com/deployment-center/
我这里用于学习使用neo4j,可以先使用windows版本。有无法访问官网的同学可以去我的下载资源里去下载对应版本的软件。

2.软件部署
- 解压文件,到bin目录下运行程序(需要管理员)
./neo4j.bat console

2. 访问浏览器查看正常访问:
地址:http://localhost:7474/

3.软件使用
- 使用用户名密码登录:
默认的用户名和密码均为neo4j
- 开始根据教程一步步学习


以下部分片段,全部代码可以在教程中进一步学习!
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})CREATE (JoelS:Person {name:'Joel Silver', born:1952})CREATE(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),(LillyW)-[:DIRECTED]->(TheMatrix),(LanaW)-[:DIRECTED]->(TheMatrix),(JoelS)-[:PRODUCED]->(TheMatrix)CREATE (Emil:Person {name:"Emil Eifrem", born:1978})CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix)CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})CREATE(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded),(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixReloaded),(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixReloaded),(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixReloaded),(LillyW)-[:DIRECTED]->(TheMatrixReloaded),(LanaW)-[:DIRECTED]->(TheMatrixReloaded),(JoelS)-[:PRODUCED]->(TheMatrixReloaded)
4.语法学习
Neo4j Cypher 查询语言
Cypher 是一种声明式图形查询语言,全球开发人员都在使用它。Cypher 由 Neo4j 创建,为属性图提供了富有表现力且高效的查询。以下是学习Neo4j的学习官网连接,建议通过官网可以更加正确快速的学习Neo4j。
- 在线学习:https://neo4j.com/product/auradb/,可以在线练习Cypher语法,导入线上案例。(需要科学上网和账号登录)
- 官网教程文档:https://neo4j.com/docs/

- Java开发文档:https://neo4j.com/docs/java-manual/current/

总结
Neo4j是图形化操作起来入手很快,深入学习则需要大量的学习了。这里再总结下Neo4j图数据库和关系型数据库的主要区别。用于让做技术选型的同学能够更好的判断应用场景。
除了采用不同的数据模型外,关系数据库和图形数据库还有许多差异,这使得它们在功能和效用存在区别。
-
可扩展性
扩展关系数据库时,通常是垂直扩展。垂直扩展是指升级硬件(例如 CPU、存储空间或内存)以增加服务器可以处理的工作负载。垂直扩展有局限性,除了成本要求外,还会带来各种问题。 关系数据库也可以使用分片进行水平扩展,即在许多服务器上分发数据。但是,分片会增加数据存储的复杂性,并可能引发一致性问题。
相比之下,图形数据库非常擅长横向扩展,并且使用分区来实现此类扩展。所有分区位于不同的服务器上,这使得许多服务器可以并行处理图形查询。通过在多个节点上分发,数据库引擎可以有效地查询数据,即使是大规模查询数据亦可轻松应对。 -
性能
图形数据库提供无索引邻接,从而提高性能。无索引邻接可让系统在相关实体之间遍历。由于图形数据库将关系存储为节点之间的引用或指针,因此数据库可以跟随内存指针在实体之间快速导航。在这种情况下,数据库不需要索引或映射表。
这种无索引邻接系统可让图形数据库实现恒定时间的关系遍历。恒定时间意味着无论数据规模如何,都可以在相同的时间量内始终如一地遍历图形数据库中的关系。节点之间的直接连接可实现即时访问,因此可以快速查询和跟踪关系。图形数据库借助这些功能实现高效操作。
另一方面,关系数据库使用索引查找,并且必须扫描表以识别实体之间的关系。可以联接多个表,但这会非常耗时,因为系统必须扫描更大的索引而非更多的数据。因此,关系数据库无法提供与图形数据库相同的性能。 -
易用性
图形数据库以关系为中心,从而可在使用连接的数据时轻松操作这些数据库。这些数据库擅长多跃点查询,在这种查询中,可以遍历具有多种关系的路径。还可以使用图形查询语言(如 Gremlin 或 Cypher)来直观地表达关系。可以使用这些语言浏览相互连接的数据,这简化了用于探索嵌套和联接数据的语法。
关系数据库使用 SQL,在管理多跃点查询时,SQL 可能会让用户感觉不自然。如果一个查询有多个联接且跨越嵌套的子查询,SQL 语句的编写就会变得困难。如果未能谨慎处理,这很容易转化为难以阅读和维护的庞大查询。
也就是说,关系数据库已经成熟,在各种使用案例中广受欢迎。可以使用多种工具和资源以及社区支持来优化系统。同样,关系数据库在以可靠且符合 ACID 的方式管理结构化数据时表现出色。ACID 属性包括原子性、一致性、隔离性和持久性,有助于确保数据的有效性。

相关文章:
【Neo4j】- 轻松入门图数据库
文章目录 前言-场景一、Neo4j概述二、软件安装部署1.软件下载2.软件部署3.软件使用4.语法学习 总结 前言-场景 这里用大家都了解的关系数据与图数据据库对比着说,更加方便大家理解图数据库的作用 图形数据库和关系数据库均存储信息并表示数据之间的关系。但是,关系…...
LeetCode 206 - 反转链表
解题思路 我们可以使用迭代的方法来实现链表的反转,这里我们先介绍迭代的方法。迭代的思路是:从头节点开始,依次将节点的next指针进行反转,使得当前节点的next指向其前一个节点,然后依次向后移动指针,直至…...
AI生成大片,Movie Gen 可以生成长视频并配上完美的音效,带给观众更好的观看体验。
之前的文章中已经给大家介绍了一些关于长视频生成相关的技术,AI生成大片已经越来越近了。感兴趣的小伙伴可以点击下面链接阅读~ Movie Gen 的工作原理可以简单理解为两个主要部分:一个是生成视频的模型,另一个是生成音频的模型。首先&#x…...
Flink on yarn模式下,JobManager异常退出问题
这个问题排除了很久,其中更换了Flink版本,也更换了Hadoop版本一直无法解决,JobManager跑着跑着就异常退出了。资源管理器上是提示运行结束,运行状态是被Kill掉。 网上搜了一圈,都说内存不足、资源不足,配置…...
面对AI算力需求激增,如何守护数据中心机房安全?
随着人工智能(AI)技术飞速发展,AI算力需求呈现爆发式增长,导致对数据设备电力的需求指数级攀升。这给数据中心带来前所未有的挑战和机遇,从提供稳定的电力供应、优化高密度的部署,到数据安全的隐私保护&…...
Connection --- 连接管理模块
目录 模块设计 模块实现 shared_from_this 模块测试纠错 模块设计 Connection模块是对通信连接也就是通信套接字的整体的管理模块,对连接的所有操作都是通过这个模块提供的接口来完成的。 那么他具体要进行哪些方面的管理呢? 首先每个通信连接都需…...
iconfont图标放置在某个元素的最右边
在网页设计中,如果你想要将iconfont图标放置在某个元素的最右边,你可以通过CSS来实现这个布局。以下是一些基本的CSS代码示例,它们可以帮助你根据不同的布局需求将图标放置在最右边: 内联元素(如<span>ÿ…...
Android10 recent键相关总结
目录 初始化流程 点击Recent键流程 RecentsActivity 显示流程 RecentsModel 获取数据管理类 RecentsActivity 布局 已处于Recent界面时 点击recent 空白区域 点击返回键 recent组件配置 Android10 Recent 功能由 System UI,Launcher共同实现。 初始化流程 …...
Ajax:原生ajax、使用FormData的细节问题,数据的载体
人生海海,山山而川,不过尔尔;空空而来,苦苦而过,了了而去 文章目录 原生ajax使用FormData的细节问题数据的载体 原生ajax 执行顺序 创建xhr对象 var xhr new XMLHttpRequest()调用xhr.open(请求方式, url)函数&#…...
【HuggingFace 如何上传数据集 (2) 】国内网络-稳定上传图片、文本等各种格式的数据
【HuggingFace 下载】diffusers 中的特定模型下载,access token 使用方法总结【HuggingFace 下载中断】Git LFS 如何下载指定文件、单个文件夹?【HuggingFace 如何上传数据集】快速上传图片、文本等各种格式的数据 上文的方法因为是 https 协议…...
GNOME桌面安装dock
Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector. sudo yum -y install chrome-gnome-shell...
移动app测试有哪些测试类型?安徽软件测试中心分享
科技信息时代,移动app的出现为我们的生活及工作带来了极大的便利。一款app从生产到上线必不可少的就是测试阶段,app测试是保障产品质量和安全的有效手段,那么移动app测试有哪些测试类型呢?安徽软件测试中心又有哪些? 1、功能性测试 需…...
Android 10.0 截屏流程
通常未通过特殊定制的 Android 系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。 这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java 中。 PhoneWindow…...
Axure零基础深入浅出的讲解
在当今的互联网产品设计领域,原型设计已经成为了产品经理、设计师和开发者之间沟通的桥梁。而Axure作为一款功能强大、灵活易用的原型设计工具,正是很多产品经理的得力助手。无论你是产品经理新手,还是资深设计师,Axure都能帮助你…...
PyTorch求导相关
PyTorch是动态图,即计算图的搭建和运算是同时的,随时可以输出结果;而TensorFlow是静态图。 在pytorch的计算图里只有两种元素:数据(tensor)和 运算(operation) 运算包括了…...
Halcon基础-瓶盖带角度的OCR批量识别
Halcon基础-OCR识别 1、OCR识别素材2、创建路径文件3、Halcon代码实现4、运行效果5、资源获取 1、OCR识别素材 这里我准备了7张不同角度的OCR图片,如下所示: 2、创建路径文件 按照下图所示创建全部文件夹和文件: 01用来存放OCR识别原图 c…...
php语法学习
启动php 进入软件 打开文件:编写代码 $php true; $java false; var_dump($php);//输出变量细节 var_dump($java) 字符串 注意可以使用双引号也可以使用单引号 测试 $php "最好学web语言"; $java 脱胎于c语言; var_dump($php);//输出变量细节 var…...
JavaWeb合集22-Apache POI
二十二、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出…...
DDD重构-实体与限界上下文重构
DDD重构-实体与限界上下文重构 概述 DDD 方法需要不同类型的类元素,例如实体或值对象,并且几乎所有这些类元素都可以看作是常规的 Java 类。它们的总体结构是 Name: 类的唯一名称 Properties:属性 Methods: 控制变量的变化和添加行为 一…...
MATLAB Simulink (二)高速跳频通信系统
MATLAB & Simulink (二)高速跳频通信系统 写在前面1 系统原理1.1 扩频通信系统理论基础1.1.1 基本原理1.1.2 扩频通信系统处理增益和干扰容限1.1.3 各种干扰模式下抗干扰性能 1.2 高速跳频通信系统理论基础1.2.1 基本原理1.2.2 物理模型 2 方案设计2…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
Copilot for Xcode (iOS的 AI辅助编程)
Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
Netty自定义协议解析
目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...
java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...
