[数据库]图数据库基础入门

概念

图数据库是一种使用图结构(节点、边和属性)进行数据存储和查询的数据库管理系统。与传统的关系型数据库不同,图数据库专注于实体之间的关系,特别适合处理高度互联的数据。常见的图数据库包括:Neo4j、JanusGraph、HugeGraph…
在这里插入图片描述

核心优势:

  • 高效处理复杂关系查询
  • 直观的数据模型表示
  • 灵活应对数据模式变化
  • 卓越的性能(尤其对多跳查询)

主要有以下特点:

  1. 节点(Node):表示具体实体(如人物、地点、产品)
  • 可拥有标签(Label)进行分类
  • 可包含属性(键值对)
  • 例如:汤姆汉克斯Actor,Actor是演员代表分类,汤姆汉克斯代表实际的节点
  1. 关系(Relationship):连接节点的有向边
  • 必须有类型或可以理解为具体的关系(如:ACT表示演员与影视作品出演的关系、PURCHASED表示人与商品之间的购买关系)
  • 可包含属性,例如:xxx出演了什么电影,出演这个边(关系)中,我们可以设置具体的时间,具体什么时候出演了这个电影
  1. 属性(Properties):节点和关系的键值对属性
  2. 标签(Labels):节点的分类标记,如:Movie电影、Person人、Actor演员等

应用场景

  1. 社交网络分析
  • 好友推荐系统
  • 影响力传播分析
  1. 推荐引擎
  • “购买此商品的用户也购买了…”
  • 个性化内容推荐
  • 相关好友推送
  1. 欺诈检测
  • 识别异常交易模式
  • 发现欺诈团伙关联
  1. 知识图谱
  • 构建企业知识库
  • 语义搜索系统
  • 血缘图谱
  1. 网络与IT运维
  • 基础设施依赖关系映射
  • 影响分析
  1. 供应链管理
  • 物流路径优化
  • 风险传播分析

安装[neo4j]

这里以neo4j为例,讲解图数据库基本使用。
官方网站:https://neo4j.com/
官方教程地址:https://neo4j.ac.cn/docs/

大家可以直接通过官网下载,也可以通过docker方式下载使用,我这里演示docker安装:

#  创建映射目录
mkdir -p /Users/ziyi/docker-home/neo4j/{data,logs,conf,import}docker run -d --name neo4j -p 7474:7474 -p 7687:7687 -v /Users/ziyi/docker-home/neo4j/data:/data -v /Users/ziyi/docker-home/neo4j/plugins:/var/lib/neo4j/plugins -v /Users/ziyi/docker-home/neo4j/logs:/logs -v /Users/ziyi/docker-home/neo4j/conf:/var/lib/neo4j/conf -v /Users/ziyi/docker-home/neo4j/import:/var/lib/neo4j/import -e NEO4J_AUTH=neo4j/12345678 neo4j:5.26.6# 访问浏览器,并输入 neo4j / 12345678 登录账号
http://localhost:7474/browser/preview/

使用

1. cypher语法

创建节点

// 其中Person为标签/类型,Alice为一个具体的节点,name、age是Alice这个具体节点的属性
CREATE (:Person {name: 'Alice', age: 30})
CREATE (:Person {name: 'Bob', occupation: 'Engineer'})

在这里插入图片描述

最后效果:
在这里插入图片描述

创建关系

//找到Alice和Bob两个节点,并为其创建FRIENDS朋友关系,同时为这个关系设置属性
MATCH (a:Person), (b:Person)
WHERE a.name = 'Alice' AND b.name = 'Bob'
CREATE (a)-[:FRIENDS {since: '2020-01-01'}]->(b)

在这里插入图片描述

查询数据

// 查找所有人员
MATCH (p:Person) RETURN p// 查找Alice的朋友
MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->(friend)
RETURN friend.name

在这里插入图片描述

更新数据

MATCH (p:Person {name: 'Alice'})
SET p.age = 31, p.location = 'New York'
RETURN p

在这里插入图片描述

删除数据

// 删除节点及其关系
MATCH (p:Person {name: 'Bob'})
DETACH DELETE p// 删除关系
// 删除任意方向的FRIENDS关系
MATCH (t:Person {name: 'Tom'})-[r:FRIENDS]-(b:Person {name: 'Bob'})
DELETE r// 删除所有数据(谨慎使用!)
MATCH (n) DETACH DELETE n

在这里插入图片描述

多跳查询

