neo4j 图数据库初步调研 三元组、属性图、图模型、超图、RDF-f
相关文章
neo4j 图数据库初步调研 图数据库与关系型数据库差异
demo项目(python+vue)
本文目录
- 相关文章
- 一、技术关键字
- 二、前言
- 1.什么是图
- 2.反规范化
- 三、RDF(资源描述框架)
- 四、图模型
- 1.查询逻辑
- 2.深度查询性能对比
- 3.属性图
- 4.超图
- 五、三元组
- 1.三元闭包与局部桥
- 1)三元闭包
- 2)局部桥
一、技术关键字
neo4j
二、前言
目前网络上对于三元组的解析比较复杂且比较深,对于新入门的小白来说过于深奥,本人对此进行简单归纳,方便理解,主要讲解三方面:三元组、RDF、图模型
1.什么是图
形式上,图不过是顶点与边的集合,或者说更简单一点,图就是一些节点和关系这些节点联系的集合。图将实体表现为节点,实体与其他实体连接的方式表现为联系。
联系,是图数据库的一等公民
2.反规范化
为了让关系型数据库在处理常规应用请求时表现良好,我们不得不抹去领域真正的样子,而去接受我们修改用户数据模型是为了适应数据库引擎而不是用户者现实,这种技术叫做反规范化。
人们为了获得查询性能,反规范化在某些情况下,会人为地制造重复数据。就拿用户和他们的联系方式来说:一个用户可能拥有多个手机号或邮箱,在标准数据模型中,我们可能需要把联系方式单独建表来存储单用户多手机号的情况,亦或者选定一个手机号将其存入用户库的phoneNum字段,但在图数据库中,此类数据可以存为某个用户节点的属性亦或用户节点的附属节点
三、RDF(资源描述框架)
RDF模型在顶点和边上没有属性,只有一个资源描述符,这是RDF与属性图模型间最根本的区别。在RDF中每增加一条信息都要用一个单独的节点表示。比如,在图中给表示人的节点添加姓名。在属性图中只需要在节点添加属性即可,而在RDF中必须添加一个名字的单独加节点,并用hasName与原始节点相连。(来源于百度百科)
就是所有的信息都是节点,无论是张三这个名字,还是张三这个人,他们都属于节点
张三相关节点为张三,身份证号,住所等等
RDF | 图数据库 |
---|---|
存储三元组 | 节点和关系可以带有属性 |
标准的推理引擎 | 没有标准的推理引擎 |
W3C标准 | 图的遍历效率高 |
常用于发布数据 | 事务管理(ACID) |
多数为学术界场景 | 基本为工业界场景 |
RDF可以理解是知识图谱/语义网络/本体库数据的描述形式,是一种较为原始的结构,只有节点和关系,因此挂载属性时,只能去声明节点,显然与现实的业务场景不符,因此不做赘述
四、图模型
图模型是目前个人接触较多的,以neo4j为例,就是一个标准的属性图数据数据库,图模型在处理加权路径规划(例如导航规划),处理实体关系模型(例如社交网络为主的FaceBook等)都较为优势,对于图模型来说,多条件查询不再是对于数据库全量数据的对比,而是每次筛选有效数据,如同过滤塞一样,将数据塞出来,每次查询的范围是基于上一个查询结果的内容集
1.查询逻辑
以查询(张三:人)-[借钱]->(李四:人)-[朋友]->(王五:人) return 王五 为例
该语句目的是查询出 一个人(张三)借钱出去那个人(李四)的朋友(王五),所有符合此关系的王五
查询时,
1)首先匹配所有是人的节点,将他们都视为张三,全部移入匹配集
2)查询所有张三节点有借钱给人节点的数据,将不符合的数据源移除匹配集
3)查询所有李四关系为朋友,结束节点类型为人的数据,将不符合的数据移除匹配集
4)返回匹配集所有的最终节点
如上,每次查询并不是一个全量数据查询,都是在匹配集内的查询,当第一次匹配之后,对于不符合要求的数据将不再进行访问,减少访问量
2.深度查询性能对比
在关系型数据库和neo4j中寻找扩展朋友的性能对比(查询朋友的朋友,朋友的朋友的朋友等等)
深度 | 关系型数据库的执行时间(s) | Neo4j的执行时间(s) | 返回的记录条数 |
---|---|---|---|
2 | 0.016 | 0.01 | ~2500 |
3 | 30.267 | 0.168 | ~110 000 |
4 | 1543.505 | 1.359 | ~600 000 |
5 | 未完成 | 2.132 | ~800 000 |
3.属性图
每个节点都有相关属性,以属性为主导的实体存储,但是关系必须是起点是一个实体,终点是一个实体。
这也是大家最为熟悉的neo4j数据结构,
属性图有以下特点 |
---|
它含有节点和联系 |
节点可以拥有属性(键值对) |
节点可以被标记上一个或多个标记 |
联系是命名的且有方向的,并且一定有一个开始节点和一个结束节点 |
联系也是可以有属性的 |
4.超图
超图的概念为,一条关系线,可以将多个实体进行关联
超图模型允许联系在任何一端都关联任意多个节点,超图适用于多对多联系占主体的领域。例如下图,是四个开始节点和一个结束节点,根据业务也可以四个开始节点三个结束节点。。。
五、三元组
三元组其实并没有那么复杂,小学其实就学过,主谓宾即三元组,而主和宾就是实体,谓就是两个实体的联系,进而可以说,三元组是 (实体)-[关系]-(实体),也就是neo4j常用的基础查询语句
1.三元闭包与局部桥
1)三元闭包
三元闭包是社交图中常见属性,我们观察到,如果两个节点都有一条路径和第三个节点相连,那么这两个节点在将来某个时间直接关联的关系将会增加。
一个结构平衡的三元闭包由3个强烈情绪的联系构成或由两个消极联系和一个积极联系构成
3个强烈情绪:独生子家庭就是一个稳定的三元闭包(3个强烈情绪为:父子,母子,夫妻)
但是多子家庭不是说没有三元关系,而是其中有多个三元闭包
两个消极和一个积极:张三和李四都被我管辖,他们各自为好友(两消极:被管理,一积极:好友)
2)局部桥
局部桥主要描述两个较为紧密的群组相互之间的关系
已两个独生子家庭为例,他们父亲互为同事,此时行程局部桥,关系如下,
其中同事关系为局部桥,桥连两个局部域
neo4j 图数据库初步调研 三元组、属性图、图模型、超图、RDF-f相关推荐
- neo4j 图数据库初步调研 图数据库与关系型数据库差异-f
相关文章 neo4j 图数据库初步调研 三元组.属性图.图模型.超图.RDF demo项目(python+vue) 本文目录 相关文章 一.技术关键字 二.前言 三.图数据库与传统数据库 1.反规范化 ...
- Hugegraph合集(一):图数据库技术调研
图数据库技术调研结果 hugegraph(完胜) 百度云安全部官方 HugeGraph(匹配度高) 2018.8.3 百度官方介绍 https://www.freebuf.com/fevents/17 ...
- 解惑图数据库!你知道什么是图数据库吗?
简介 为什么需要图数据库? 设想一个场景:在金融的反欺诈场景下,当一个用户小李 请求订单,我们可以设定一个规则: 获取该用户的身份证号.注册手机号.银行预留手机号.银行卡号.紧急联系人等信息 通过这些 ...
- 图解图库JanusGraph系列-解惑图数据库,你知道什么是图数据库吗?
解惑图数据库!你知道什么是图数据库吗? 大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 地址:htt ...
- 图数据库有什么应用场景?图数据库介绍
图数据库作为新型非关系型数据库,善于处理大量.复杂.互联.多变的网状海量数据,其效率远远高于传统的关系型数据库.数易轩致力于图数据库技术服务,为您带来图数据库的应用场景的介绍. 01 图数据库介绍 图 ...
- 【图数据库中的”分布式”和“切图”】
今天,我试着简要综述几类不同的图数据库的分布式与切图的设计,希望可以帮助大家了解不同项目.产品的设计差异.如果有理解不对的地方,欢迎留言讨论. 什么是分布式系统 一般来说,分布式系统是一组计算机程序的 ...
- 图数据库中的空间值——实现图数据库内容在地理坐标系下展现
- SpringBoot 整合 Neo4j,图数据库 YYDS!
前一段时间,boss 交给我个任务,让我调研一下知识图谱技术.虽说有点 NLP 的底子,不过研究起这个来还是满头的包,终于还是在搜集了不少资料后划拉出来 50 多页的 PPT. 今天先浅浅的给大家分享 ...
- 对话Neo4j首席科学家Jim Webber:图数据库江湖5年后将尘埃落定
今年6月,开源图数据平台Neo4j宣布获得3.25亿美元F轮融资,创造了私营数据库公司单笔最高融资纪录,投后估值超过20亿美元.市场上有那么多种数据库,受欢迎程度拥有一飞冲天之势的为什么是图数据库?它 ...
最新文章
- 子图同构问题Ullmann 算法(二)
- 原来颓废也是需要力气的
- webpack教程(一)
- Calling handler.OnEndpointsUpdate报错原因
- postgres 支持的线程数_为什么 Java 坚持多线程不选择协程?
- 在StackBlitz项目里直接preview某个component的template
- 筛选染色体连续区域的策略
- 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
- Origin绘制带误差棒的曲线(Error Band)
- linux网络完全与防护
- postfix发送邮件报错:mail for xxxxx.com loops back to myself
- 利用python爬取飞猪信息_飞猪爬虫项目
- java 调用图灵接口_图灵机器人(问答机器人)API调用示例
- python与数据思维基础_7个python案例中的数据思维
- CTFshow 愚人节欢乐赛 部分WP
- (附源码)火车票订票系统 毕业设计 171538
- win7打开计算机一片空白,Win7系统打开文件夹查看选项发现一片空白怎么办
- 2021年保育员(中级)考试题及保育员(中级)考试报名
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
- 7-第一个汇编程序hello world
热门文章
- 今天面完了聚成网络的php研发,面经一枚,为自己攒人品。
- QQmail Multiple Xss Vulnerabilities
- ERROR: Exception: Traceback
- 详解JQuery动画
- 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计
- 三十、非谓语动词_作状语
- 【数据分析】——分析方法
- bugku 杂项 图穷匕见 wp
- 微信小程序实现单击、双击和长按、forEach、clearTimeout、setTimeout、split、setClipboardData、getClipboardData、showToast
- 小分子php蛋白,小分子-蛋白相互作用关系——简单的docking介绍