Neo4j 学习笔记1

这篇具有很好参考价值的文章主要介绍了Neo4j 学习笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础知识

NoSQL (Neo4j) 比MySQL查询速度快很多,这与图结构有关,MySQL的查询时间随数据库大小(查询深度)指数增长,而Neo4j使用遍历API的查询时间是线性增长。
SQL是关系型技术使用的一种语言,全称是Structured Query Language,是“结构化查询语言”。
实际上NoSQL数据库应该属于非关系数据库,其中包含图形数据库,Neo4j就是一种通用图形数据库。

NoSQL的分类

  • 主键值存储:处理大量并发访问数据,比如缓存。存在哈希表中使用put-get(write-read)操作
    • 缓存,快速读取访问简单域,大规模并发系统
    • Redis, Memcached, Tokyo Cabinet
  • 列族存储:分布式主键值,大数据时保持高性能和高可用性
    • 大规模写入,并发数据访问(读写)
    • Google BigTable, Cassandra,Apache HBase
  • 面向文档的数据库:简单文件,无架构,可以添加自包含文件和关联关系。类似以文件作为键值。
    • 当域模型是自然文件,自然文件数据结构简化开发,高可扩展系统
    • MongoDB, CouchDB
  • 图形数据库:数据以非自然方式存储,图形遍历查询效率性能好
    • 互联数据,节点关系表示的域,社交网络,推荐引擎,访问控制列表
    • Neo4j, AllegroGraph, OrientDB

Neo4j理解

与ACID兼容,为原子性A,一致性C,隔离性I,持久性D。是一个事务数据库

Neo4j版本

目前已更新到版本5,可以分多种版本

  • Neo4j Server
    • Neo4j Enterprise 企业版,比社区版多一部分功能,支持数据库集群,对超大规模数据存储的支持,对更多CPU内核查询执行优化,在线备份等DBA功能,其他组件比如Bloom
    • Neo4j Community 社区版,完全开源的Java软件项目,GPL v3开源协议
    • Neo4j Desktop 桌面端,包含试用的企业版,有应用管理器,图形化界面
  • Neo4j Driver
  • Neo4j Integration & Connectors

使用方式

  1. Cypher图数据库查询语言
    Cypher可以在Neo4j Browser1 或者通过浏览器中执行,也可以在cypher-shell2中、通过命令行执行,或者作为过程参数在Neo4j应用客户端执行。

  2. Neo4j应用客户端Desktop
    客户端应用可以以类似JDBC3或ODBC4的方式从远程访问数据库、提交Cypher查询,并接收返回结果。Neo4j官方提供的客户端驱动支持以下5种语言:Java, JavaScript, Net, Python, Go
    语言的驱动可以从这里访问:neo4j官方
    Neo4j的社区用户还开发了其他语言驱动,包括C/C++、R等;以及应用开发框架来简化实现、封装操作,最常用的当属SDN(数据集成)5(官方,教程)、以及OGM(对象封装)6

  3. Neo4j服务器端扩展
    Neo4j是纯Java应用,支持在服务器端部署的JAR包来扩展数据库功能。JAR包中的过程和函数可以在Cypher语句中调用。最有名的服务器端扩展有:APOC,ALGO(最短路径搜索,中心性,社区检测,相似度,链接预测功能)。服务器端扩展可以使用Neo4j核心数据库提供的遍历框架(Traversal Framework) ,以及核心API(Core API)来实现需要的功能。

桌面端下载安装

官网前往官网下载并安装
企业版本收费,桌面版本与社区版本均免费,区别在于桌面端有可视化客户端,社区版本运行都是在命令行。
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
剩下就是填表下载,软件免费,验证邮箱注册即可。可以选择安装位置和数据存储位置,由于一般数据库较大,数据存储位置尽量留较多的存储空间,不建议放C盘。

桌面端基本使用

