【neo4j图数据库】入门实践篇

探索数据之间的奥秘:Neo4j图数据库引领新纪元

在数字化浪潮汹涌的今天,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据关系的日益复杂,传统的关系型数据库在处理诸如社交网络、推荐系统、生物信息学等高度互联的数据时显得力不从心。Neo4j,作为图数据库领域的佼佼者,遥遥领先!

neo4j简介

  • neo4j是由Java实现的开源NoSQL图数据库。自从2003年开始研发,到2007年发布第一版。neo4j现如今已经被各行各业的数十万家公司和组织采用。
  • neo4j实现了专业数据库级别的图数据模型的存储。与普通的图处理或内存级数据库不同,neo4j提供了完整的数据库特性,包括ACID事物的支持,集群支持,备份与故障转移等。这使其适合于企业级生产环境下的各种应用。

  • neo4j的版本说明:
  • 企业版:需要高额的付费获得授权,提供高可用,热备份等性能。
  • 社区开源版:免费使用,但只能单点运行。

neo4j图数据库概念 

✨️节点:节点是Neo4j图数据库中的基本元素,用于表示实体或对象。每个节点都可以看作是一个独立的实体,如一个人、一部电影或一个城市。

  • 可以将节点类比为关系型数据库中的表,对应的标签可以类比为不同的表名,属性就是表中的列。

✨️属性:属性是附加在节点或关系上的键值对,用于描述节点或关系的详细特征。

✨️关系:关系连接两个节点,关系是方向性的,关系可以有一个或多个属性

✨️标签:标签是Neo4j中对节点进行分类和组织的一种方式,类似于关系型数据库中的表名。


neo4j图数据库的安装 

neo4j图数据库的安装流程:

  • 第一步:将neo4j安装信息载入到yum检索列表。

  • 第二步:使用yum install命令安装。

  • 第三步:修改配置文件内容 /etc/neo4j/neo4j.conf.

  • 第四步:启动neo4j数据库。

💦第一步:将neo4j安装信息载入到yum检索列表

sudo rpm --import https://debian.neo4j.com/neotechnology.gpg.key
sudo yum-config-manager --add-repo https://yum.neo4j.com/stable

💦第二步:使用yum install命令安装

yum install neo4j

💦第三步:修改配置文件默认在/etc/neo4j/neo4j.conf

dbms.directories.data=/var/lib/neo4j/data
dbms.directories.plugins=/var/lib/neo4j/plugins
dbms.directories.certificates=/var/lib/neo4j/certificates
dbms.directories.logs=/var/log/neo4j
dbms.directories.lib=/usr/share/neo4j/lib
dbms.directories.run=/var/run/neo4j# 导入的位置
dbms.directories.import=/var/lib/neo4j/import# 初始化内存大小
dbms.memory.heap.initial_size=512m # web页面地址
dbms.connectors.default_listen_address=0.0.0.0# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474 # HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473 dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

💦第四步:启动neo4j数据库

# 启动命令
neo4j start
  • 注意:如果使用的是云服务器,那么上述用到了7473端口、7687端口、就需要单独去开端口。

neo4j的可视化管理后台登陆 

(云服务器公网IP):7474    --> 进入浏览器界面

🧨Cypher介绍与使用

Cypher是一种描述性的图形查询语言,相当于MySQL中的SQL语句。

create命令

💯创建图数据中的节点

# 创建命令格式:
# create是关键字,创建节点名称node_name, 节点标签Node_Label, 放在小括号里面()
# 后面把所有属于节点标签的属性放在大括号'{}'里面,依次写出属性名称:属性值,不同属性用逗号','分隔
# 例如下面命令创建一个节点e, 节点标签是Employee, 拥有id, name, salary, deptnp四个属性:
CREATE (e:Employee{id:222, name:'Bob', salary:6000, deptnp:12})

match命令

💯匹配(查询)已有数据

MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptnoMATCH (n) return n # 查询所有结点

merge命令

💯若节点存在,则等效与match命令; 节点不存在,则等效于create命令。

MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})

成功创建!

  • 然后再次用merge查询,发现数据库中的数据并没有增加,因为已经存在相同的数据了,merge匹配成功。

 

使用create创建关系

💯必须创建有方向性的关系,否则报错。

# 创建一个节点p1到p2的有方向关系,这个关系r的标签为Buy, 代表p1购买了p2, 方向为p1指向p2
CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)

创建完成关系后,再次查看全部:

使用merge创建关系

💯可以创建有/无方向性的关系。

# 创建一个节点p1到p2的无方向关系,这个关系r的标签为miss, 代表p1-miss-p2, 方向为相互的
MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)

where命令

💯类似于SQL中的添加查询条件。

