Neo4J 1(三)|学习笔记

简介: 快速学习 Neo4J 1(三)

开发者学堂课程【高校精品课-上海交通大学-企业级应用体系架构:Neo4J 1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/75/detail/15850


Neo4J 1(三)

 

内容介绍:

一、Neo4J and RockDB

二、What is a Graph?

三、Graph Database

四、Options for Storing Connected Date

五、Data Modeling with Graphs

六、Building a Graph Database Application

七、总结

 

六、Building a Graph Database Application

1、明白它的优势之后,剩下的要去使用它。

· Describe the Model in Terms of th e Application's Needs

· Here's an example of a user story for r a book review web application:

- AS Areader who likes a book,I WANT to know which books other readers who like the same book have liked, so THAT I can find other books to read.

要去设计图数据库,看到哪一些是节点,节点之间应该有怎样的关系?在下图的节点中,

image.png

在这样四个节点构成的关系中可以看到,可以问 Alice 喜欢什么样的书?对于叫 Alice 的人,他喜欢 Dune 这本书,有多少跟 Alice 一样喜欢这本书的人?看看那些人,他们喜欢什么书?就可以把这些书推荐给Alice。

- since Alice likes Dune, find books that others who like Dune have enjoyed:

MATCH(:Reader {name:'Alice'})-[:LIKES]->(:Book {title:'Dune'})

<-[:LIKES]-(:Reader)-[:LIKES]->(bool ks:Book)

RETURN books.title

Reader 是 Alice,他喜欢的书是 Dune,想给 Alice推荐其他的书的想法是同样喜欢这本书的人,还喜欢看什么书,把这个书推荐给 Alice。就是所谓的协同过滤,有相同的爱好的话,一定会喜欢我喜欢的其他东西。Alice 喜欢这本书,这本书还有其他的人喜欢关系就返过来了,他们喜欢的书有哪些?把这些书的名字返回。在图数据库中是怎样描述这个模型的,是按照需求来描述查询的语句。

2、在图数据库中有实体的东西是节点,节点和节点之间的关系用 vn 来描述,描述两个节点之间存在一定关系,关系的方向一般都是有向的,它的方向再进一步澄清有没有关系的语义,到底是人喜欢书还是书喜欢人,方向要搞清楚。这些关系不止一个,可以有多个,但是如果方向是双向对等的,也可以用无向边来表示,就不用两个有向的关系来表示了。节点的属性就是一些实体的属性,比如人要有名字等等;关系的属性就是进一步支出和其他关系的差异,有权重来表示这个关系比其他关系更轻一些或更重要一些,这是在设计时候的依据。

Nodes for Things, Relationships for Structure

- Use nodes to represent entities that is,the things in our domain that are of interest to us, and which can be labeled and grouped.

- Use relationships both to express the connections between entities and to establish semantic context for each entity,thereby structuring the domain.

-Use relationship direction to further clarify relationship semantics. Many relationships are asymmetrical, which is why relationships in a property graph are always directed. For bidirectional relationships we should make our queries ignore direction, rather than using two relationships.

- Use node properties to represententity attributes, plus any necessary entity metadata,such as timestamps,version numbers,etc.

- Use relationship properties to express the strength,weight,or quality of a relationship,plusany necessary relationship metadata, such as timestamps, version numbers, etc 

3、下面是一些例子,怎样去建模?

Model Facts as Nodes

Employment

- The Figure shows how the fact of lan being employed by Neo Technology in the role of engineer can be repre sented in the graph.

image.png

一些事实把它建模成节点,比如说在雇佣关系里面,Neo 这个公司雇佣了 lan 这个人,给了他一个工程师的角色,这三者之间是通过一个叫 job 的对象产生关系,就表达了 lan 这个人是在中间那个时间雇佣的,他的雇主是 Neo,他受雇的角色是工程师,有了这样一个描述之后,就写出了下面的语句。

CREATE(:Person{name:'lan'})-[:EMPLOY MENT]->

(employment:Job

{start_date:'2011-01-05'})-[:EMPLOYER] ->(:Company {name:'Neo'}),

(employment)-[:ROLE]->(:Role {name:'er ngineer'})

创建一个人,这个人的名字叫 lan,有一个雇佣关系,得到了雇佣类型的 job,时间是 2011-01-05,job 的雇主关系是 Neo,给他的角色是工程师,这是描述上图的结构。

4、下面是一个类似的,就不再仔细讲解了。

image.png

真正的 Neo4J 在跑的时候,可以在一个集群里跑,前面加一个负载均衡器。也可以做一个叫 Embedded,启用服务器的时候,可以把它嵌入跑,这是一个具体的运行方式。

image.png


