Neo4J 1(二)|学习笔记

本文涉及的产品
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
PolarDB Agent Express,2核4GB
简介: 快速学习 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

七、总结

 

五、Data Modeling with Graphs

1、查询的时候提供了一种叫 Cypher 的东西,Cypher 就是图数据库的查询语句,比如说在下图中

image.png

如果要用 Cypher 描述这张图的信息容量是这样描述的,有一个叫 emil 的人,他有一个键值对是 name:‘Emil’,有一个 KNOWS 关系关联的对象是另外一个 person,名字叫 jim,这个关系的方向用小于号和减号来描述的,里面的键值对是 name:‘Jim’,name:jim 还有一个 KNOWS,是减号加一个大于号,后面还是一个 person,名字是 lan,里面的键值对是 name:‘lan’,它又 KNOWS emil,又有一个 KNOWS 关系,emil 在前面定义过,直接引用,就把上面这张图描述出来了。

(emil:Person {name:'Emil'})<-[:KNOWS]-(jim:Person {name:'Jim'})-[:KNOWS->(lian:Person {name:'lan'})->[:KNOWS]

->(emil)

2、以纯文本的方式描述这张图,描述好这张图之后,下面就可以对它进行操作(query)。

image.png

深蓝色的表示关键字,要搜一个人,在这里面用a来表示,他的名字是 jim。a这个人认识b,b又认识c,或者a直接认识c,要找这种关系,然后把符合条件的b和c都拿出来,就是说他要找直接认识的人或者通过一个中间人能够认识的人。lan 这个人就符合第二个条件,他直接认识a;emil 这个人符合第一个条件,是通过 lan 认识a。这个查询条件跟 SQL 不一样,这是他自己提供的叫做 Cypher 查询工具语言,Cypher 尽量和 SQL 绑定,有 WHERE 表示条件,CREAT 表示要创建节点,MERCE 要把图里面某些节点和关系和其它的节点和关系合并等等。

Querying Graphs: Cypher

The other clauses we can use in a Cypher query include:

-WHERE

·Provides criteria for filtering pattern matching results.

- CREATE and CREATE UNIQUE

·Create nodes and relationships.

- MERGE

·Ensures that the supplied pattern exists in the graph, either by reusing existing nodes and relationships that match the supplied predicatesor by creating new nodes and relationships. -DELETE

·Removes nodes,relationships and properties

- SET

·Sets property values

- FOREACH

·Performs an updating action for each element in a list

- UNION

·Merges results from two or more queries.

-WITH

·Chains subsequent query parts and forwards results from one to the next. Similar to piping commands in Unix.

- START

·Specifies one or more explicit starting points-nodes or relationships-in the graph.

3、下图是机房里实体的 er 图,描述机房的构成。

image.png

机房有很多数据库服务器(一主两从),上面是运行的一些应用,这些应用会访问到不同的数据库上,比如 APP 1 和 APP 2 可能会修改数据库,所以连到主;APP 3 只是读的,所以连到从上。从的需要跟主的做同步,三个应用再分别运行到五个虚拟机上,其中 APP 1和APP 3有两个虚拟机,APP 2有一个,这五个虚拟机部署在三个物理机上,其中有三台在一个物理机上,另外两个分别在一台物理机上运行;这三台服务器在两个机架上,这两个机架上各有一个负载均衡器;User 3在访问APP 3,这是一个数据中心的结构。在这个结构下用关系型数据库建模,

image.png

机架对着负载均衡器,机架上可以有零个或多个 server,每个 server 上会有一个或多个虚拟机,虚拟机上可以跑一个或多个应用,应用有 user,会访问数据库,数据库里面会有一个副本。 

4、er 图建出来之后得到的关系型数据库的表如图,

image.png

这里面关系非常多,在做复杂操作的时候,会包含章余操作,有的甚至会是大量的章余操作,所以它的效率不一定高。如果用图数据库存储,只要把节点都抽象出来,再把关系都抽象出来,然后把节点和边分别存储。

image.png

节点有 Database 类、App 类、Server 类、VM 类、Rack 类等等,原封不动的按刚才的样子进行部署描述,产生的这样结构。可以写出一些搜索条件,比如说 user.name 等于 user 3,并且 asset 的状态是 down,也就是想知道user 3这个人在访问 asset 的状态因为某种原因宕机的机器是什么。

- In our graph we can find the faulty equipment with the following query:

·MATCH (user:User)-[*1..5]-(asset:Asset)

WHERE username = 'User 3'AND asset.status = 'down' RETURN DISTINCT asset

把数据库、APP、虚拟机等等除了 user 之外的东西叫做 Asset,他们都是asset 的一个子类。不管是应用还是虚拟机,还是物理机,它们都有正在运行或者是 down 的状态。对于 user 3这个人,他用到了 APP 3,APP 3用到了server 3,这个数据库 server 要跟主的 server 做同步。往下它用到了虚拟机,这个虚拟机在物理机上,物理机在机架上,机架上没有出路,就到此为止。他会在三条路里面去搜索所有的涉及到的 asset 。下面是一些其他的搜索语句,

- This allows us to match paths such as:

(user)-[:USER_OF]->(app)

(user)-[:USER_OF]->(app)-[:USES]->(database)

(user)-[:USER_OF]->(app)-[:USES]->(database)-[:SLAVE_OF]->(another-database)

(user)-[:USER_OF]->(app)-[:RUNS_ON]->(vm)

(user)-[:USER_OF]->(app)-[:RUNS_ON]->(vm)-[:HOSTED_BY]->(server)

(user)-[:USER_OF]->(app)-[:RUNS_ON]->(vm)-[:HOSTED_BY]->(server)-[:IN]->(rack)

(user)-[:USER_OF]->(app)N:RUNS_ON]->(vm)-[:HOSTED_BY]->(server)-[:IN]->(rack)<-[:IN]-(load-balanEer)

