【Neo4j】- 轻松入门图数据库

news2024/10/19 20:46:30

文章目录

  • 前言-场景
  • 一、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.软件部署

  1. 解压文件,到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 属性包括原子性、一致性、隔离性和持久性,有助于确保数据的有效性。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2218742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Aspose.PDF功能演示:使用 JavaScript 从 PDF 中提取文本

在数据提取、业务文档自动化和文本挖掘方面,使用 JavaScript 从PDF中提取文本非常有用。它允许开发人员自动执行从 PDF 收集信息的过程,从而显著提高处理大量文档的生产力和效率。在这篇博文中,我们将学习如何使用 JavaScript 从 PDF 中提取文…

功能安全实战系列-软件FEMA分析与组件鉴定

本文框架 前言1. 功能安全分析1.1 Why1.2 What?1.3 How?1.3.1 分析范围确定1.3.2 失效模式分析1.3.3 安全措施制定1.3.4 确认是否满足功能安全目标2. 软件组件鉴定2.1 Why2.2 How?前言 在本系列笔者将结合工作中对功能安全实战部分的开发经验进一步介绍常用,包括Memory(Fl…

stable diffusion 大模型及lora等下载安装使用教程及项目目录说明

首先说明,stable diffusion大模型并非controlNet中使用的模型,这两者有根本的区别,请仔细区分。 国内可下载模型的站点: 哩布哩布 https://liblib.ai 模型分为几类,下载的时候看清楚类型,都会标记在模型…

Python编程探索:从基础语法到循环结构实践(下)

文章目录 前言🍷四、 字符串拼接:连接多个字符串🍸4.1 使用 操作符进行字符串拼接🍸4.2 使用 join() 方法进行字符串拼接🍸4.3 使用 format() 方法进行格式化拼接🍸4.4 使用 f-string(格式化字…

【Linux】进程池

目录 进程池 进程池的概念: 手搓进程池: 1、创建信道和子进程 2、通过channel控制子进程 3、回收管道和子进程 进程池 进程池的概念: 定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中…

Linux fork函数

目录 0.前言 1.fork函数初识 2.写时拷贝 3.fork常规用法 4.fork调用失败的原因 5.小结 (图像《分叉之光:科幻视角下的Linux进程复制》由AI生成) 0.前言 在Linux操作系统中,进程是系统资源管理的核心单元。每一个程序的执行都对…

机器学习(MachineLearning)(8)——模型评估与优化

机器学习(MachineLearning)(1)——机器学习概述 机器学习(MachineLearning)(2)——线性回归 机器学习(MachineLearning)(3)——决策树…

Java网络编程-简单的API调用

Get请求 - 无参数 安装依赖库 首先需要安装一个库&#xff1a; Okhttp3&#xff0c;这是一个非常流行的 HTTP 库&#xff0c;可以简单、快速的实现 HTTP 调用。 安装 Okhttp3 的方式是在 pom.xml 文件中增加依赖&#xff1a; <!-- https://mvnrepository.com/artifact/co…

【Vue.js设计与实现】第三篇第9章:渲染器-简单Diff算法-阅读笔记

文章目录 9.1 减少 DOM 操作的性能开销9.2 DOM 复用与 key 的作用9.3 找到需要移动的元素9.4 如何移动元素9.5 添加新元素9.6 移除不存在的元素 系列目录&#xff1a;【Vue.js设计与实现】阅读笔记目录 当新旧vnode 的子节点都是一组节点时&#xff0c;为了以最小的性能…

PSPICE FOR TI笔记记录1

快捷放置器件 R旋转 连线 w,单击器件引脚方块部分 电压探测笔 创建仿真文件 Analysis Type 分析模式&#xff1a;比如时域分析&#xff0c;频域分析 Run To Time 仿真时长 Skip intial transient bias point calculation (跳过初始瞬态偏置点计算(SKIPBP))一定要勾选 编辑…

高级语言源程序转换为可执行目标文件

将高级语言源程序转换为可执行目标文件的过程通常包括以下几个主要步骤&#xff1a; ​ 1. 预处理&#xff08;Preprocessing&#xff09;&#xff1a; 由谁完成预处理器&#xff08;cpp&#xff09;操作处理源代码中的预处理指令&#xff08;如宏定义、文件包含、条件编译等&…

k8s 1.28.2 集群部署 harbor v2.11.1 接入 MinIO 对象存储

文章目录 [toc]提前准备什么是 HarborHarbor 架构描述Harbor 安装的先决条件硬件资源软件依赖端口依赖 Harbor 在 k8s 的高可用Harbor 部署Helm 编排YAML 编排创建 namespace导入镜像部署 Redis部署 PostgreSQL部署 Harbor core部署 Harbor trivy部署 Harbor jobservice部署 Ha…

《Sui区块链:重塑去中心化应用的新星与未来潜力》

目录 引言 一、Sui 1、 技术架构 2、 编程语言 3、Move起源 4、Move的几个关键点&#xff1a; 5、Move 智能合约编程语言 6、智能合约编程语言可以做什么 7、和其他编程语言有什么不同 8、 安全性 9、开发者体验 10、生态系统 11、 未来发展 总结 引言 在区块链技…

AIGC助力小学生编程梦:C++入门不再难!

文章目录 一、AIGC时代下的编程教育新趋势二、小学生C入门趣味编程的意义三、小学生C入门趣味编程的实践策略四、面临的挑战与应对策略五、AIGC技术在小学生C编程中的应用与前景《小学生C趣味编程从入门到精通》编辑推荐内容简介作者简介目录 随着人工智能生成内容&#xff08;…

基于百度智能体开发爱情三十六计

基于百度智能体开发爱情三十六计 文章目录 基于百度智能体开发爱情三十六计1. 爱情三十六计智能体2. 三十六计开发创意3. 智能体开发实践3.1 基础配置3.2 进阶配置3.3 调优心得3.4可能会遇到的问题 4. 为什么选择文心智能体平台 1. 爱情三十六计智能体 爱情三十六计 是一款基于…

DORA 机器人中间件学习教程(6)——激光点云预处理

文章目录 1 移植思路2 代码输入输出说明3 编写CmakeList.txt文件4 编写yml文件5 编译并启动节点参考资料 在DORA中通过驱动获取激光雷达数据后&#xff0c;激光点云预处理部分代码是参考了autoware官方代码并对其进行裁剪得到的&#xff0c;点云预处理主要包含三个节点&#xf…

vue3项目使用百度地图实现地图选择功能代码封装(开箱即用)

vue3项目使用百度地图实现地图选择功能代码封装方案(开箱即用) <template><div class="bmapgl">

音视频入门基础:FLV专题(15)——Video Tag简介

一、引言 根据《video_file_format_spec_v10_1.pdf》第75页&#xff0c;如果某个Tag的Tag header中的TagType值为9&#xff0c;表示该Tag为Video Tag&#xff1a; 这时StreamID之后紧接着的就是VideoTagHeader&#xff0c;也就是说这时Tag header之后的就是VideoTagHeader&…

MySQL常用命令大全

博客主页&#xff1a;长风清留扬-CSDN博客系列专栏&#xff1a;MySQL入门到入魔每天更新大数据相关方面的技术&#xff0c;分享自己的实战工作经验和学习总结&#xff0c;尽量帮助大家解决更多问题和学习更多新知识&#xff0c;欢迎评论区分享自己的看法感谢大家点赞&#x1f4…

windows mysql 8.0版本重置root密码

1.停止mysql服务 以管理员运行cmd 2.安全模式启动 mysqld --console --skip-grant-tables --shared-memory 3.修改密码 再开个cmd窗口就可以进入了&#xff1a;mysql 先进入mysql database&#xff1a;use mysql 修改密码&#xff1a;ALTER USER rootlocalhost IDENTIFIED …