//补充数据用于展示多跳查询
CREATE (:Person {name: 'Tom', age: 30});
MATCH (a:Person), (b:Person)
WHERE a.name = 'Tom' AND b.name = 'Bob'
CREATE (a)-[:FRIENDS]->(b),(b)-[:FRIENDS]->(a);// 查找Alice的2度好友(朋友的朋友)
MATCH (alice:Person {name: 'Alice'})-[:FRIENDS*2]->(fof)
RETURN DISTINCT fof.name

在这里插入图片描述

最短查询

MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Tom'}),
path = shortestPath((a)-[*]-(b))
RETURN path

在这里插入图片描述

聚合函数

MATCH (p:Person)
RETURN avg(p.age) AS averageAge, count(*) AS totalPeople

在这里插入图片描述

2. 插件安装[apoc]

neo4j图数据库可支持很多插件扩展,例如:apoc、

  1. apoc插件下载:https://github.com/neo4j/apoc/releases?page=1

neo4j与apoc版本对应关系:https://neo4j.ac.cn/labs/apoc/5/installation/

在这里插入图片描述

下载与自己neo4j匹配的插件即可,因为开始通过docker搭建neo4j时,我们已经做了plugins的映射:-v /Users/ziyi/docker-home/neo4j/plugins:/var/lib/neo4j/plugins。所以我们直接将插件下载到本地/Users/ziyi/docker-home/neo4j/plugins目录即可。
在这里插入图片描述
2. 配置文件新增配置
neo4j.conf新增:

dbms.security.procedures.unrestricted=apoc.*
dbms.security.procedures.allowlist=apoc.*

在这里插入图片描述

  1. 重启容器
# 重启neo4j容器
docker ps | grep neo4j
docker restart 容器ID
  1. 来到可视化页面,输入下面命令验证插件是否安装成功
return apoc.version()

在这里插入图片描述
5. apoc里面有很多内置函数,可直接使用
在这里插入图片描述
效果:
在这里插入图片描述

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

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

相关文章

本地数据库有数据,web页面无信息显示,可能是pymysql的版本问题【pymysql连接本地数据库新旧版本的区别】