第一次打开软件速度较慢
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
提示更新时暂时没有更新,选了later
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
桌面端菜单栏包括:项目,数据库和图软件。
项目栏一个项目可以调用多个数据库,可以是本地数据库,也可以是远程数据库。新建本地数据库时可以改变Neo4j的版本,如果存在未使用过的版本,新建后会自动下载。
数据库栏链接的数据库会在按照版本排列,数据库有红色stop,黄色Starting和绿色Active三种状态
图软件当数据库运行时,可以在图软件中使用Neo4j Browser工具进行手动输入数据。或者直接open里面选择打开方式为Neo4j Browser。

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

Neo4j Browser

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
Database information里面包括节点,关系,属性值,数据库连接信息和数据库信息介绍。通过选中可以在右边打开新窗口进行可视化。
右上为命令行,可以使用cypher语言来新建节点和关系。

create (Variable:Label{Key1:Value1,......)})return Variable
create(n:大学{name:“武汉大学”}),(:大学{name:“北京理工大学”})
create (n:Stock{name:'安琪酵母',code:'600298',launchDate:date("2000-08-18")})return n
create(n:Stock{name:'招商银行',code:'600036',launchDate:date("2002-04-09")}),(:Stock{name:'中科创达',code:'300496',launchDate:date("2015-12-10")}),(:Stock{name:'华工科技',code:'000988',launchDate:date("2000-06-08")}),(:Stock{name:'国信证券',code:'002736',launchDate:date("2014-12-29")})
MATCH(p1:`大学`),(p2:`院系`)Create(p1)-[r:院系]->(p2)
//点击运行

删除节点

//根据id删除节点
MATCH (r)
WHERE id(r) = 6
DELETE r

查询节点

MATCH(a:Stock)WHERE a.name = '安琪酵母' RETURN a

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
隐藏节点,显示属性(关系)

查询某个标签的所有节点

MATCH(a:Stock)  RETURN a

查询节点间关系

MATCH(:Stock{name:'安琪酵母'})-[r]->(:Province{name:'湖北'}) RETURN type(r)

获取该节点的所有关系类型

MATCH(:Stock{name:'安琪酵母'})-[r]->() RETURN type(r)

删除节点(先删除关系后才可以删除节点)

MATCH(a:Stock)WHERE a.name='中科创达' DELETE a

删除某标签所有节点或所有节点

MATCH(n:Stock)
DELETE n
//
MATCH(n)
DELETE n

删除节点间关系,该节点所有的关系,标签的所有关系,删除所有