# 查询节点Employee中,id值等于123的那个节点
MATCH (e:Employee) WHERE e.id=123 RETURN e

delete命令

💯删除节点/关系及其关联的属性。

# 注意:删除节点的同时,也要删除关联的关系边
MATCH (p1:Profile1)-[r]-(p2:Profile2) DELETE p1, r, p2

sort命令

Cypher命令中的排序使用的是order by

# 匹配查询标签Employee, 将所有匹配结果按照id值升序排列后返回结果
MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id# 如果要按照降序排序,只需要将ORDER BY e.salary改写为ORDER BY e.salary DESC
MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.salary DESC

字符串函数:

  • toUpper()函数
  • toLower()函数
  • substring()函数
  • replace()函数

toUpper()函数

将一个输入字符串转换为大写字母。

  • 演示:
MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno

 

💩toLower()函数 :将一个输入字符串转换为小写字母。

💩substring()函数:返回一个子字符串。

💩replace()函数 :替换掉子字符串。


聚合函数

  • count()函数
  • max()函数
  • min()函数
  • sum()函数
  • avg()函数

count()函数 :返回由match命令匹配成功的条数。

MATCH (e:Employee) RETURN count( * )

max()函数 :返回由match命令匹配成功的记录中的最大值。

# 返回匹配标签Employee成功的记录中,最高的工资数字
MATCH (e:Employee) RETURN max(e.salary)

 其余的就不过多赘述,相信大家也明白了~


索引index 

  • Neo4j支持在节点或关系属性上的索引,以提高查询的性能。
  • 可以为具有相同标签名称的所有节点的属性创建索引。

创建索引:使用create index on来创建索引。

# 创建节点Employee上面属性id的索引
CREATE INDEX ON:Employee(id)

 

在Python中使用neo4j 

  • neo4j-driver是一个python中的package, 作为python中neo4j的驱动,帮助我们在python程序中更好的使用图数据库。

pip install neo4j-driver
from neo4j import GraphDatabase  uri = "bolt://localhost:7687"  # Neo4j 数据库的 Bolt URI  
user = "neo4j"  # 用户名  
password = "你的密码"  # 密码  driver = GraphDatabase.driver(uri, auth=(user, password))def create_person(tx, name):  """在 Neo4j 数据库中创建一个 Person 节点"""  tx.run("CREATE (a:Person {name: $name})", name=name)  with driver.session() as session:  session.write_transaction(create_person, "Alice")  session.write_transaction(create_person, "Bob")def get_person(tx, name):  """查询并返回指定名称的 Person 节点"""  result = tx.run("MATCH (a:Person {name: $name}) RETURN a.name AS name", name=name)  return [record["name"] for record in result]  with driver.session() as session:  alice_name = session.read_transaction(get_person, "Alice")  print(alice_name)  # 输出: ['Alice']driver.close()

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

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

相关文章

代码随想录算法训练营第四十一天| 322. 零钱兑换、279.完全平方数、139.单词拆分

