Neo4j数据库介绍及简单使用

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

图数据库介绍

图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络拓扑、生物信息学等领域的数据。
图数据库通常具有以下特点:

  1. 节点(Nodes): 表示图中的实体,每个节点都可以包含属性,用于描述实体的特征。
  2. 边(Edges): 表示图中节点之间的关系,边也可以包含属性,用于描述关系的特征。
  3. 图查询语言: 图数据库通常配有一种特定的查询语言,用于检索和操作图数据。Cypher是一个常见的图查询语言,用于Neo4j图数据库。
  4. 灵活的模型: 图数据库的数据模型非常灵活,可以轻松表示复杂的关系结构,而不需要预定义的模式。
  5. 性能优化: 图数据库在处理图形数据时具有高性能。由于它们专门设计用于处理节点和边之间的关系,因此在执行与图形相关的查询时通常能够提供较高的性能。

应用图数据库的场景包括:

  • 社交网络分析: 分析社交网络中的用户关系、群体结构等。
  • 推荐系统: 基于用户和物品之间的关系提供个性化的推荐。
  • 网络拓扑: 管理和分析复杂的网络结构,如计算机网络或交通网络。
  • 生物信息学: 分析基因、蛋白质和其他生物实体之间的关系。

图数据库的例子包括Neo4j、Amazon Neptune、ArangoDB等。这些数据库在处理具有复杂关系的数据时通常比传统的关系型数据库更有效。
为什么要使用图数据库:

在数据关系中心,图形数据库在查询速度方面非常高效,即使面对深度和复杂的查询也是如此。之前有人做了个实验,在一个社交网络找到最大深度为 4 的朋友的朋友,其中当深度为 4 的时候,图数据库的执行时间约为关系型数据库的 一千五百分之一,。

图数据库是以图结构存储和查询数据的数据库。在图数据库中,节点和关系取代表,外键和 Join。在图数据库中,无论何时运行类似 Join 的操作,数据库都会使用列表并直接访问链接的节点,而无需进行昂贵的搜索和匹配运算。
各个数据库的优劣点:

数据库类型 数据类型 优势 劣势 举例
键值数据库 键值对 简单、高性能 不适用于复杂查询,没有内建查询语言 Redis、DynamoDB、Riak
列存储数据库 适用于大规模数据分析,压缩效果好,读取特定列的性能高 不适合频繁更新操作 Apache Cassandra、HBase、Bigtable
文档性数据库 文档 灵活,存储和查询复杂的数据结构,支持丰富的查询语言 处理大量数据时性能可能不如专门优化的存储引擎 MongoDB、CouchDB、Elasticsearch
图数据库 节点和边 高效处理复杂关系型数据,适用于网络分析、社交网络、推荐系统等 不适合简单查询,对于关系不是核心的应用可能过于复杂 Neo4j、ArangoDB、Amazon Neptune

Neo4j 介绍

Neo4j 是一种图数据库管理系统,专门设计用于存储和处理图形数据。主要有以下构建元素:

  • 节点:节点是图中的基本单元,用于表示实体。每个节点可以包含一个或多个属性,用于描述实体的特征。
  • 属性: 节点和关系可以包含属性,属性是键值对的形式,用于存储有关节点或关系的信息。属性提供了关于节点或关系的详细数据。
  • 关系:关系表示节点之间的连接或关联。它有一个方向,描述了连接的含义。关系也可以包含属性,用于描述关系的特征。
  • 标签:标签是用于将节点分组的一种方式。节点可以附加一个或多个标签,这样可以更轻松地对节点进行分类和检索。标签类似于节点的“类型”。
  • 数据浏览器: Neo4j提供了一个数据浏览器,是一个可视化工具,用于浏览和查询图数据库中的数据。通过数据浏览器,用户可以执行Cypher查询、可视化图形数据,并了解节点、关系和属性的结构。

Neo4j 使用场景:

Neo4j 常用于欺诈检测、实时推荐引擎。Neo4j常用于欺诈检测和实时推荐引擎等应用场景,这是因为Neo4j在处理复杂关系型数据方面具有优势。

Docker 安装 Neo4j

安装Neo4j可以通过Docker容器化来简化和隔离部署过程。以下是在Docker中安装Neo4j的一般步骤:

  1. 拉取Neo4j镜像: 打开终端(命令行)并运行以下命令来拉取Neo4j官方Docker镜像:
docker pull neo4j