七、总结

为什么搜索起来比较快,这要进到数据库里面看,看他的存储机制是怎样的?本节课讲的例子可以跑,前提是必须安装 neo4j,装好 neo4j 之后启动项目才能跑起来。跑起来之后,如果能看到库里面的内容,有三个人之间的关系,会画一张图,例子跑出来的样子如下图。

image.png

下个课程会讲大数据相关的内容,大数据相关的内容会用到 jupyter notebook,提前安装。他是基于 python,先装python,再装 jupyter notebook,这样这些东西才能跑起来。

item 存到 order 里是有一个缺陷的,这个缺陷实际上是 item 会有冗余,比如说两个order,他们俩的东西是一个,item 可能就会有冗余,刚才图的设计就是希望减少 item 的冗余,如果碰到 item 会被若干个 order 引用的话只有一个。

相关文章
|
存储 NoSQL 关系型数据库
使用top命令分析java程序占用内存
使用top命令分析java程序占用内存
3045 0
|
3月前
|
Java Nacos 数据安全/隐私保护
MSE + Nacos 实战:微服务治理从混乱到有序的完整路径
50+ 微服务上线后治理失控——配置变更导致 3 次 P0 故障,服务间调用链路无人能说清,限流降级全靠"祈祷式运维"。引入阿里云 MSE 微服务引擎 + Nacos 后,配置灰度发布让变更零风险,全链路拓扑实时可见,无损上下线消灭发布抖动,标签路由实现全链路灰度。本文以一个中型金融科技平台为案例,从痛点剖析、架构设计、Nacos 配置中心实战、MSE 服务治理实战、Spring Cloud Alibaba 集成到 5 个生产踩坑实录,完整呈现微服务治理从混乱到有序的落地路径。
|
4月前
|
存储 弹性计算 文件存储
阿里云容器服务Kubernetes版(ACK)对接使用完全指南
本文提供了一份完整的阿里云容器服务Kubernetes版(ACK)对接使用指南。首先解析ACK托管版、专有版与Serverless版的架构差异与选型策略,帮助用户根据业务场景做出合理决策。随后详细讲解通过控制台和Terraform两种方式创建ACK托管集群的完整流程,涵盖网络规划(Terway与Flannel对比、CIDR配置)、节点池管理等关键环节。在应用部署层面,深入介绍Deployment、StatefulSet等核心工作负载的YAML编排实践,并通过Service与ALB Ingress实现服务暴露与七层负载均衡。存储管理部分系统讲解基于CSI的云盘、NAS动态与静态存储卷的使用方法。
649 0
|
7月前
|
数据采集 缓存 自然语言处理
acbuy模式反向海淘淘宝1688系统搭建经验
Acbuy是面向海外用户的反向海淘平台,整合淘宝/1688代购与集运服务:用户粘贴链接下单→平台批量采购→国内仓验货合箱→专线物流清关直达。支持多语言、多支付、自动换算与风控合规,主打高性价比、一站式跨境购物体验。(239字)
|
7月前
|
人工智能 自然语言处理 监控
企业有哪些agent应用场景(2026年新版)
阿里云瓴羊推出企业级AI Agent解决方案,整合Quick Audience(智能营销)、Quick Service(情感化服务)、Quick BI(对话式BI)与Dataphin(自动驾驶数据治理),打通数据孤岛与业务断点,构建安全可控、跨场景协同的“数字员工团队”,赋能企业智能化升级。(239字)
|
机器学习/深度学习 人工智能 算法
2025年,程序员的黄金时代才刚开始-千万不要错误的以为程序员很多哟-卓伊凡软件行业洞察 前言
2025年,程序员的黄金时代才刚开始-千万不要错误的以为程序员很多哟-卓伊凡软件行业洞察 前言
1756 1
2025年,程序员的黄金时代才刚开始-千万不要错误的以为程序员很多哟-卓伊凡软件行业洞察 前言
|
弹性计算 关系型数据库 数据库
阿里云服务器免费试用相关政策介绍:试用资格、规则与优惠解析
阿里云服务器可以试用吗?不仅是云服务器产品,包括无影云电脑、云数据库 RDS、统型负载均衡 CLB、对象存储 OSS、文件存储 NAS等云产品都是可以试用的。本文将系统梳理阿里云服务器试用的核心规则、适用场景及操作要点,以供参考。
|
数据采集 分布式计算 监控
深入调查研究 Kettle
【10月更文挑战第20天】
627 0
|
存储 JSON 自然语言处理
数据标注工具 doccano | 命名实体识别(Named Entity Recognition,简称NER)
数据标注工具 doccano | 命名实体识别(Named Entity Recognition,简称NER)
642 1