首页 > 数据库 >【图数据库】Neo4J安装+测试

【图数据库】Neo4J安装+测试

时间:2024-10-13 20:11:21浏览次数:7  
标签:p2 p1 name 数据库 测试 Neo4J 节点 MATCH shu

一、前言
    1.1 Neo4J
    1.2 对比关系型数据库

二、Windows环境安装
    2.1 检查java环境
    2.2 下载安装Neo4J及环境变量
    2.3 Neo4j基本配置
    2.4 网络配置
    2.5 启动Neo4j

三、ArchLinux环境安装

四、通过构建三国人物关系快速入门cypher
    4.1 Neo4j数据模型
    4.2 Cypher语言
    4.3 实例
        4.3.1 创建节点
        4.3.2 创建关系
        4.3.3 一些查询场景

五、主要参考材料

原创 及萨博涵五六 码农智涵的程序人生

一、前言

1.1 Neo4J

高性能的、NoSQL数据库

将数据之间的关系存于网(数据结构概念)中

基于Java的、具备完全事务特性的Java持久化引擎

用途:广泛用于人工智能、计算机图像、语音识别、NLP、搜索、智能问答、推荐系统等方面

一般地,知识图谱的建设,包括数据获取、实体识别、关系抽取、数据存储、图谱应用(当前重点发力于 RAG 应用的结合落地)几个方面。

1.2 对比关系型数据库

二、Windows环境安装

windows环境下安装也可以直接下载客户端

2.1 检查java环境

注意版本对齐

jdk版本必须大于17才能正常运行neo4j

java版本与 major version对应关系

需要把开发环境的 jdk 版本提升至>17

具体如何快速切换多版本jdk版本教程可参考下方链接

https://www.cnblogs.com/jaxu/p/14972722.html

2.2 下载安装Neo4J及环境变量

https://neo4j.com/deployment-center/

(支持多版本、包括历史版本)

https://we-yun.com/doc/neo4j/

下载解压完成后文件目录结构

bin:存储neo4j的可执行程序

conf:控制neo4j启动的配置文件

data:存储核心数据库文件

plugins:存储neo4j的插件

创建环境变量

2.3 Neo4j基本配置

conf目录下,neo4j.conf文件用来控制服务器的工作。

默认情况下,不需要进行任何配置即可启动和运行服务器

(1)核心数据文件位置

(2)安全验证

(3)Java堆内存配置

2.4 网络配置

支持网络协议

注意防火墙

默认监听地址

2.5 启动Neo4j

启动命令

neo4j.bat console

启动失败

失败原因:

java版本低,java版本与 major version对应关系

需要把开发环境的 jdk 版本提升至>17

windows切换jdk工具推荐:

GitHub - FelixSelter/JEnv-for-Windows: Change your current Java version with one line

之后重新启动

操作页面

访问 http://localhost:7474

默认用户名:neo4j

默认密码:neo4j

安装、配置完成

三、ArchLinux环境安装

【经验与坑】Manjaro图数据库Neo4j的安装配置使用
设置外部访问

适用场景:在一个linux服务器上安装neo4j,从外部网络访问脚手架

参考材料:

https://blog.csdn.net/weixin_51877649/article/details/137205296

四、通过构建三国人物关系快速入门cypher

4.1 Neo4j数据模型

数据模型是整一个最重要的环节,是基石是地基。

图数据库的数据模型的主要构建:

节点

关系

属性

标签

节点:用来表示一个实体记录,就像关系数据库中的一条记录,在Neo4J中节点可包含多个属性和多个标签。

节点通过关系连接到其他节点;节点可具有 >=1 个属性;

节点可具有 > =1 个标签,用于描述其在图中的作用。

属性:用于描述图节点和关系的键值对。属性可以被索引和约束,可从多个属性创建复合索引。
关系:用于连接两个节点,在数据结构图论中的边,始端和末端必须是节点,关系不能指向空也不能从空发起。关系和节点一样可包含多个属性,但关系只能有一个类型。关系还具有方向性(分为单向关系和双向关系)

标签:将一个公共名称与一组节点/关系相关联,

节点/关系可包含一个/多个标签。

标签用于将节点分组;

通过标签对节点设置索引加快查询效率;

作为一个图数据库,必然存在图、节点以及连接两个节点之间的关系。每个节点相当于一个实体,每个实体都有构成它的属性。

比如三国演义中的刘备和关羽,这是两个抽象的实体,也可称为节点。

他们有个共同的标签:人类;

他们之间的关系:兄弟;

刘备的属性:耳朵大、汉室后裔等;

