发布时间:2023-07-03
浏览次数:0
.com//p/.html
随着社交网络、电子商务、金融、零售、物联网等行业的快速发展,现实世界中编织了一个庞大而复杂的关系网络,传统数据库很难处理关系操作。
大数据行业中需要处理的数据之间的关系随着数据量的增加呈几何级数减少。 迫切需要一种支持海量复杂数据关系操作的数据库,图数据库应运而生。
世界上许多知名公司都在使用图数据库。 例如:
既然图数据库应用如此广泛,越来越多的企业和开发者开始使用它,那么它有哪些优势呢? 让我们揭开它的神秘面纱。
为什么选择图数据库?
学过数据结构课程的朋友,脑子里应该或多或少都有图的概念。
什么是图表?
图由两个元素组成:节点和关系。
每个节点代表一个实体(人、地点、事物、类别或其他数据),每个关系代表两个节点的关联形式。
这种通用结构可以对各种场景进行建模 - 从道路系统、设备网络、人口路线或由关系定义的任何其他内容。
什么是图数据库?
「图数据库(Graph)」并不是指存储图片的数据库,而是以图的数据结构来存储和查询数据。
图数据库是一种在线数据库管理系统,用于处理图数据模型的创建、读取、更新和删除 (CRUD) 操作。
与其他数据库不同,关系在图数据库中占据主导地位。 这意味着应用程序不必使用字段或带外处理(例如)来推断数据连接。
与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更简单、更具表现力。
图形数据库专为与事务 (OLTP) 系统一起使用而构建,并且在设计时考虑了事务完整性和操作可用性。
两个重要属性
根据存储和处理模型的不同,市面上的图数据库也存在一些区别。
例如:
Neo4J 是一个原生图形数据库。 它使用的前端存储是专门针对Neo4J等图数据库定制和优化的。 理论上来说,可以更有利于图数据库的性能。
将数据存储在其他系统(例如 Hbase)上,而不是本地图形数据库。
① 图像存储
一些图数据库使用本机图存储,该存储是专门为存储和管理图而优化和设计的。
并非所有图数据库都使用原生图存储,有些图数据库将图数据序列化,然后将其保存到关系数据库或面向对象数据库,或其他通用数据存储中。
② 图处理引擎
本机图形处理(也称为无索引邻接)是处理图形数据的最有效方法,因为连接的节点在数学上彼此指向数据库中。 非原生图处理使用其他方式来处理 CRUD 操作。
与 NoSQL 数据库对比
NoSQL数据库大致可以分为四类:
与关系型数据库相比
关系数据库其实不擅长处理关系。 在很多场景下,你的业务需求完全超出了当前的数据库架构。
举个栗子:假设关系数据库中有几个用户、订单、产品表:
当我们要查询:“用户是否订购了这些产品?” 或“有顾客购买过该产品吗?” 开发人员需要JOIN多个表,效率非常低。
以及“购买该产品的顾客还订购了什么?” 类似的查询几乎不可能实现。
关系查询性能比较
作为数据关系的核心,图数据库在查询率方面非常高效,即使对于深度和复杂的查询也是如此。 在《Neo4j in》一书中,作者在关系数据库和图数据库(Neo4j)之间进行了实验。
他们的实验试图在社交网络中找到最大深度为 5 的朋友的朋友。 他们的数据集包括 100 万人,每人大约有 50 名同事。
实验结果如下:
当深度为2时(即朋友的朋友),两个数据库的性能差异并不明显; 当深度为3时(即同学的同事)intellij idea 数据库关系图,很明显关系型数据库的响应时间为30s,这已经是无法接受的; 当深度达到4时,关系型数据库返回结果需要近半小时,难以应用到线上系统; 当深度达到5时,关系数据库已经无法完成查询。
对于图数据库Neo4J,深度范围为3到5,其响应时间在3秒以内。
可见,对于图数据库来说,数据量越大,关联查询就越复杂,有利于凸显其优势。 从深度为4/5的查询结果可以看出,图数据库返回了整个社交网络中超过一半的人。
Neo4J 和
根据DB-发布的最新图数据库排名,Neo4J依然领先,位居第一:
新4J
Neo4J 是一个用 Java 实现的开源图数据库。 它从 2003 年开始开发,直到 2007 年第一个版本即将发布,并托管在 .
Neo4J 支持 ACID、集群、备份和故障转移。 目前Neo4J最新版本是3.5,分为社区版和企业版。 社区版仅支持单机部署,功能有限。 企业版支持主从复制和读写分离,并包含可视化管理工具。
是Linux基金会下的开源分布式图数据库。 提供 .0 软件许可证。 该项目由 IBM 支持。
它是由图数据库改来的,从2012年开始开发,目前最新版本是0.3.1。
支持多种存储前端(包括、HBase、DB)。 可扩展性取决于所使用的底层技术。
例如,通过将其用作存储前端,可以轻松扩展到多个数据中心。
通过与大数据平台(Spark、、)集成,支持全局图数据的分析、报告和ETL。
通过外部索引存储(Solr、)支持地理、数字范围和全文搜索。
标记属性图模型
(1)节点
节点是主要的数据元素
节点通过关系与其他节点连接
节点可以具有一个或多个属性(即,存储为键/值对的属性)
节点有一个或多个标签来描述它们在图中的角色
示例:人员节点与汽车节点
(二)关系
关系连接两个节点 关系是有向的 节点可以有多个甚至递归关系 关系可以有一个或多个属性(即存储为键/值对的属性)
(3)属性
属性是命名值,其中名称(或键)是字符串
属性可以被索引和约束
可以根据多个属性创建复合索引
(4)标签
标签用于对节点进行分组
一个节点可以有多个标签
索引标签以加快在图中查找节点的速度
针对速度进行优化的本机标签索引
图查询语言
Neo4j 的图形查询语言允许用户在图形数据库中存储和检索数据。
例如,我们想要找到 Joe 的所有二级好友:
查询语句如下:
MATCH
(person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-
(foaf:Person)
WHERE
person.name = "Joe"
AND NOT (person)-[:KNOWS]-(foaf)
RETURN
foaf
乔认识莎莉,莎莉也认识安娜。 鲍勃被排除在结果之外,因为他除了通过莎莉成为二等同学之外,还是一等同学。
概括
图数据库响应了当今宏观商业世界的主要趋势:通过高度相关、复杂和动态的数据获得洞察力和竞争优势。 越来越多的国内公司开始涉足图数据库领域,开发自己的图数据库系统。
对于任何具有一定大小或值的数据intellij idea 数据库关系图,图数据库是表示和查询该关系数据的最佳形式。 理解和分析此类图表的能力将成为未来企业的核心竞争力。
精彩推荐
一百期Java面试题汇总 SpringBoot内容聚合 IntelliJ IDEA内容聚合 Mybatis内容聚合
欢迎长按下图关注公众号后端技术精选
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码