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 引用的话只有一个。

相关文章
7-3 种钻石
输入在一行中给出钻石的需求量 N(不超过 107 的正整数,以微克拉为单位)和人工培育钻石的速度 v(1≤v≤200,以微克拉/天为单位的整数)。
|
3天前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
157719 24
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
|
5天前
|
人工智能 API 网络安全
用DeepSeek,就在阿里云!四种方式助您快速使用 DeepSeek-R1 满血版!更有内部实战指导!
DeepSeek自发布以来,凭借卓越的技术性能和开源策略迅速吸引了全球关注。DeepSeek-R1作为系列中的佼佼者,在多个基准测试中超越现有顶尖模型,展现了强大的推理能力。然而,由于其爆火及受到黑客攻击,官网使用受限,影响用户体验。为解决这一问题,阿里云提供了多种解决方案。
17032 37
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
5天前
|
并行计算 PyTorch 算法框架/工具
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
1311 8
|
13天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
3417 117
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
8天前
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
5天前
|
人工智能 自然语言处理 程序员
如何在通义灵码里用上DeepSeek-V3 和 DeepSeek-R1 满血版671B模型?
除了 AI 程序员的重磅上线外,近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。
934 14
|
12天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
1938 9
阿里云PAI部署DeepSeek及调用

热门文章

最新文章