关羽属性:忠诚、害羞等

4.2 Cypher语言

也称CQL

是图数据库Neo4j的查询语言

遵循SQL语法

4.3 实例

4.3.1 创建节点


// 创建一个标签为Person的节点,该节点具有一个name属性,属性值为刘备
create (n:Person {name="刘备"}) return n

create为创建操作,n是节点,Persion是标签,代表节点的类型;

花括号 {} 代表节点的属性,属性类似 python 中的字典数据结构;

return n 表示返回当前节点的值。

创建多个节点:

// 蜀国主要人物
create (country:shu { name:'刘备'});
create (country:shu { name:'关羽'});
create (country:shu { name:'张飞'});
create (country:shu { name:'诸葛亮'});

// 魏国主要人物
create (country:wei { name:'曹操'});
create (country:wei { name:'曹植'});
create (country:wei { name:'曹丕'});

// 吴国主要人物
create (country:wu { name:'孙策'});
create (country:wu { name:'孙权'});
create (country:wu { name:'周瑜'});

MATCH (n) return (n)

MATCH子句用于指定一个模式,便于在图中查找匹配该模式的节点、关系和路径。

我们在使用 Match(n)时,实际上是在告诉数据库查找图中的全部节点,而没有指定任何特定节点类型或属性。

此外,MATCH 支持限制返回节点数量,我们可用 LIMIT 关键字

MATCH (n) return (n) LIMIT 10

删除节点:

提供两种删除方式:

MATCH(n:wu {name:'周瑜'})
DETACH DELETE n

首先通过 match 语句找到标签为 wu 且 属性 name 等于 '周瑜' 的节点。

其中 DETACH DELETE 语句用于删除这个节点以及与它相关的所有关系。


MATCH(n:wu {name:'周瑜'})
DELETE n

仅删除节点保留关系,使关系处于悬挂状态,即相关关系不与任何节点相连。
更新节点属性:

假设现在想更新名为 ”周瑜“ 的节点,将其名称属性改为 ”黄盖“。

可使用 SET 语句来更新节点的属性


MATCH (n:wu {name:'周瑜'})
SET n.name = '黄盖'
return n

4.3.2 创建关系


MATCH (a:shu {name:'刘备'}), 
      (b:shu {name:'关羽'}) 
MERGE (a)-[:二弟]->(b)

MATCH (a:shu {name:'刘备'}), 
      (b:shu {name:'张飞'}) 
MERGE (a)-[:三弟]->(b)

更新关系

假设我们在 刘备->关羽 的关系误写成了 【大哥】 关系,但实际上是 【二弟】关系,需要做更新操作:


MATCH (a:shu {name: '刘备'})-[r:大哥]->(b:shu {name: '关羽'})
SET r:二弟
RETURN r

更新节点间关系方向只能通过先删除关系 再新建关系来操作。
删除关系:


MATCH (a:shu {name: '刘备'})-[r:大哥]->(b:shu {name: '关羽'})
DELETE r

创建更多关系:


match (p1:shu {name:'刘备'}),(p2:shu{name:'关羽'}) create (p1)- [r:rel {relation:'结义兄弟'}]->(p2);
match (p1:shu {name:'刘备'}),(p2:shu{name:'张飞'}) create (p1)- [r:rel {relation:'结义兄弟'}]->(p2);
match (p1:shu {name:'刘备'}),(p2:shu{name:'诸葛亮'}) create (p1)- [r:rel {relation:'主公'}]->(p2);
MATCH (p1:wei {name:'曹植'}), (p2:wei {name:'曹操'}) MERGE (p1)-[:儿子]->(p2);
MATCH (p1:wei {name:'曹丕'}), (p2:wei {name:'曹操'}) MERGE (p1)-[:儿子]->(p2);
MATCH (p1:wei {name:'曹操'}), (p2:wei {name:'曹丕'}) MERGE (p1)-[:父亲]->(p2);
MATCH (p1:wei {name:'曹操'}), (p2:wei {name:'曹植'}) MERGE (p1)-[:父亲]->(p2);
MATCH (p1:wu {name:'孙策'}), (p2:wu {name:'孙权'}) MERGE (p1)-[:弟弟  {type:"亲情"}]->(p2);
MATCH (p1:wu {name:'孙权'}), (p2:wu {name:'孙策'}) MERGE (p1)-[:哥哥  {type:"亲情"}]->(p2);
MATCH (p1:wu {name:'周瑜'}), (p2:wu {name:'孙策'}) MERGE (p1)-[:主公  {type:"主从"}]->(p2);

4.3.3 一些查询场景