MATCH(:Stock{name:'安琪酵母'})-[r]->(:Province{name:'湖北'})DELETE r
\\
MATCH(:Stock{name:'安琪酵母'})-[r]->()DELETE r
\\
MATCH(:Stock)-[r]->()DELETE r
\\
MATCH(n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

更新

  • 增加节点属性MATCH(a:Stock)WHERE a.name='安琪酵母'SET a.abbreviation='AQJM'RETURN a
  • 删除节点属性MATCH(a:Stock)WHERE a.name='安琪酵母'REMOVE a.abbreviation

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
导入CSV文件(如果包含中文需要使用UTF-8编码),删除所有

LOAD CSV WITH HEADERS FROM 'file:///exchange.csv'AS line CREATE(:Exchange{name:line.name,chinesename:line.chinesename,id:line.id})
\\
LOAD CSV WITH HEADERS FROM 'file:///Stocks-exchange.csv'AS line MATCH(from:Stock{cocode:line.stock_code}),(to:Exchange{id:line.exchange_id})MERGE (from)-[r:交易所]->(to)

社区版下载与安装

网络配置

Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。

计算机防火墙中,tcp连接有三次握手,请求连接,同意连接,建立连接。入站规则inbound和出站规则outbound针对请求连接、同意连接的网络包。
比如:A入站允许B,出站禁止B,那么A可以访问B而B不能访问A;A入站禁止B,出站允许B,那么A不能访问B而B可以访问A。

安全域与工作模式

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
安全域为UNtrust不信任区,DMZ隔离区,Trust信任区,Local本地,Management管理。依次安全性增加,安全优先级分别为5,50,85,100,100。
报文从低级别的安全区域向高级别的安全区域流动时为入方向(Inbound),报文从由高级别的安全区域向低级别的安全区域流动时为出方向(Outbound)。
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
交换模式(两层模式)
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
路由模式(三层模式)
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
混合模式
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

配置各个网络协议的监听地址和接口。Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

报错警告

  • 报错1:无法启动
    Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
    考虑是因为桌面端和社区版冲突,端口占用,打不开7474端口。
    停止数据库,关闭桌面端软件,重新启动community,成功。
  • 报错2:无法打开browser
    使用ip地址无法进入http://localhost:7474/,显示localhost拒绝连接。打开windows功能如下。
    Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
    没有解决
    另一方法为进入community安装路径/conf/neo4j.conf,打开后在该位置取消注释,不同版本的代码不同。同时要保证地址为0.0.0.0,才可以被远程主机访问。
    因为设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:listen_address地址。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。
    Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记
    Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

问题解决

  • 报错3:无法安装服务
Unmatched argument at index 0: 'install-service'
Did you mean: neo4j windows-service install or neo4j windows-service uninstall or neo4j windows-service?

解决方法在bin目录下运行 :
neo4j.bat windows-service install
提示安装成功后可以运行
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

社区版基本使用

数据库管理

neo4j start
neo4j stop

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

用户管理

使用bin文件夹下面的cypher-shell实现命令行启动
Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

Neo4j 学习笔记1,知识图谱学习,neo4j,学习,笔记

//添加用户
CALL dbms.security.createUser(username,password,requirePasswordChange)

数据库备份与恢复

//离线备份,停止neo4j数据之后
neo4j-admin dump --database=<database> --to=<destination-path>
//离线恢复
neo4j-admin load --from=<archive-path> --database=<database> --froce

使用过程中的报错与警告

This query builds a cartesian product between disconnected patterns.
If a part of a query contains multiple disconnected patterns,
this will build a cartesian product between all those parts.
This may produce a large amount of data and slow down query processing.
While occasionally intended, it may often be possible to reformulate the
query that avoids the use of this cross product, perhaps by adding a
relationship between the different parts or by using OPTIONAL MATCH
(identifier is: (q))

如果您MATCH两个不同的标签,而它们之间没有任何关系,那么您将收到此警告。原因是因为如果你这样做:

MATCH (a:Foo), (b:Bar)
Neo4j 的工作就是找到这两个节点的所有可能的组合。因此,对于 a 的第一个匹配,它将为 b 的每个匹配返回一行,对于 a 的第二个匹配,它将再次返回 a b 的每个匹配行,依此类推。因此,您将在结果中得到 (Foo 节点数) x (Bar 节点数) 总行数。随着数据库的增长,这对性能来说确实很糟糕。

使用Python调用

urllib & urllib2 & urllib3

urllib3官方文档
urllib3其他参考文档
对比urllib和urllib3
对比urllib和urllib2


  1. Neo4j数据库面向开发人员的工具,允许开发人员执行查询语句并可视化结果 ↩︎

  2. cypher shell 是neo4j出的一个终端,可以直接运行cypher命令,也可以执行cypher脚本,还可以通过其他终端以运行cypher-shell命令的方式,运行cypher命令 ↩︎

  3. Java DataBase Connectivity,即Java数据库连接API。简而言之,就是通过Java语言来操作数据库。 ↩︎

  4. ODBC是开放式数据库连接。ODBC也是一个API,充当客户端应用程序和服务器端数据库之间的接口 ↩︎

  5. Spring Data Neo4j ↩︎

  6. OGM 类似于 ORM,意为 Object Graph Mapping,这样可以实现一个对象和 Node 的关联 ↩︎文章来源地址https://www.toymoban.com/news/detail-767463.html

到了这里,关于Neo4j 学习笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自学笔记——利用python开展Neo4j图数据库知识图谱构建和统计分析

    前言: 在上《高级统计学》时,老师提到结合所学知识点自行设计任务,并利用所学完成。 近期正好在学习python的编程和利用neo4j开展知识图谱构建,于是在征得老师同意下,尝试完成任务:“统计近6年社科基金,并构建知识图谱。”   入门小白自学笔记,请高手勿喷。

    2024年02月16日
    浏览(58)
  • 知识图谱基本工具Neo4j使用笔记 三 :Py2neo 基本增删改查使用

    每天掌握一点,创建 --修改–查询–删除 知识图谱基本工具Neo4j使用笔记 一 :入门基本操作 Python操作api py2neo 是一个Python库,用于连接和操作Neo4j图数据库。它提供了一组API,可让用户在Python中轻松地 创建 、 查询 和 操纵图形数据 。 py2neo允许用户使用 Python 代码 创建节点

    2024年02月11日
    浏览(56)
  • 医疗知识图谱 neo4j

    开源项目: https://github.com/liuhuanyong/QASystemOnMedicalKG pip install pyahocorasick pip install py2neo 需要改的点: 1.改连接的方式 2.改读文件的方式 MedicalGraph 运行: build_medicalgraph.py 时间很长,几个小时 关闭neo4j客户端 导入文件 文件见网盘 1.首先通过ahocorasick提取出,属于哪种疾病

    2024年02月09日
    浏览(50)
  • 学科知识图谱学习平台项目 :技术栈Java、Neo4j、MySQL等超详细教学

    项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域) :汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用 CSDN 平台,自主完成项目设计升级,提升自

    2024年02月10日
    浏览(52)
  • Neo4j简单构建知识图谱实例

    目录  一、需要两组数据 二、提取所需专题数据 三、利用结巴分词将专题数据分词 四、连接并绘制知识图谱 五、消除重复节点及重复关系 六、结果展示 Ps:在使用Neo4j前,需要先在该安装路径文件下cmd运行,输入neo4j console 即可启动,可根据关闭时输入neo4j stop,如下图所示

    2023年04月12日
    浏览(58)
  • 知识图谱构建: Neo4j 常见实例应用

    社交网络图:存储用户之间的关系和联系,如朋友关系、粉丝关系等。 产品推荐系统:利用用户的历史购买记录和评分数据,推荐相似的产品。 客户关系管理:存储企业和客户之间的联系,包括联系信息、交易记录等。 知识图谱:存储各种实体之间的关系,如人物、事件、

    2024年02月10日
    浏览(53)
  • 基于neo4j的宠物知识图谱问答系统

    在当前数字化的时代,人工智能技术的迅速发展为信息检索和数据处理带来了革命性的变化。特别是在宠物领域,一个智能的宠物关系图谱问答系统能够为宠物爱好者提供全面、精准的信息服务。本文将详细介绍一个基于Python、Django、Flask、Neo4j以及py2neo等技术栈实现的宠物关

    2024年02月20日
    浏览(94)
  • 再相逢【知识图谱】中文医学知识图谱CMeKG,中文产科医学知识图谱COKG | 附:图数据库Neo4j下载安装教学(遇到问题并解决) + Neo4j基本操作

      无论结果如何,请相信那些你努力游向岸的日子都有它的意义。   🎯 作者主页 : 追光者♂ 🔥          🌸 个人简介 : 计算机专业硕士研究生 💖、 2022年CSDN博客之星人工智能领域TOP4 🌟、 阿里云社区特邀专家博主 🏅、 CSDN-人工智能领域新星创作者 🏆、 预期20

    2024年02月14日
    浏览(82)
  • 知识图谱实战(03):python操作neo4j实战

    Neo4j 提供了一个Python版本的驱动包,用来连接Neo4j数据库,从而完成图数据库的增删改查操作。 1、安装指定版本的驱动包(我们这里采用Neo4.x版本,同neo4j安装包保持一致即可) $ pip install neo4j==4.4.8  --upgrade

    2024年02月03日
    浏览(43)
  • Springboot集成neo4j实现知识图谱关系图

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 使用neo4j来完成人员关系 公司项目有一个功能需要将各个人员关系列出,在参加评选的时候,进行展示和筛选 neo4j是高性能的NOSQL图形数据库,在neo4j中,社区版本只能使用一个database。在neo4j中不存在表的

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包