图还能有数据库?一文带你了解图数据库是个什么东西!
发布时间:2023年12月24日
图数据库
基础
简介
%% 图数据库是图数据库管理系统的简称,是近年来新兴的一种NoSQL数据库使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查::CRUD::等操作。图数据库一般用于OLTP系统中,提供在线事务处理能力。与图数据库对应的是图计算引擎,一般用于OLAP系统中,提供基于图的大数据分析能力
CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层(https://so.csdn.net/so/search?q=%E6%8C%81%E4%B9%85%E5%B1%82&spm=1001.2101.3001.7020)的基本操作功能
数据对象/建模方式
- 图数据库使用图模型来操作数据。目前使用的图模型有3种,分别是属性图
Property Graph
、资源描述框架RDF
三元组和超图HyperGraph
- 现在较为知名的图数据库主要是基于属性图,更确切得说是带标签的属性图(Labeled-Property Graph)::当然标签不是必须的::
- 属性图是图数据库和网状数据库的重要区别之一
- 想像不出就看知乎的图
- 属性图由顶点(圆圈)、边(箭头)、属性(key:value)和标签组成
与其他数据库的比较
- 从时间来看,我们先与网状数据库比较
- 网状数据库network database属于结构化模型,本身是有一定的层次这种层次主要是父子关系和主从关系,它可以表示数据之间的关系
- 但是如果需要CRUD,就会像书上写的一样:每个子女节点的操作都要经过双亲节点的路径,仅仅是改变节点就要有很大的消耗,更不要说改变节点之间的关系了++网状模型中的子女结点是一个有序集合(和存储结构有关),所以为了维护这种关系,需要考虑结点在该有序集的位置。而图数据库结点和边都是无序的++
- network database不能武断地改变结点之间的记录、关系,关系型数据库或多或少还是有网状模型的影子,所以很难适用于现在图数据的大规模处理
- 而且网状数据库的模式会事先指定哪种记录类型可以嵌套在哪种其他记录类型中
- 而图数据库应用到了属性图模型,它更灵活,不需要具体的结构层次::NoSQL的一大好处::可以随意建立结点之间的联系和创建新的关系,对于面向图数据的数据集有很好的工作性能
- 与其叫图,不如称之为
知识图谱
,既有图的特点,又能够很好地表示和修改图数据。我觉得网状更像图一点,比较死板:
- 在网状模型中,想要获得某结点的值,就必须选择一条合适的可达路通过遍历找到该结点,别无他法
- 但是图数据库中,我们可以通过给结点设置ID、设置索引来快速找到目标节点的值
- 可变性、灵活性大大提高
- 在网络模型中,所有的查询都是命令式的,很难编写,而且很容易被模式的更改破坏。在图数据库中,如果愿意,可以用命令式代码编写遍历,但大多数图数据库还支持高级声明性查询语言,如Cypher或SPARQL
- 再比较一下关系型数据库:
- 其他老生常谈了,图数据库一大特点就是能够很好地处理数据之间的关系,关系型能够很好的表示,但是处理改变真的不如图灵活
- 如果在RDBMS中关系蕴含了很多表,那么查找起来将是依托答辩。但是图数据库中一张图可以有很多关系,不同的结点通过边建立联系就会方便很多
- 看知乎上的图:图数据库真的是一种知识图谱,你是我的朋友,它是它的谁,都通过边来表示
- 对于图数据库来说,数据量越大,越复杂的关联查询,越有利于体现其优势
- 有些业务本身就是灵活多变的,或者说敏捷的。作为非关系性数据库,图数据库::或其他NoSQL数据库,比如MongoDB::可以快速跟上业务的变化而不需要进行Schema变更等代价不菲的管理操作++RDBMS的模式变更很?费事++
现状
- 在图数据库中使用专门的图查询语言比使用SQL更加高效。目前主流的图查询语言是Cypher和Gremlin
Neo4J:稳定、性优
%% Neo4j是一个高性能的、NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎
- 最主流的图数据库,Neo4J不是分布式数据库,扩展性不是其优势。但是它自身就是一个集群,是一种原生的图数据库
- 原生图存储:Neo4J所使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能
- 原生图处理:利用免索引邻接
- 数据对象/实体被保存为节点,它们之间的关系以链接地址的形式保存在物理存储中因此,在遍历关系时,原生的Neo4j图数据库中只要找到起始节点、读取节点的邻接边就可以访问该节点的邻居;而无需像关系数据库那样需要执行昂贵的连接JOIN操作,系统开销大大减少、执行效率极大提升。这一实现技术被称作无需索引的邻接关系遍历
Index Free Adjacency
::与其他任何数据库所不同之处:: - 因此,我们常说在关系型数据库中,关系是“计算”出来的;而在Neo4j图数据库中,关系是“读”出来的
- 同时也具备了图分析引擎的能力。应该说Neo4J是目前使用最为广泛的图数据库,大量介绍图数据库的书籍都是以Neo4J为基础来介绍的
- Neo4J使用Cypher作为图数据库查询语言
JanusGraph:潜力、灵活
- 最有前景的开源图数据库,可支持数十亿级别的顶点和边规模。JanusGraph可以为不断增大的数据和用户量提供了弹性和线性的扩展能力,通过数据多点分布和复制来提高性能和容错能力
- 非原生数据库:需要将数据存储到通用的存储系统上,支持的后端存储包括:Apache Cassandra、Apache HBase、Google Cloud Bigtable和Oracle BerkeleyDB
- 通过跟Apache中其他组件相配合,提供了一整套完整的图计算生态系统。其中就包括了Apache TinkerPop所提供的图查询语言Gremlin
应用场景
- 社交网络:点赞、评论、互动,社交关系网
- 实施推荐:
- 推荐引擎可以识别出某些资源会吸引特定个人或群体,或者某些个人或群体可能对特定资源感兴趣
- 一个有效的推荐依赖于对事物之间关联的理解,同时也依赖于这些关联的质量和强度,而属性图是所有这些关系密切、关联紧密的数据结构的最佳表达方式
- 用图数据库存储和查询这些数据使得应用程序可以为最终用户呈现实时结果,反映数据最新的变化,而不是返回给用户那些预计算的状态结果
- 之前的网状都可以用图数据库替代:
- 地理空间管理:包括公路网、铁路网等,天生就以图的形式呈现,尤其是层级结构,非常适合图数据库
- 高效匹配MDM的快速演变和不断变化的业务需求:
- 主数据管理
Master Data Managerment
包括的数据涉及用户、客户、产品、供应商、部门、区域、站点、成本中心和业务单元等 - 这些数据来源可能是多种多样的,MDM用来识别、清洗、存储和管理这些数据
- ++其关键问题包括谁组织结构的变化、企业合并和业务规则的变化来管理这些变化;融合新的数据源,用外部源数据补充已有的数据;解决报告需求、鉴定需求和商业智能客户的需求;当数据的值和模式变化时对数据进行版本管理++
- 电信、网络管理和分析、云平台管理、数据中心和IT资产管理以及网络影响分析等领域
OOM:Out of memory
超出内存
文章来源:https://blog.csdn.net/qq_65052774/article/details/135051813
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!