图形数据库是否已经取代关系型数据库?

18

我对任何类型的数据库都是新手。似乎你可以用图形表示任何关系型数据库(尽管它可能是一个非常扁平的图形),并且可以在关系型数据库中表示任何图形数据库(只要有足够的表)。

通过在一个条目之间建立硬链接,图形可以避免在其他表中进行许多查找,因此在许多/大多数情况下,我可以看到使用图形的速度优势。如果您的数据自然层次化,特别是如果它形成一个树,则我认为使用图形比关系型更具有逻辑/推理效益。我想象一下,一个链接到其他节点的图形节点可能包含多个映射或列表……这实际上相当于在图形节点内包含一个关系型数据库。

相对于关系型数据库,图形数据库有哪些缺点?(注意:我不是要寻找实现中缺少的功能之类的东西,而是要寻找理论上的优缺点)

什么情况下我应该仍然使用关系型数据库?即使我在逻辑上只有int到int的单个映射,我也可以在图形中完成。


1
随着亚马逊、微软和其他公司开始推出基于本地图形数据库的产品,也许是时候给这个老问题提供一些新答案了! - clozach
5个回答

26

图形数据库在20到30年前被类似关系型技术所取代。

其主要理论缺点在于,图形数据库使用两个基本概念来表示信息(节点和边),而关系型数据库只使用一个(关系)。这会影响数据操作语言,因为基于图形的语言必须提供两组不同的运算符:一组用于操作节点,另一组用于操作边。关系模型只需要一组即可满足需求。

更多运算符意味着DBMS构建者需要实现更多运算符,这增加了出错的机会,对于用户来说,需要学习更多不同的语言结构。例如,在关系型中,将信息添加到数据库中只需要使用INSERT,而在基于图形的中,可以使用STORE(节点)或CONNECT(边)。删除信息只需使用DELETE(关系型),而不是ERASE(节点)或DISCONNECT(边)。


2
嗯,但是似乎有许多新的图形数据库和其他非关系型数据库,对于第一次看到它的人来说,这似乎是最热门的最新创新...整个noSQL的事情...这与这个答案相吻合吗? - David
7
@dave,IT行业受潮流驱动。NOSQL产品解决了SQL软件堆栈的某些缺陷,而这些缺陷与关系模型本身无关。但是,NOSQL市场尚不成熟,主要根源于市场颠覆性公司、开源和年轻创业公司。这些图形/文档/其他产品的研发成本和上市时间可能比类似的关系数据库产品要低。SQL是微软/甲骨文/IBM的霸权,通过提供“不同”的东西更容易打破这种局面。 - nvogel
9
我曾经查看过Neo4J的命令语言/语法,它是一种“受欢迎的现代图形数据库管理系统”之一。当我发现其中的“新颖”语言关键字在很大程度上与我在80年代初使用的COBOL程序针对IDMS数据库时使用的关键字几乎完全相同时,我感到非常惊讶。 - Erwin Smout
10
在关系之地有一句相当流行的谚语,它是这样说的:“不了解历史的人注定会重蹈覆辙”。 - Erwin Smout

17

在Erwin Smout的优秀回答基础上,关系模型取代图形模型的一个重要原因是:相比于关系模型,图形模型的结构内嵌了更多“偏见”。图形的边缘是导航链接,用户查询期望以特定方式遍历这些链接。同样的数据在关系模型下,假设了与数据使用有关的条件很少。用户可以自由地加入和操作关系型数据,这些操作甚至可能超出数据库设计者的预料。在20世纪80年代,重新设计图形数据库结构来支持新需求所带来的破坏性成本是推动采用关系模型及其SQL分支的因素之一。


5
关系型数据库被设计用于聚合数据,图形用于查找关系。
例如,如果您有一个财务领域,所有连接都已知,您只需通过其他数据聚合数据以找到总数等。
在更混乱的领域中,图形数据库更好,连接更重要,而不是所有连接都明显,例如:
- 人员网络,彼此之间有不同的关系 - 影片及其创作者。不仅是演员,还包括整个剧组。 - 自然语言处理和查找识别单词之间的联系。

3
数据模型很重要,但更重要的是如何访问您的数据。请注意,市面上很少有分片或其他分布式图形数据库(实际上没有)。如果将数据插入典型的关系型数据库和图形数据库中进行比较,您的关系型数据库很可能会获胜。
是的,图形模型比关系模型更加灵活,但这并不意味着它是通用的-在某些情况下,这种灵活性会成为优化的障碍。
事实上,现代图形数据库是一组狭窄任务的专业解决方案-从A到B寻找路径,在社交网络中与朋友合作,在医学信息技术中使用。
对于大多数企业应用程序,关系型数据库仍然占主导地位。

4
图形模型“更加多才多艺”? - nvogel
1
它让你以更自然的方式建模一些结构 - 首先是图形,但也包括关联、友谊、分子、药物配方等等。 - Kostja

1
我在上面的回答中缺少了性能方面的内容。基于图形的数据库的性能对于标量甚至树形模型来说本质上更差。只有当您拥有真正的图形时,它们可能表现出更好的性能。
此外,大多数图形数据库不支持ACID,例如几乎所有关系型数据库。
从我的实际经验来看,我可以告诉你,几乎任何不断演变的数据模型迟早会成为一个图形,这就是为什么图形数据库在灵活性和敏捷性方面优越(它们跟上了您的数据模型的演变步伐)。
这就是为什么我认为RDBMS不会在“大多数业务应用程序”中占主导地位,就像@Kostja所说的那样。我认为它们将在ACID功能至关重要的地方占主导地位。

3
ACID是事务性系统的一个特性,而事务性系统并不仅限于关系型和/或SQL系统。为了证明这一点:在SQL系统主导市场之前,基于图形的IDMS和分层的IMS就已经存在,并提供了完整的ACID事务能力。 - Erwin Smout
neo4j是完全符合ACID标准的。 - Magne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接