图数据库Neo4j的调研

news2024/11/25 0:35:18

图数据库Neo4j的调研

一、neo4j基础概述

  1. 概述

neo4j作为当下最热门的图数据库之一,他的底层实现是java语言,所以安装的时候必须有jre环境。并且neo4j是根据计算机中图论理论来实现的。

neo4j图数据库主要有以下组成元素:(具体介绍可以参考下图)

  • 节点
  • 属性
  • 关系
  • 标签

2. 安装

这是官方下载地址 Neo4j Download Center - Neo4j Graph Data Platform ,这个是社区版的。

neo4j安装包有三种类型,企业版,社区版,桌面版。

建议安装社区版,下载后解压,配置环境变量就可以使用了。 

目前最新的neo4j版本是5.5.0的版本。但是这个最新的版本要求 win10的操作系统,由于我本机的是win7的系统,所以我安装的是 4.4.18的版本。

另外neo4j和其他的软件一样,也是可以集群部署(Cluster ),或者单机部署(Standalone)。我们这里就简单进行单机部署

二、官方样例demo

安装好后,我在本机作为window service进程在后台直接启动。neo4j的安装包中有对应的windows环境的 bat脚本,执行就可以了 。

本地连接neo4j数据库,导入官方提供的数据,就能看到官方的 数据样例了 (演员- 电影的关系)。如下图:

官方提供的势示例数据,也就是neo4j的数据库执行脚本

官方示例数据 呈现的数据模型

官方示例数据 呈现的数据模型

三、实战数据demo

这一节主要讲:

1.java 语言如何读取neo4j的数据

参考这两篇官方说明文档

Get started - Neo4j Java Driver Manual (这是neo4j的官方文档,通过驱动程序,手动连接neo4j数据库访问数据,关闭连接方式)

Spring Data Neo4j(这是spring官方文档,spring框架集成neo4j数据库,这里其实可以通过spring-data来操作neo4j,也可以是spring boot starter方式来操作neo4j)

2. excel数据导入到neo4j数据库

-- 数据导入 cql语句:

LOAD CSV  WITH HEADERS FROM 'file:///tree_data/tree_data.csv' AS data CREATE (:Org{name:data.name1,orderIndex:data.index})
CREATE (:Org{name:data.name2})
CREATE (:Org{name:data.name3})
CREATE (:Org{name:data.name4})
CREATE (:Org{name:data.name5})
CREATE (:Org{name:data.name6})
CREATE (:Org{name:data.name7})
MATCH (p:Org) where p.name is null detach delete p
MATCH (entity1:Org{name:data.name2}) , (entity2:Org{name:data.name3})
with entity1,entity2
CREATE (entity1)-[:rel]->(entity2)
MATCH (entity1:Org{name:data.name3}) , (entity2:Org{name:data.name4})
with entity1,entity2
CREATE (entity1)-[:rel]→(entity2)

3. 数据备份,数据恢复

3.1)  离线备份

1)先 docker stop 原来的容器

docker stop neo4j

2) 开始数据冷备

重新启动一个临时容器进行备份

docker run --interactive --tty --rm \
  --volume=/home/data/neo4j/data:/data \
  --volume=/home/data/neo4j/data/db-backup:/backups \
  --volume=/etc/localtime:/etc/localtime \
  neo4j:4.4.16-community \
  neo4j-admin dump --database=neo4j --to=/backups/`date +%Y%m%d_%H:%M`.dump

3) 数据恢复

同样是在 Neo4j 停机状态下进行数据恢复

docker run --interactive --tty --rm \
  --volume=/home/data/neo4j/data:/data \
  --volume=/home/data/neo4j/data/db-backup:/backups \
  neo4j:4.4.16-community \
  neo4j-admin load --database=neo4j --from=/backups/xxxx.dump 

3.1)  在线备份

在线备份:数据备份与恢复无需停机。

离线备份:数据备份与恢复需要停机。

注意:这是企业版的 Neo4j,社区版本不支持热备。

1) 开始数据热备

docker exec --interactive --tty neo4j-new neo4j-admin backup --database=neo4j --to=/backups/`date +%Y%m%d_%H:%M`.back

2) 数据恢复

docker exec --interactive --tty neo4j-new neo4j-admin backup --backup-dir=/backups/xxx.back 

四、技术架构的演进 

4.1 实际项目中,使用neo4j作为底层的数据库,我们就要考虑该技术的高可用性,安全性,以及并发性能如何等问题。所以目前市面的技术架构是如何做的,

以及是否还有其他的瓶颈,市场上是否有其他可替代品等等问题,就是我们在这个时候需要考虑的问题。