5、通配符  (user:User)-[*1..5]-(asset:Asset),user 和 asset 最多到五层关系关系起来的 asset,要检查一下到底是哪个 down。一层关系直接到APP,两层关系到数据库,三层关系到主从备份,两层关系的还有虚拟机,三层关系到 server,server 再到 rack,rack 再到 load balance。他的意思是通过user,通过五层的关系连接能够产生关联的 asset 哪些属于down。他是五层关系,不需要出度,需要入度,所以他可以一直到机架。可以通过这样一条简单的语句去搜索跟 User 3相关系的所有的 asset 的状态,到底是符合 up 还是 down。如果用关系型数据库,不能通过一条语句去实现,关系型数据库表都有很多。

image.png

首先要从 user 去找跟他有关系的,其次,他有好几层去算,他的关系还需要自己记录,用关系型数据库实现刚才的逻辑,SQL语句肯定是非常复杂的。他通过通配符暗含的是一串,用一条 SQL 写不出这样的东西,而用图数据库非常容易描述它。这是一个非常具体的例子,告诉他的优势在哪里。

相关文章
|
存储 数据采集 编译器
STC8系列单片机介绍
STC8系列单片机是中国STC公司生产的一款8位单片机系列产品。作为STC公司的主打产品之一,STC8系列单片机以其高性价比、丰富的外设资源和强大的功能而备受青睐。本文将详细介绍STC8系列单片机的特点、应用领域、开发工具和资源支持等方面。 一、STC8系列单片机的特点 1. 强大的8051内核:STC8系列单片机采用了高性能的8051内核,具有快速的指令执行速度和高效的运算能力。8051内核被广泛应用于嵌入式系统中,具有稳定可靠的特点。 2. 大容量闪存存储器:STC8系列单片机内置大容量的闪存存储器,可存储程序代码和数据。闪存容量从4KB到128KB不等,可以满足不同应用需求。闪存存储
2742 0
|
机器学习/深度学习 SQL 存储
实时特征计算平台架构方法论和实践
在机器学习从开发到上线的闭环中,实时特征计算是其中的重要一环,用于完成数据的实时特征加工。由于其高时效性需求,数据科学家完成特征脚本离线开发以后,往往还需要工程化团队通过大量的优化才能完成上线。另一方面,由于存在离线开发和工程化上线两个流程,线上线下计算一致性验证成为一个必要步骤,并且会耗费大量的时间和人力。
1457 0
实时特征计算平台架构方法论和实践
|
5月前
|
数据可视化 前端开发 安全
AgentScope 1.0 全面进化,从原型走向产业落地!
AgentScope全新升级,打造生产级智能体生态:推出开箱即用的Alias、EvoTraders等应用,支持多场景落地;强化基建,实现动态技能扩展、白盒化运行与多语言支持;集成语音交互、数据工程等能力,提供从开发到部署的全链路解决方案。
3735 0
|
5月前
|
人工智能 运维 自然语言处理
3 个真实 GEO 成功案例 + 3 步关键词排名秘籍!开发者 / 企业快速落地 GEO,流量 & 转化双提升
本文聚焦 GEO 真实获客案例与实操技巧,通过教培机构、工业设备商、小众茶叶品牌三个实测案例,展现 GEO 落地成效:教培机构靠升学数据咨询量暴增 210%,工业设备商盯准技术痛点让单笔订单翻 5 倍,茶叶品牌借产地溯源实现客单价从 200 元飙至 500 元。核心分享三步零门槛关键词法:列客户痛点、加场景限定、数据筛词,还拆解了不同平台关键词偏好。提醒效果需 1-3 个月积累,内容需真实且持续优化。新手可直接对照案例思路,结合自身行业调整,快速抢占搜索流量,精准获客。
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
987 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
文字识别 测试技术 语音技术
看听说写四维突破:Qwen2.5-Omni 端到端多模态模型开源!
今天,通义千问团队发布了 Qwen2.5-Omni,Qwen 模型家族中新一代端到端多模态旗舰模型。该模型专为全方位多模态感知设计,能够无缝处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应同时生成文本与自然语音合成输出。
3287 6
看听说写四维突破:Qwen2.5-Omni 端到端多模态模型开源!
|
传感器 人工智能 搜索推荐
只靠一个头,能做出被“可爱攻击”的AI智能宠物吗?
本文探讨了AI实体化的一个具体方向——AI智能宠物,尤其是仅靠“一个头”设计的可行性与潜力。相比复杂的人形机器人,头部AI宠物成本更低、技术门槛更小,且能聚焦语言和表情交互,打造情感连接。文章分析了AI宠物的市场机遇,如满足孤独经济需求、成为消费电子新趋势,并指出“可爱”只是入场券,真正留住用户的在于深度交互体验。最后强调,精准洞察用户需求是关键,避免陷入“有趣但无用”的陷阱,为AI实体化找到切实可行的商业化路径。
491 0
|
机器学习/深度学习 监控 安全
10分钟轻松实现人脸精准识别
本文将具体介绍如何利用云服务部署深度学习模型,快速接入人脸比对服务。

热门文章

最新文章