这将从Docker Hub下载最新的Neo4j镜像。

  1. 运行Neo4j容器: 运行以下命令以在容器中启动Neo4j数据库。请注意,使用-p选项将Neo4j的HTTP端口映射到本地主机端口(例如,7474和7687):
docker run --name my-neo4j -e "NEO4J_AUTH=neo4j/123456" -p 7474:7474 -p 7687:7687 -d neo4j


这将在后台运行Neo4j容器,并将其命名为my-neo4j。你可以根据需要更改容器名称。

  1. 访问Neo4j浏览器: 一旦容器启动,你可以通过浏览器访问Neo4j浏览器。打开浏览器并访问 http://localhost:7474。默认的用户名为 neo4j,初始密码会在第一次访问时要求更改。
  2. 配置连接: 如果你的应用需要连接到Neo4j数据库,确保在应用中使用正确的Neo4j连接字符串(例如 bolt://localhost:7687)。
  3. 停止和删除容器: 如果你想停止Neo4j容器,可以运行以下命令:
docker stop my-neo4j

neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle
Neo4j 的 Cypher 语言是专门为处理图形数据而构建的,CQL 代表 Cypher 查询语言。像 Oracle 数据库具有查询语言 SQL,Neo4j 具有 CQL 作为查询语言。
对于 CQL 而言,它是一种声明性模式匹配语言,遵循 SQL 语法。

CQL 使用基础

简单的 CQL 命令及用法如下:

CQL 命令 用法
CREATE 创建节点
MATCH 检索有关节点,关系和属性数据
RETURN 返回查询结果
WHERE 提供条件过滤检索数据
DELETE 删除节点和关系
REMOVE 删除节点和关系的属性
ORDER BY 排序检索数据
SET 添加或更新标签

创建节点(CREATE)

CREATE (n:Label {property1: value1, property2: value2, ...})
  • 示例:
CREATE (person:Person {name: 'John', age: 30})

创建关系(CREATE)

MATCH (node1:Label1), (node2:Label2)
WHERE node1.property = value1 AND node2.property = value2
CREATE (node1)-[:RELATIONSHIP_TYPE]->(node2)
  • 示例:
MATCH (john:Person {name: 'John'}), (jane:Person {name: 'Jane'})
CREATE (john)-[:KNOWS]->(jane)

查询节点和关系(MATCH)

MATCH (node:Label {property: value})-[:RELATIONSHIP_TYPE]->(relatedNode)
RETURN node, relatedNode
  • 示例:
MATCH (person:Person {name: 'John'})-[:KNOWS]->(friend)
RETURN person, friend

更新节点属性(SET)

MATCH (node:Label {property: value})
SET node.property = newValue
  • 示例:
MATCH (person:Person {name: 'John'})
SET person.age = 31

删除节点及其关系(DELETE)

MATCH (node:Label {property: value})-[relation:RELATIONSHIP_TYPE]->()
DELETE node, relation
  • 示例:
MATCH (person:Person {name: 'John'})-[relation:KNOWS]->()
DELETE person, relation

查询节点及其关系(RETURN)

MATCH (node:Label {property: value})-[:RELATIONSHIP_TYPE]->(relatedNode)
RETURN node, relatedNode
  • 示例:
MATCH (person:Person {name: 'John'})-[:KNOWS]->(friend)
RETURN person, friend

查询节点的属性(RETURN)

MATCH (node:Label {property: value})
RETURN node.property
  • 示例:
MATCH (person:Person {name: 'John'})
RETURN person.age

Go 语言创建 Neo4j 数据库

使用 Go 语言创建 Neo4j 数据库西游数据并写入 Neo4j 数据库中:

package main

import (
	"fmt"
	"github.com/neo4j/neo4j-go-driver/v4/neo4j"
	"log"
)

func main() {
	// Neo4j数据库连接信息
	neo4jURI := "bolt://43.143.147.135:27687"
	username := "username"
	password := "password"

	// 创建Neo4j数据库驱动
	driver, err := neo4j.NewDriver(neo4jURI, neo4j.BasicAuth(username, password, ""))
	if err != nil {
		log.Fatal(err)
	}
	defer driver.Close()

	// 创建Neo4j数据库会话
	session, err := driver.Session(neo4j.AccessModeWrite)
	if err != nil {
		log.Fatal(err)
	}
	defer session.Close()

	// 定义要写入的数据
	data := []string{
		`CREATE (tang:Character {NodeID: 1, Name: 'TangSeng', Title: '唐僧'})`,
		`CREATE (wukong:Character {NodeID: 2, Name: 'SunWukong', Title: '孙悟空'})`,
		`CREATE (bajie:Character {NodeID: 3, Name: 'ZhuBajie', Title: '猪八戒'})`,
		`CREATE (wujing:Character {NodeID: 4, Name: 'ShaWujing', Title: '沙悟净'})`,
		`CREATE (xitian:Place {NodeID: 5, Name: 'Xitian', Title: '西天'})`,
		`CREATE (journey:Task {NodeID: 6, Name: 'Journey', Title: '西天取经任务'})`,
		`MATCH (master:Character {Name: 'TangSeng'}),
			(student:Character {Name: 'SunWukong'}) CREATE (student)-[:MasterOf]->(master)`,
		`MATCH (master:Character {Name: 'TangSeng'}),
			(student:Character {Name: 'ZhuBajie'}) CREATE (student)-[:MasterOf]->(master)`,
		`MATCH (master:Character {Name: 'TangSeng'}),
			(student:Character {Name: 'ShaWujing'}) CREATE (student)-[:MasterOf]->(master)`,
		`MATCH (companion1:Character {Name: 'SunWukong'}),
			(companion2:Character {Name: 'ZhuBajie'}) CREATE (companion1)-[:CompanionOf]->(companion2)`,
		`MATCH (companion1:Character {Name: 'SunWukong'}),
			(companion2:Character {Name: 'ShaWujing'}) CREATE (companion1)-[:CompanionOf]->(companion2)`,
		`MATCH (character:Character {Name: 'SunWukong'}),
			(place:Place {Name: 'Xitian'}) CREATE (character)-[:TravelsTo]->(place)`,
		`MATCH (character:Character {Name: 'ZhuBajie'}),
			(place:Place {Name: 'Xitian'}) CREATE (character)-[:TravelsTo]->(place)`,
		`MATCH (character:Character {Name: 'ShaWujing'}),
			(place:Place {Name: 'Xitian'}) CREATE (character)-[:TravelsTo]->(place)`,
		`MATCH (place:Place {Name: 'Xitian'}),
			(task:Task {Name: 'Journey'}) CREATE (task)-[:MissionTo]->(place)`,
	}

	// 执行CQL命令
	for _, query := range data {
		result, err := session.Run(query, nil)
		if err != nil {
			log.Fatal(err)
		}
		// 输出查询结果
		fmt.Printf("Result: %+v\n", result)
	}
}

通过登录到 Neo4j 浏览器中可以发现成功写入数据:
neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle

  1. 创建新的关系,比如猪八戒和沙悟净曾是同事关系,具体数据库执行命令如下:
MATCH (n:Character {Name:"ZhuBajie"}),(m:Character {Name:"ShaWujing"}) Create (n)-[r:同事]->(m) return n.Name,type(r),m.Name

执行成功后,关系图谱增加了一条关系,当执行两次后,关系图谱会增加两条相同的关系:
neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle

  1. 当关系增加多了之后,要删除多余的关系,具体命令如下:
MATCH (n:Character {Name:"ZhuBajie"})-[relation:同事]->()
WITH relation LIMIT 1
DELETE relation

成功执行后关系恢复正常关系。
neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle

  1. 当人员出现变动后,比如孙悟空三打白骨精后被赶回花果山,公司架构出现问题,要三处孙悟空的人物关系,首先是不能直接删除节点的,以为他具备关系,因此具体的命令如下:
MATCH (n:Character{Name:"SunWukong"})-[r]->(m) delete r return Type(r)
MATCH (n:Character{Name:"SunWukong"}) Delete (n)

执行完成后人物图谱关系如下图所示:
neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle

  1. 当孙悟空离开西游团队后,团队进入了新的员工六耳猕猴,唐僧作为它的Master,猪八戒作为它的同事,新的节点及关系添加的具体命令如下:
CREATE (tang:Character {NodeID: 6, Name: '六耳猕猴', Title: '六耳猕猴'})
MATCH (master:Character {Name: 'TangSeng'}),
			(student:Character {Name: '六耳猕猴'}) CREATE (student)-[:MasterOf]->(master)
MATCH (companion1:Character {Name: '六耳猕猴'}),
			(companion2:Character {Name: 'ZhuBajie'}) CREATE (companion1)-[:CompanionOf]->(companion2)

执行完成后新的团队组织关系如下:
neo4j多数据库,Neo4j数据库,数据库,neo4j,oracle
总结:以上是Neo4j的简单增删改查,对于熟练掌握Neo4j数据库来说还有很长的路要走和分析,后续需要在项目中不断学习和锤炼自己。文章来源地址https://www.toymoban.com/news/detail-757650.html

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

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

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

相关文章

  • Neo4j数据库使用相关

    做知识图谱相关项目,初步使用了neo4j数据库,简单记录一下使用过程和踩坑备忘~ 操作系统Win10+Neo4j社区版(community,版本4.4.30) 目录 一、安装 1.1 安装Java和Neo4j 1.2 环境变量设置 二、 Neo4j使用 2.1 安装服务 2.2 数据库使用 2.3 数据库备份  Java下载链接:Java Downloads | Oracle

    2024年04月16日
    浏览(42)
  • 图数据库_Neo4j和SpringBoot整合使用_实战创建明星关系图谱---Neo4j图数据库工作笔记0010

    2023-09-10 10:37:48 补充 注意:下面是旧版本的语法,如果你发现@NodeEntity这样的注解没有的话可以这样: 这里就要用@Node 另外如果@StartNode和@EndNode都没有了,那么说明是用法变了. 关于最新的用法,在官网有明确的说明和案例,很有用: 下面给出官网的案例:

    2024年02月12日
    浏览(34)
  • 【大数据】Neo4j 图数据库使用详解

    目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域

    2024年02月08日
    浏览(33)
  • 图数据库—Neo4j使用指南

    目录 Q / A Neo4j 安装 Basic concept Cypher Basic MATCH 查询 WITH INDEX 索引 最短路径 Shortest path Movie Graph Create 创建 Find 查找 Query 查询 Solve 最短路径 Bacon Path Recommend 推荐 Clean up 删除电影数据 LOAD CSV 加载 Persons Movies 数据 Northwind Graph Northwind 数据表结构 加载 Product Catalog CSV 文件 创建 Pr

    2024年02月02日
    浏览(34)
  • Neo4j图数据库的使用笔记

    安装准备: neo4j-3.4.0版本的zip包 找个目录解压安装zip包 启动neo4j 下载neo4j-3.4.0版本的zip包 可以去neo4j官网下载,也可以去微云数聚官网下载。 微云数聚是neo4j在国内的代理商。 解压到F:neo4jneo4j-chs-community-3.4.0-windows 控制台方式启动neo4j 通过7474端口访问neo4j提供的web管理工具

    2024年02月16日
    浏览(30)
  • 图数据库_Neo4j的使用场景_以及Windows版Neo4j Community Server安装_欺诈检测_推荐_知识图谱---Neo4j图数据库工作笔记0003

    可以看到使用场景,比如欺诈检测, 要建立图谱,才能进行,欺诈人员检测   可以看到图谱的各种应用场景 然后推荐引擎也需要,可以看到 在金融,旅行,求职招聘,保健,服务,媒体娱乐,都可以进行推荐   然后还有知识图谱 身份访问管理,这里,可以进行安全管理,可以挖掘出潜在关系

    2024年02月12日
    浏览(29)
  • 图数据库_Neo4j和SpringBoot Data整合使用_实战创建明星关系图谱---Neo4j图数据库工作笔记0010

    2023-09-10 10:37:48 补充 注意:下面是旧版本的语法,如果你发现@NodeEntity这样的注解没有的话可以这样: 这里就要用@Node 另外如果@StartNode和@EndNode都没有了,那么说明是用法变了. 关于最新的用法,在官网有明确的说明和案例,很有用: 下面给出官网的案例:

    2024年02月09日
    浏览(33)
  • Python操作Neo4j数据库使用案例

      Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简单直观,本文假设你已经安装好Neo4j数据库,并对知识图谱有一定的了解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。你可以访问(https://www.

    2024年02月03日
    浏览(30)
  • 使用apoc将数据从数据库导入neo4j

    1、创建实体 这段代码的目的是从 ClickHouse 数据库中加载数据到 Neo4j 图数据库,并在加载过程中使用 APOC(Awesome Procedures on Cypher)库提供的 apoc.merge.node 过程来合并数据,确保在图数据库中的节点具有唯一性。 逐行解释这段代码: CREATE CONSTRAINT uniq_law_id ON (p:Law) ASSERT p.id IS

    2024年02月21日
    浏览(70)
  • Mac Neo4j图数据库安装与使用

            图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据。         Neo4j 是一个知名的图数据库,提供Cypher 查询语言。         安装前要确保Mac 系统中有 Java 8 的运行时文件。

    2024年02月13日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包