五、其他类型的图数据库有哪些

1)  Amazon Neptune

Amazon Neptune - 为云构建的快速、可靠的图形数据库

Amazon Neptune 是一项快速、可靠且完全托管的图形数据库服务,可帮助您轻松构建和运行使用高度互连数据集的应用程序。Amazon Neptune 的核心是专门构建的高性能图形数据库引擎,它进行了优化以存储数十亿个关系并将图形查询延迟降低到毫秒级。 Amazon Neptune 支持常见的图形模型 Property Graph 和 W3C 的 RDF 及其关联的查询语言​ Apache TinkerPop Gremlin 和 SPARQL,从而使您能够轻松构建查询以有效地导航高度互连数据集。Neptune 支持图形使用案例,如建议引擎、欺诈检测、知识图谱、药物开发和网络安全。

Amazon Neptune 具有高可用性,并提供只读副本、时间点恢复、到 Amazon S3 的持续备份以及跨可用区复制等功能。Neptune 非常安全,可支持 HTTPS 加密客户端连接和静态加密。Neptune 完全托管,因此,您再也无需担心数据库管理任务,例如,硬件预置、软件修补、设置、配置或备份。

2) JanusGraph

http://www.janusgraph.cn/

3) OrientDB

OrientDB 是一个开源的多模型 NoSQL 数据库,支持原生图形、文档全文、响应性、地理空间和面向对象等概念。它使用 Java 编写,速度非常快:在普通硬件上,每秒可存储 220,000 条记录。对于文档数据库,它还支持 ACID 事务处理。

没有昂贵的运行时 JOINs,连接可作为记录之间的持久指针进行管理。你可以在几毫秒内遍历数千条记录。

OrientDB 支持 schema-less, schema-full 和 schema-mixed 这三种模式,具有基于用户和角色的强大安全性分析系统,并支持查询语言之间的 SQL。

4) ArangoDB

ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,您可以搭建高性能程序,并且这三种数据模型均支持水平扩展。

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

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

相关文章

Kibana,Docker Remote Api,Kubernetes Api Server我未授权访问漏洞(附带修复方法)

一.Kibana Kibana是⼀个开源的分析与可视化平台,设计出来⽤于和Elasticsearch⼀起使⽤的。你可以⽤kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互⽅式是以各种不同的图表、表格、地图等直观地展示数据,从⽽达到⾼级的数据分…

【数据链路层】ARP协议

文章目录 以太网以太网帧对的格式 MAC地址对比MAC地址和IP地址 MTU和MSSARP协议ARP协议的工作原理ARP欺骗 以太网 ”以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输…

数学思维曼哈顿距离

前言:刚刚看到这个题的时候模拟了一下,感觉就是一个曼哈顿距离的问题,我们计算当前位置和中心的曼哈顿距离,然后比较x 或 y 到中心距离的大小,如果有一个小于等于,那么就是ok的 #define _CRT_SECURE_NO_WAR…

正点原子imx6ull-mini-Linux驱动之Linux IIO 驱动实验

工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。 而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手 机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些…

【数据结构】关于栈你必须知道的内部原理!!!

前言: 🌟🌟Hello家人们,小编这期将带来关于栈的相关知识,以及代码的实现,希望能够帮到屏幕前的你。 📚️上期双链表博客在这里哟:http://t.csdnimg.cn/xgjK1; &#x1f4…

预测云计算的未来

云计算的未来是否依旧未知? 直到最近,云计算还是软件编程界之外很少有人熟悉的一个概念。如今,云计算已成为一切的基础,从点播电视服务和在线游戏门户网站到电子邮件和社交媒体,这四大现代世界的基石。云计算将继续存在…

Electron 使用Electron-build 进行打包

看完下面两篇就可以完成! 基于vue3vite的web项目改为Electron桌面应用(一)_vue3转electron-CSDN博客 将web项目打包成electron桌面端教程(二)vue3vitets_vue3 打包桌面端-CSDN博客 打包报错 1. 首先确定依赖包 npm …

合金钢旋转花键:高强度与高耐磨性的选择

旋转花键‌是一种利用装在花键外筒内的滚珠,‌在精密研磨的滚动沟槽中作平滑滚动,‌同时传递力矩的直线运动系统。需要在振动冲击负荷作用过大、‌定位精度要求高的地方,‌以及需要高速运动性能的地方发挥重要作用。 旋转花键的性能跟材质有直…

龙迅#LT86102SXE适用于HDMI转两路HDMI应用方案,分辨率高达4K60HZ,提供技术支持!