pymysql连接本地数据库新旧版本的区别新版本老版本python web下的settings文件 新版本 的pymysql 连接本地数据库: mysql_conn pymysql.connect(hostself.conn_infos["HOST"],userself.conn_infos["USER"],passwordself.conn_infos["PAS…

【Linux-云原生-笔记】Haproxy相关

一、概念HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器 和 反向代理 软件,被广泛应用于构建高可用、高并发的现代网络架构。核心功能:负载均衡(Load Balancing)支持四层&#x…

智慧能源合同解决方案

01 能源行业合同管理核心痛点 1)长期风险沉淀与动态环境失配:合同稳定性的根本矛盾 超长周期下的风险累积:20~30年的购售电协议(PPA)、EPC合同需覆盖技术迭代(如光伏组件衰减率)、政策转向&am…

MeterSphere平台,接口自动化脚本编写常用操作

文章目录1. 前置准备2. 项目环境设置3. 创建接口3.1 创建接口API3.2 测试接口API3.3 设置接口case4. 场景接口自动化4.1 创建自动化场景4.2 场景化操作说明4.2.1 设置脚本场景变量4.2.2 接口列表导入4.2.3 场景导入4.2.4 自定义请求4.2.5 事务控制器4.2.6 等待控制器4.2.7 循环…

C 语言介绍

C语言是由Dennis Ritchie开发的,用于创建与硬件设备(例如驱动程序,内核等)直接交互的系统应用程序。C编程被认为是其他编程语言的基础,这就是为什么它被称为母语。C是一种功能强大的通用编程语言。它可以用于开发操作系…

AI产品经理面试宝典第48天:产品设计与用户体验优化策略

1. 用户体验分析与产品设计逻辑 1.1 问:如何通过用户反馈优化AI产品体验? 答: 建立反馈闭环机制:通过应用内评分、用户访谈、行为埋点三维度收集数据,例如某语音助手产品通过NLP分析用户纠错语句,发现"误唤醒"问题占比37%; 优先级排序模型:采用Kano模型量化…

基于springboot的在线教育系统(源码+论文)

一、开发环境 本在线教育系统主要采用以下技术栈进行开发: B/S结构:基于浏览器/服务器模式,便于用户通过互联网访问系统,无需安装客户端软件。Spring Boot框架:简化了新Spring应用的初始搭建及开发过程,提…

Ubuntu 系统上部署禅道

在 Ubuntu 系统上部署禅道可以按照以下步骤进行,以下是基于禅道开源版的部署流程: 1. 安装必要依赖 首先安装禅道运行所需的环境(以 Ubuntu 20.04/22.04 为例): bash # 更新系统包 sudo apt update && sudo…

【vue-8】Vue3 Options API 生命周期函数全面解析

在 Vue.js 开发中,理解组件的生命周期是构建健壮应用程序的关键。虽然 Vue3 引入了 Composition API,但 Options API 仍然是许多开发者的首选,特别是对于从 Vue2 迁移的项目或更喜欢基于选项的代码组织的团队。本文将深入探讨 Vue3 中 Option…

周志华《机器学习导论》第8章 集成学习 Ensemble Learning

目录 8.1 个体与集成 8.2 Boosting Ada(Adaptive)Boost 8.3 Bagging 8.4 随机森林 8.5 结合策略 8.5.1 平均法 8.5.2 投票法 8.5.3 学习法 8.6 多样性 8.6.1 误差-分歧分解 error-ambiguity 8.6.2 多样性度量 8.6.3 多样性增强 8.1 个体与集…

Embassy实战:Rust嵌入式异步开发指南

嵌入式异步框架 Embassy 实例 以下是关于嵌入式异步框架 Embassy 的实用示例,涵盖常见外设操作、多任务协作和硬件交互场景。示例基于STM32和Raspberry Pi Pico等平台,使用Rust语言编写。 GPIO 控制 use embassy_stm32::gpio::{Input, Output, Pull, Speed}; use embassy_…

ChatGPT桌面版深度解析

ChatGPT桌面版深度解析:功能、安装与高效使用全攻略 一、核心功能全景解析 (一)全场景交互体系 全局热键唤醒 支持MacOS(Option空格)与Windows(Alt空格)全局快捷键,实现跨应用无缝调…

RLVR的一种扩展方案--RLPR论文阅读

论文链接:RLPR: EXTRAPOLATING RLVR TO GENERAL DOMAINS WITHOUT VERIFIERS 文章目录简介RLPRRLVR概率奖励/Probability Reward奖励设计标准差过滤总结简介 可验证奖励的强化学习(Reinforcement Learning with Verifiable Rewards, RLVR)在提升大语言模型&#xff…

odoo欧度小程序——添加用户

odoo欧度小程序添加登录用户 1. 直接在登录用户页面添加用户点击 添加登录用户输入用户和密码,点击登录验证进入odoo页面2. 在用户切换页面添加用户点击选择切换用户点击域名弹出菜单点击添加新用户输入用户和密码,点击登录验证进入odoo页面

Docker 应用数据备份、迁移方案

一、为什么要做Docker数据备份1、保障数据与配置的安全性防止数据丢失:Docker 容器本身是 “临时性” 的(基于镜像创建,删除后数据默认丢失),但容器中运行的应用(如数据库、日志服务)会产生持久…

【PTA数据结构 | C语言版】强连通分量

本专栏持续输出数据结构题目集,欢迎订阅。 文章目录题目代码题目 本题请你编写程序,输出给定有向图中的各个强连通分量,并统计强连通分量的个数。 输入格式: 输入首先在第一行给出 2 个整数,依次为有向图的顶点数 n&…

idea部署新项目时,用自定义的maven出现的问题解决

出现这个问题是因为maven版本和idea版本不兼容,例如图示是maven3.9和idea2021.3的版本不兼容,maven换成3.8.x即可解决

OCR 身份识别:让身份信息录入场景更高效安全

在银行柜台开户、线上平台实名认证等场景中,身份信息录入是基础环节,OCR 身份识别产品正成为提升效率与安全性的关键。​传统人工录入身份证信息,不仅耗时久,还易因手误导致姓名、号码出错,影响业务办理进度。而 OCR 身…

Web 服务器和Web 中间件

一、什么是 Web 中间件 Web 中间件(Web Middleware)是运行在 Web 服务器与实际业务程序之间的一层“胶水”软件,用来统一处理公共事务,让开发者专注写业务逻辑。常见职责: 请求/响应拦截(鉴权、日志、跨域、…

Paimon的部分更新以及DeleteVector实现

背景 本文基于 Paimon 0.9 出于对与Paimon内部的DeleteVctor的实现以及部分更新的实现进行的源码阅读。 关于 DeleteVector的介绍可以看这里 说明 对于Paimon来说无论是Spark中使用还是Flink使用,后面的逻辑都是一样的,所以我们以Spark为例来说。所以…