# 图数据库

链接:什么是原生(Native)图数据库

一般认为具有“无索引邻接”特性的图数据库才称为原生图数据库

链接:常用的图数据库

图存储可以分为属性图、三元组存储和混合系统 [来源]

  • Property Graphs

  • Triple Stores and Semantic Databases 

  • Hybrid and Exotic Systems

# Neo4j 介绍

Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

在一个图中包含两种基本的数据类型:Nodes(节点)Relationships(关系)。Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。其形式如下:

基于neo4j的这种存储特点,经常用其来存储owlrdf文件。

Neo4j是开源的,很多编程语言,如Node.js、Python、PHP、Ruby、.NET等都提供了对Neo4j的支持。如 Node.js 可以通过指令“ npm install neo4j-driver ” 在Node.js中安装Neo4j Driver;python可以通过" pip install py2neo " 安装依赖包。

# 安装

  • Win10 安装 Neo4j

1️⃣、前提需要

        安装JAVA SE的JDK(cmd输入java -version检查是否安装好

注意:jdk 和 neo4j 版本匹配有要求 [链接] (由于我的jdk是1.8,这里选择安装 neo4j-3.5.3,neo4j 4.x以上版本需要 java11

2️⃣、版本区别

社区版(Community Edition):基本的、功能齐全的高性能图形数据库。

企业版(Enterprise Edition):企业版相比社区版增加了许多典型的企业功能,如集群、高级监控、高级缓存、在线备份等

注:Neo4j 大多数用户都是从社区版开始开发应用,然后在生产环境下使用企业版。Neo4j企业版是要收费的,而只有企业版才能使用分布式安装,并且可以提供负载均衡和高可用配置等功能。社区版只能单机使用,最多可以使用数十亿个节点、关系和属性。

《知识图谱:方法、实践与应用》:Neo4j的不足之处在于其社区版是单机系统,虽然Neo4j企业版支持高可用性(High availability)集群,但其与分布式图存储系统的最大区别在于每个节点上存储图数据库的完整副本(类似于关系数据库镜像的副本集群),而不是将图数据划分为子图进行分布式存储,而并非真正意义上的分布式数据库系统。如果图数据超过一定规模,系统性能就会因为磁盘、内存等限制而大幅降低

3️⃣、安装流程

官网地址:Neo4j Download Center - Neo4j Graph Data Platform (截至目前最新版本为 4.1.1

国内镜像:http://doc.we-yun.com:1008/neo4j

解压到自定义目录,如我的是 W:\Neo4j\neo4j-community-3.5.3

Neo4j应用程序有如下主要的目录结构:

  • bin 目录:用于存储Neo4j的可执行程序;
  • conf 目录:用于控制Neo4j启动的配置文件;
  • data 目录:用于存储核心数据库文件;
  • plugins 目录:用于存储Neo4j的插件;

配置环境变量 NEO4J_HOME,并在环境变量Path中添加 %NEO4J_HOME%\bin

打开cmd命令行,输入命令:neo4j console (有时候识别不了该命令,改用管理员方式打开cmd

注:停止neo4j服务器在cmd键入CTRL+C即可

在浏览器 http://localhost:7474 中查看Neo4j数据库 (默认的host是bolt://localhost:7687,默认的用户是neo4j,其默认的密码是:neo4j,第一次成功登陆到Neo4j服务器之后,需要重置密码

⭐如果忘记了密码,解决方法是停止服务,进入/data/dbms目录,删除auth文件

其他方式:使用exe文件安装Neo4j

  • Linux 安装 Neo4j

使用Linux系统,最低要求使用EXT4文件系统(或类似)。推荐使用EXT4、ZFS等文件系统。CentOS 6.5使用的是EXT4文件系统,CentOS 7 使用的是XFS文件系统。XFS是一个比EXT4更加高级的文件系统,所以CentOS 6.5以上版本都符合要求。即Linux操作系统可以使用Ubuntu、Debian或CentOS 6.5及以上版本。

CentOS 6.9教程:基于模板的电影知识图谱问答系统总结(Linux CentOS版)

  • 中文版Neo4j

微云数聚(北京)有限公司自主研发实现的Neo4j简体中文版。该版本除了提供Neo4j简体中文界面外,还提供了特别适合中国用户习惯的一组扩展功能。

【Neo4j 简体中文版】下载地址:Neo4j 产品- 微云数聚 (目前支持Windows、Linux

【导入精灵】:一种支持将Excel、MySQL和Oracle等数据简便地导入到Neo4j的工具

【导入精灵】 下载地址:http://we-yun.com:8000/ToNeo4j/

# Neo4j 配置

配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任意配置,就可以启动服务器。

⭐Neo4j图数据库配置文件详解

    1. 核心数据文件的位置

例如,核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新配置选项:

# The name of the database to mount
#dbms.active_database=graph.db

2. 安全验证,默认是启用的

# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false

取消该注释,则控制台就不会再输出下图所示警告

    3. 配置JAVA 堆内存的大小

如果内存不够,会报错:Neo4j bulk import “neo4j-admin import” OutOfMemoryError: Java heap space and OutOfMemoryError: GC overhead limit exceeded

# Java Heap Size: by default the Java heap size is dynamically
# calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum heap size.
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m

    4. 配置访问

Neo4j的默认配置只支持本地访问,为了使其能够支持远程访问,可以修改相关配置。

Neo4j支持三种不同的连接方式:Bolt、HTTP、HTTPS。Neo4j的Web客户端使用的是HTTP连接方式,在程序开发中一般可使用HTTP和Bolt连接方式。HTTPS需要有安全证书支持,如果想让数据库开放在外网中访问,可以使用这种连接方式。

5. 负载均衡

当使用图数据库集群时,我们应该考虑集群的负载均衡,从而最大化吞吐量并减少延迟时间。Neo4j自身没有负载均衡功能,而是依赖于网络基础设施的负载均衡能力。

# Cypher

像Oracle数据库具有查询语言SQL,Neo4j具有Cypher作为查询语言。

Cypher是一种声明式的模式匹配查询语言,使图数据库管理变得易于理解、易于操作,即便是技术较差的用户也可以使用Cypher轻松操作图数据库。

neo4j的Cypher命令框(换行按 Shift + Enter、Cypher用 // 进行注释

语法

如果我们想用Cypher来表达罗密欧爱朱丽叶,那么Cypher的语法如下:

(romeo:Person{name:"Romeo"}) - [:LOVES] -> (juliet:Person{name:"Juliet"})

(NODE1) - [:RELATION] -> (NODE2)

语法约定

节点用小写驼峰;标签用大写驼峰;关系用蛇形大写(类似IS_A);属性名用小写驼峰;关键词全部用大写。

关于大小写

大小写敏感:节点标签、关系类型、属性名/键

大小写不敏感:Cypher 关键字

  • 创建数据(CREATE)

在neo4j创建该节点及其关系。我们创建了一个节点romeo,它带有Person标签和一个字符类型的name属性,属性值为Romeo。然后创建了一个叫LOVES的关系连接到另一个节点juliet

CREATE (romeo:Person{name:"Romeo"}) - [:LOVES] - > (juliet:Person{name:"Juliet"})
  • 读取数据(READ)

MATCH (n:Person) - [:LOVES] - ()
WHERE toLower(n.name)="juliet"
RETURN n ORDER BY n.age ASC
SKIP 2 LIMIT 5;# asc从小到大,没有age属性的节点将放在列表最后
# SKIP和LIMIT用于对结果进行分页

根据某属性查询某节点

查询节点的所有属性

查询节点的所有键

  • 更新数据(UPDATE)

MATCH (n:Person)
SET n.age=n.age+1
RETURN n;
  • 删除数据(DELETE)

MATCH (r:Person{name:'romeo'})
DELETE r;
  • MERGE

MERGE比较像MATCH和CREATE的混合。如果MERGE语句中描述的模式在图中已经存在,语句描述的标识符将被绑定在这个存在的数据中,这就好比MATCH;如果它描述的模式在图中不存在,那么MERGE会先创建它,这就好比CREATE。

了解CQL更多命令请点击 [链接]

俞方桦博士系列教程

Neo4j Cypher 图数据库查询语言快速参考 - 【1】 基本语法 : PDF

Neo4j Cypher 图数据库查询语言快速参考 - 【2】创建和删除节点、关系和属性:PDF

Neo4j Cypher 图数据库查询语言快速参考 - 【3】索引和限制:PDF

# 图数据库与关系数据库

原生图存储和原生图处理并不一定比其他方式更好或更差——这不过是典型的工程取舍而已。除了采用了特定的存储和处理方式以外,图数据库还要使用特定的数据模型。常用的几种不同的图数据模型,包括属性图、超图和三元组。

原生图存储的好处是,它的栈是专门为性能和扩展性设计建造的。但相对的,非原生图存储通常建立在非常成熟的非图后端(如MySQL)之上,运维团队对它们的特性烂熟于心。原生图处理(免索引邻接)虽然在遍历查询性能优势很大,但代价是一些未使用遍历的查询会比较困难,而且需要占用巨大的内存。

虽然E-R图是一种图,但我们马上就能从它看出关系模型在对复杂领域建模的短板。尽管它可以像图数据库一样给联系命名(关系型数据库没有这一功能),但在两个实体之间,E-R图只允许我们建立一条、无向的命名的联系。从这个方面来说,真实世界的实体之间的联系丰富多彩、种类繁多,关系模型就不适合表示了。

# 系列

Neo4j:入门基础(一)之安装与使用

Neo4j:入门基础(二)之导入CSV文件

Neo4j:入门基础(三)之APOC插件

Neo4j:入门基础(四)之Java API

Neo4j:入门基础(五)之SDN

Neo4j:入门基础(六)之从MySQL导入数据

Neo4j:入门基础(七)之Algo插件

Neo4j:入门基础(八)之Traversal API

# 参考

Neo4j:网络连接配置

史上最全面的Neo4j使用指南


Neo4j:入门基础(一)之安装与使用相关推荐

  1. Neo4j:入门基础(八)之Traversal API

    前言 Neo4j数据库的高性能查询表现就是根据图数据库结构的自然伸展特性,使用免索引邻近查询算法,即图的遍历来实现的.图的遍历是图数据结构所具有的独特算法. 根据遍历时查找数据的路径不同,遍历算法可以 ...

  2. 7.1 pdo 宝塔面板php_小白入门基础傻瓜式操作PHP面板安装使用_Bt宝塔面板

    ​ 小白入门基础傻瓜式操作PHP面板安装使用--Bt宝塔面板 从购买服务器到安装面板在到搭建网站(最基础的教程,以后会延伸到部署项目) 不用写代码谁都可以做到搭建自己的网站(PHP类)还有小程序,只要 ...

  3. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  4. Java基础入门:IDEA软件安装和软件初始化设置

    IDEA是一个专门针对Java的集成开发工具(IDE),由Java语言编写.所以,需要有JRE运行环境并配置好环境变量. 它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是I ...

  5. Java入门基础(十四)Maven仓库的安装

    文章目录 一.下载配置Maven环境 1.下载maven.jar解压缩,放在一个文件夹下 2.点击此电脑=>属性=>高级设置=>环境变量=>系统变量=>新建 3.变量名为 ...

  6. PostgreSQL在Linux和Windows安装和入门基础教程

    StackOverflow 2022 开发者报告:总体而言,MySQL 依然是最受欢迎的的数据库.但在专业开发者群体中,PostgreSQL(46.48%)已经超越 MySQL(45.68%)夺得了第 ...

  7. 知识图谱neo4j入门之魔兽世界人物可视化

    前言 系统环境:windows10 这篇文章主要记录 自己学习neo4j环境部署及初步入门使用. 主要参考的链接如下: 魔兽世界简易知识图谱 neosemantics环境配置:tps://www.ji ...

  8. Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱

    Neo4j入门实战,以三国英雄关系为例入门Neo4j知识图谱 前言 一.Neo4J简介 对比关系型数据库: 对比其他NoSQL数据库 二.Neo4J下载安装 方法1:安装Neo4j Community ...

  9. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

最新文章

  1. iphone adb android,通过ADB获取Android手机信息
  2. 【Joomla】TinyMCE - Add custom styles
  3. 小学五年级计算机进度安排,五年级下册信息技术年度教学计划
  4. memcache 安装与简单使用
  5. 晒晒今年淘宝网买的李宁鞋子
  6. batchsize大小对训练速度的影响
  7. php oracle 删除 数据,oracle怎么清空表数据
  8. [C++] - 单例模式 释放资源 析构函数的应用
  9. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测
  10. c++11 实现半同步半异步线程池
  11. ENVI-IDL基础学习(1)
  12. 硬盘播出系统_昌吉广播电视台中型多功能演播室系统概述
  13. Mac系统PR2022安装BeatEdit插件遇到各种问题解决
  14. JAVA 处理带AM 或 PM的时间
  15. 使用GDAL/GEOS求面特征的并集
  16. 最齐全的电子数码3d打印模型素材,速来收藏
  17. vue+springcloud出现跨域问题
  18. 在职研究生计算机科学与技术考研考哪些科目,计算机在职研究生考试科目
  19. 如何设计出用户喜爱的API
  20. Google Chrome 旧版本下载地址

热门文章

  1. 软件测试——缺陷密度、缺陷数据分析的重要性、缺陷数据分析的数据指标
  2. 哈密顿回路C/c++
  3. 为什么朋友圈总有些环游世界的人? 可能大部分是...
  4. SpringBoot 实现分组校验
  5. 1995年 章丘第二职业中专计算机专业,章丘第二职业中等专业学校2020年招生录取分数线...
  6. 和ChatGPT聊天,你会了吗?
  7. 拾光匣子小程序描述以及功能
  8. 牛鑫宇老师9月26号为重庆某银行讲授《22年税务新政解析与税务风险防范对》课程现场分享
  9. Pandas数据预处理与数据重塑案例
  10. PMP考试-团队发展主要分为哪几个阶段-(第6版)