1.功能 ⚫HDMI1.4和DVI 1.0规范兼容 ⚫支持3D视频格式和4Kx2K扩展分辨率格式高达3.4Gbps数据速率和4Kx2K 60Hz YCbCr 4:2:0格式 ⚫自适应均衡和失重,以补偿长电缆损耗 ⚫ODTs和校准 ⚫集成HDCP中继器引擎符合HDCP 1.4规范 ⚫完全硬件控制或可…

CSS文本两端对齐

背景 如果我们要写了列表或表单类的样式&#xff0c;名称长短不一&#xff0c;但是想要两端对齐&#xff0c;如下面这样的&#xff1a; 你是怎么写的&#xff1f; 是这样的吗&#xff0c;在HTML里调整加空格&#xff1a; <ul><li>用户名</li><li>账 …

探索算法系列 - 前缀和算法

目录 一维前缀和&#xff08;原题链接&#xff09; 二维前缀和&#xff08;原题链接&#xff09; 寻找数组的中心下标&#xff08;原题链接&#xff09; 除自身以外数组的乘积&#xff08;原题链接&#xff09; 和为 K 的子数组&#xff08;原题链接&#xff09; 和可被 …

电脑开机后出现bootmgr is missing原因及解决方法

最近有网友问我为什么我电脑开机后出现bootmgr is missing&#xff0c;这个提示意思是:意思是启动管理器丢失&#xff0c;说明bootmgr损坏或者丢失&#xff0c;系统无法读取到这个必要的启动信息导致无法启动。原因有很多&#xff0c;比如我们采用的是uefi引导&#xff0c;而第…

【数学建模】简单的优化模型-6 血管分支

背景&#xff1a;机体提供能量维持血液在血管中的流动&#xff0c;给血管壁以营养&#xff1b;克服血液流动的阻力&#xff0c;能量消耗与血管的几何形状有关。在长期进化中动物血管的几何形状已经在能量消耗最小原则下达到最优化。 问题&#xff1a;在能量消耗最小原则下&…

学习!胖东来秋季陈列欣赏

生鲜区 丰满、新鲜、有量感&#xff1b;色彩搭配更显艺术美&#xff01; 每个石榴专门被泡沫网套半包裹&#xff0c;避免果体受伤的同时&#xff0c;方便顾客挑选。 非季节性商品&#xff0c;以精而美的陈列形式呈现。 蔬菜区的商品分层立体陈列&#xff0c;顾客既拿既走&…

【实现100个unity特效之16】unity2022之前或者之后版本实现全屏shader graph的不同方式 —— 适用于人物受伤红屏或者一些其他状态效果

最终效果 文章目录 最终效果前言unity2022版本 Fullscreen shader graph首先&#xff0c;请注意你的Inity版本&#xff0c;是不是2022.2以上&#xff0c;并且项目是URP项且基本配置 修改shader graph边缘效果动起来优化科幻风制作一些变量最终效果最终节点图代码控制 2022之前版…

鸿蒙(API 12 Beta3版)【音频解码】

开发者可以调用本模块的Native API接口&#xff0c;完成音频解码&#xff0c;即将媒体数据解码为PCM码流。 当前支持的解码能力如下: 容器规格音频解码类型mp4AAC、MPEG(MP3)、Flac、Vorbis、AudioViVid11m4aAACflacFlacoggVorbis、opusaacAACmp3MPEG(MP3)amrAMR(amrnb、amrw…

Journyx soap_cgi.pyc接口XML外部实体注入漏洞复现 [附POC]

文章目录 Journyx soap_cgi.pyc接口XML外部实体注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现Journyx soap_cgi.pyc接口XML外部实体注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术…

线程池原理(一)线程池核心概述

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 线程回顾 创建线程的方式 继承 Thread 类实现 Runnable 接口 创建后的线程有如下状态&#xff1a; NEW&#xff1a;新建的线程&#xff0c;无任何操作 public static void main(String[] args) {Thread…

嵌入式初学-C语言-十八

#接嵌入式初学-C语言-十七# 变量的生命周期 1. 概念&#xff1a;变量在程序运行中存在的时间 2. 根据变量存在的时间不同&#xff0c;变量可分为静态存储和动态存储 3. 变量的存储类型 变量的完整定义格式&#xff1a;[存储类型] 数据类型 变量列表; 4. 存储类型 auto&…

yolov8人脸识别案例

GitHub - wangWEI201901/YOLOv8-Detection-Project: &#x1f6e3;️基于YOLOv8的智慧校园人脸识别和公路汽车检测