+
95
-

图数据库与关系型数据库有什么区别?

图数据库与关系型数据库有什么区别?


网友回复

+
15
-

什么是图数据库GDB?

图数据库是一种“不仅仅是 SQL”(NoSQL,全程为Not Only SQL)的数据存储。它们旨在以图结构存储和检索数据。 使用的存储机制可能因数据库而异。一些 GDB 可能使用更传统的数据库结构,例如基于表,然后在顶部有一个图形 API 层。其他的将是“原生”GDB——从存储、管理和查询到数据库的整个构造维护数据的图形结构。许多当前可用的图形数据库通过将实体之间的关系视为“一等公民”来做到这一点。 不同类型的图数据库

广义上有两种类型的 GDB,资源描述框架 (RDF)/三重存储/语义图数据库和属性图数据库。 RDF GDB 使用三元组的概念,它是由三个元素组成的语句:主语-谓语-宾语。 主语将是图中的资源或节点,对象将是另一个节点或文字值,谓词表示主题和对象之间的关系。节点或关系上没有内部结构,一切都由唯一标识符以 URI 的形式标识。 这种结构背后的动机是交换和发布数据。 GDB 属性专注于存储接近逻辑模型的数据的概念。这反过来将基于数据本身所寻求的问题,并专注于使该表示尽可能高效地存储和查询。 与基于 RDF 的图不同,节点和关系上有内部结构,可提供丰富的数据表示以及相关的元数据。 属性图数据库剖析

Neo4j就是一个原生属性图数据库,让我们检查一下主要组件。 属性图数据库的主要组成部分如下: 节点:在图论中也称为顶点——构建图的主要数据元素

关系:在图论中也称为边——两个节点之间的链接。它将有方向和类型。没有关系的节点是允许的,没有两个节点的关系是不允许的

节点和关系

800_auto 标签:定义一个节点类别,一个节点可以有多个

属性:丰富一个节点或关系,不可以为空值!

标签、类型和属性

800_auto

图数据库与关系数据库不同

1.存储模型不同

关系型数据库在表中存储信息(行/列)。每个实体都有一个表(如:账户,人员等),在一个实际的应用中,关系型数据库通常会有几十甚至几百张表。

在图数据库中,所有的信息存储为点和边的集合,而不是存在二维的表格中。这样每个点和边均可存储一系列属性,见下图:

800_auto

2.查询模型不同

关系型数据库主要的计算模型是基于扫描行(select),连接行(join),过滤行(filter)等。

而图数据库的计算模型是从一系列的初始点开始,通过多步遍历图形。每一步从当前的节点开始,遵守一定的关联关系(边)到达相邻点。

800_auto

3.分析模型不同

关系型数据库适合一两个表的简单数据查找以及描述性统计,他不太适用预测性和探测性的分析。例如:你很难编写SQL来回答一下的问题:“这三个用户如何关联?”,“点A和点B之间最短路线是什么?” 而在图数据库中,上述的问题都能得到自然,高效的表达和解决。 800_auto 4.实时查询性能不同

在关系型数据库中,每个表采用物理分隔的方式存储,因此,建立两个表之间的关联慢而且需要中间表过度。大家都知道表和表之间,是不应该存在多对多的关系的。 一旦有了多对多的关系,是需要增加中间表来应对的。 而图数据库中,关于点的一切都已经有了关联性,因此,查询性能大大提高。

实例分析

我以电影与人为例来描述关系数据库与图数据库的不同

首先我们来看看我们各自数据库的数据模型。与所有数据模型一样,它们的外观最终取决于您提出的问题类型。所以让我们假设我们要问以下类型的问题:

一个人演过哪些电影?

一个人与哪些电影有关?

一个人曾经合作过的所有合作演员是谁?

基于这些,以下是相关的潜在数据模型: 800_auto

电影图的实体关系数据模型

800_auto

电影图的属性图数据模型 你会立刻发现一些东西——那些 ID 不见了!因为一旦我们知道那里有连接,我们就将数据连接在一起,我们不再需要它们,或者那些映射表来让我们知道不同的数据行如何连接在一起。 比较查询

现在让我们继续比较一些查询。从:PLAY movies示例中选取一些最初的查询,让我们看一下 Cypher 查询的一些并排比较,以及等效的 SQL 查询是什么样的。 什么是 Cypher,我听到你问?Cypher 是一种图查询语言,用于查询 Neo4j 图数据库。还有一个OpenCypher版本,许多其他供应商都在使用它。 随着我们进行查询,它应该开始变得更加清晰,图数据库以及一种帮助探索关系...

点击查看剩余70%

我知道答案,我要回答