(1)查询有多少人属于蜀国

match(n:shu) return count(distinct(n))

(2)查找与刘备有结义兄弟关系的人物

MATCH (p1:shu {name: '刘备'})-[r:rel {relation: '结义兄弟'}]->(p2)
RETURN p2.name

(3)查找所有与刘备有直接关系的节点及其关系类型

MATCH (p1:shu {name: '刘备'})-[r]-(p2)
RETURN p2.name, type(r)

(4)查找所有与刘备有关系的节点,包括多跳关系

MATCH path = (p1:shu {name: '刘备'})-[*]-(p2)
RETURN nodes(path), relationships(path)

(5)查找所有与刘备有关系的节点,限制路径长度为2

MATCH path = (p1:shu {name: '刘备'})-[*2]-(p2)
RETURN path

五、主要参考材料

https://developer.aliyun.com/article/1143832
https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.cnblogs.com/ting1/p/17536915.html&ved=2ahUKEwidtY2muYaJAxU0n2MGHdi0IHQQFnoECCEQAQ&usg=AOvVaw2jF_dIDlLsk_JvmBsaxmVF

参考

标签:p2,p1,name,数据库,测试,Neo4J,节点,MATCH,shu
From: https://www.cnblogs.com/o-O-oO/p/18462766

相关文章

  • 高校宿舍管理系统的设计与实现(Java+ssm+万字文档+系统源码+数据库 +调试)
    摘 要本文是对高校宿舍管理系统的概括总结,主要从开题背景,课题意义,研究内容,开发环境与技术,系统分析,系统设计,系统实现这几个角度来进行本高校宿舍管理系统的阐述。高校宿舍管理系统运用Eclipse工具进行开发,使用Java语言进行编码,后台框架采用SSM框架(Spring框架、SpringMVC框......
  • 基于VUE+ssm框架的在线交友系统(Java+ssm+万字文档+系统源码+数据库 +调试)
    摘要本文介绍了在线交友系统的开发全过程。通过分析企业对于在线交友系统的需求,创建了一个计算机管理在线交友系统的方案。文章介绍了在线交友系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。本在线交友系统管理员功能有个人中心,用户......
  • JAVA毕业设计189—基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000字论文+任务书)189一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、员工、管理员三种角色1、用户:注册、登录、......
  • 网站数据库连接错误怎么办?
    当遇到网站数据库连接错误时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务器是否正常运行。使用命令行工具或管理界面检查数据库服务的状态。检查连接配置:核对数据库连接字符串中的主机名、端口、用户名和密码是否正确。检查环境变量或配置文件中......
  • 网站无法连接数据库怎么办?
    当遇到网站无法连接数据库的问题时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务器是否正常运行。使用命令行工具如mysqladminping或netstat检查数据库服务是否监听在正确的端口上。检查网络连接:检查服务器与数据库之间的网络连通性,可以使用ping......
  • 上网站无法连接数据库怎么办?
    当遇到网站无法连接数据库的问题时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务器是否正常运行。使用命令行工具或管理界面尝试连接数据库。检查网络连接:验证服务器与数据库之间的网络连通性。检查防火墙设置,确保端口开放且允许通信。验证数......
  • 网站数据库连接时错误怎么办?
    当遇到网站数据库连接错误时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务是否正常运行。使用命令行工具或管理界面检查数据库服务状态。检查连接参数:核对数据库连接字符串中的主机名、端口号、用户名、密码等信息是否正确。尝试直接在命令行中使......
  • 网站数据库连接失败怎么办
    当遇到网站数据库连接失败的问题时,可以按照以下步骤进行排查和解决:检查数据库服务状态:首先确认数据库服务器是否正常运行,可以通过命令行工具或管理界面尝试连接数据库。检查网络连接:确保应用服务器与数据库服务器之间的网络是连通的,可以使用ping命令测试两者的网络连接情况。......
  • php网站数据库连接
    在PHP开发中,连接数据库是常见的操作之一。以下是连接MySQL数据库的基本步骤和示例代码:1.准备数据库信息主机名 (hostname):数据库服务器的地址或域名。用户名 (username):连接数据库的用户名。密码 (password):对应用户的密码。数据库名 (databasename):要连接的......
  • 网页提示数据库连接失败
    遇到“数据库连接失败”的提示通常有以下几个可能的原因:数据库服务器未启动:确保数据库服务如MySQL,PostgreSQL等正在运行。网络问题:检查数据库服务器与应用服务器之间的网络连接是否正常。配置错误:确认数据库连接字符串或配置文件中的信息(如主机名、端口、用户名、密码)是否......