322. 零钱兑换 题目链接:322. 零钱兑换 文档讲解:代码随想录 状态:能想到凑足总额为j - coins[i]的最少个数为dp[j - coins[i]],但没想到加上一个钱币coins[i]即dp[j - coins[i]] 1就是dp[j](考虑coins[i]&#xff09…

IDEA 好用的插件,必备的插件

1. GitToolBox 菜单栏显示git分支信息 2.MyBatisx 快速定位找到sql的xml文件 3.RestfulToolkit-fix 快速定位接口的插件 默认快捷键: CtrlAltN 4.EasyCamelQSM 字符串转驼峰 默认快捷键: Ctrl Alt Q 5.Maven Helper 检查maven冲突,图形化展示maven依赖的插…

Conan安装与C++第三方环境配置保姆级图文教程(附速查字典)

目录 1 什么是Conan?2 Conan安装与配置3 Conan的常见操作3.1 搜索指定包3.2 安装指定包3.3 本地包管理3.4 查看项目依赖 4 Conan构建项目案例 1 什么是Conan? Conan是一个开源的C/C包管理器,用于管理和构建C/C项目所需的依赖库。传统上&…

【启明智显分享】2.8寸触摸串口屏SC05 Plus应用于智能血压计

2.8寸SC05 Plus串口触摸屏,带WIFI/蓝牙 我国高血压流行病调查显示,成人高血压患病率为27.9%、知晓率为46.9%、治疗率为40.7%、控制率为15.3%。由此可见高血压的患病率高,但知晓率和治疗率低&…

【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

高危行业的安全守护者,顶坚防爆手机无惧挑战

高危行业的安全守护者,防爆手机以卓越性能,无惧极端挑战,为每一位前线工作者筑起坚不可摧的安全防线。石油勘探的深邃海洋、化工生产的复杂车间、矿山的幽深隧道……这些高危行业中,每一步都需谨慎前行,每一刻都需安全…

基于springboot的校园商铺管理系统

功能结构图: 实现图: 后台功能: 商品管理 公告管理 前台页面 详情 订单 我的订单

SciencePub学术刊源 | 7月SCI/SSCI/EI/CNKI刊源表已更新!(内含TOP及CCF推荐)

【SciencePub学术】我处SciencePub学术2024年7月SCI/SSCI/EI/CNKI刊源表已更新!内含多本中科院TOP、CCF推荐以及进展超顺的优质期刊,最快1-3个月录用! 计算机领域重点SCI 环境地质化学领域重点SCI 生物医学领域重点SCI 数学材料领域重点SCI 各…

同星TTS系列产品全新亮相:让开发测试变得更简单!

TTS系列产品 如果需要完整地测试 ECU,不仅需要将通信网络连接到测试系统,还需要连接 I/O 接口。同星的TTS测试系统将连接 I/O 通道所需的所有电路组件集成在一个模块中,可以极大地简化测试台架和HIL测试系统的设置,提高搭建和测试…

武汉星起航:跨境电商领域的领航者,助力合作伙伴全球布局

在跨境电商的汹涌浪潮中,武汉星起航电子商务有限公司如同一颗璀璨的明星,自2017年起便以亚马逊自营店铺为核心业务,不断积累实战运营经验,逐步建立了自己在市场中的稳固地位。随着2020年公司的正式成立,武汉星起航明确…

基于微信小程序的优鲜易购平台设计与实现

系统摘要 随着网络科技的迅速发展以及社会大众消费习惯的转变,微信小程序逐渐以其便捷性和易用性引起了人们的广泛关注。本文意在研发设计并实现一种基于微信小程序开发的优鲜商品易购系统,即一个专注于生鲜产品网上选购服务的买菜网站,利用SpringBoot和Vue.js的技术栈…

学习笔记——动态路由——IS-IS中间系统到中间系统(背景)

一、IS-IS技术背景 1、前言 IS-IS最初是国际标准化组织ISO(the International Organization for Standardization)为它的无连接网络协议CLNP(ConnectionLess Network Protocol)设计的一种动态路由协议。 和OSPF一样,IS-IS也是一种基于链路状态并使用最短路径优先…

浅谈制造企业如何借力EHS,让安全管理上新台阶

当今商业环境中,企业管理不仅关注经济效益,更将目光投向了长远发展的基石——EHS(环境Environment、健康Health、安全Safety)管理体系。这一体系的崛起,标志着企业管理理念的一次深刻变革,它如同企业的守护…

Chisel学习笔记(1)——Chisel安装与Verilog代码仿真

参考链接: https://www.chisel-lang.org/docs/installation 使用Chisel语言编写硬件描述语言,相比于使用Verilog会更加地灵敏快捷,Coding效率更高,但似乎debug会出现一些小问题。但新工具还是要尝试一下才知道好不好用。 1 安装C…

构建RAG+nebula graph(知识图谱KG)

目标:通过利用 LlamaIndex 和 NebulaGraph 为费城费城人队(Philadelphia Phillies)构建一个RAG流程,深入探讨知识图谱。 NebulaGraph 是市场上最好的知识图谱数据库之一。它是开源的、分布式的,并且能够处理具有亿万边…

【linux】网络基础(2)——udp协议

文章目录 引言udp协议的特点udp的头部结构UDP的工作原理简单的UDP网络程序套接字的认识udp服务端代码udp客户端代码服务端运行 引言 用户数据报协议(User Datagram Protocol, UDP)是一种无连接的传输层协议。它是因特网协议家族的一部分,定义…

C语言的数据结构:图的基本概念

前言 之前学过了其它的数据结构,如: 集合 \color{#5ecffd}集合 集合 —— 数据元素属于一个集合。 线型结构 \color{#5ecffd}线型结构 线型结构 —— 一个对一个,如线性表、栈、队列,每一个节点和其它节点之间的关系 一个对一个…

超酷的打字机效果?分享 1 段优质 CSS 代码片段!

大家好,我是大澈! 本文约 900 字,整篇阅读约需 1 分钟。 每日分享一段优质代码片段。 今天分享一段优质 CSS 代码片段,实现打字机般的效果或其他类似的离散动画效果。 老规矩,先阅读代码片段并思考,再看代…

Python入门 2024/7/2

目录 格式化的精度控制 字符串格式化 对表达式进行格式化 小练习(股票计算小程序) 数据输入 布尔类型和比较运算符 if语句 小练习(成人判断) if-else语句 if-elif-else语句 练习:猜猜心里数字 嵌套语句 猜…

Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …