关系数据库和图形数据库的比较
有人可以向我解释关系数据库(如MySQL)与图形数据库(如Neo4j)相比的优缺点吗?
在SQL中,你有多个表和不同的ID链接它们。 然后你必须加入连接表格。 从新手的角度来看,您为什么要设计数据库来要求连接,而不是从一开始就像图形数据库那样将连接显式化为边缘。 从概念上讲,这对新手来说是没有意义的。 据推测,这有一个非常技术性但非概念性的原因?
实际上这两种风格背后都有概念推理。 关于关系模型和图形数据库的维基百科对此进行了很好的概述。
主要区别在于,在图形数据库中,关系存储在单个记录级别,而在关系数据库中,结构定义在较高级别(表格定义)。
这有重要的影响:
只有在关系中存在很多变化时,将所有关系存储在个人记录级别才有意义; 否则你只是一遍又一遍地重复相同的事情。 这意味着图形数据库非常适合不规则的复杂结构。 但在现实世界中,大多数数据库都需要规则的,相对简单的结构。 这就是关系数据库占主导地位的原因。
图和关系数据库之间的主要区别在于关系数据库使用集合,而图数据库使用路径。
这表现为RDBMS用户意想不到的无用的方式。 例如,当试图通过递归地加入关系数据库来模拟路径操作(例如朋友的朋友)时,查询延迟随着内存使用而增长不可预测且大量增加,更不用说它折磨SQL来表达这些类型的操作。 即使您可以通过明智的索引来延缓痛苦,但更多的数据意味着基于集合的数据库会变慢。
正如Dan1111所暗示的那样,大多数图形数据库不会遭受这种连接痛苦,因为它们表达了基本级别的关系。 也就是说,关系在物理上存在于磁盘上,并且它们被命名,定向,并且可以用属性自己装饰(这被称为属性图模型,参见:https://github.com/tinkerpop/blueprints/wiki/Property-Graph -模型)。 这意味着如果您选择了,您可以查看磁盘上的关系并查看它们如何“加入”实体。 因此,关系是图数据库中的第一类实体,在语义上远远强于在关系存储中在运行时指定的隐含关系。
那么,你为什么要关心? 有两个原因:
MATCH (me)-[:FRIEND]->()-[:FRIEND]->(foaf) RETURN foaf
。 为了更全面地评估图形数据库与关系商店的优势,可以在http://graphdatabases.com上找到一个名为Graph Databases(免费!)的O'Reilly电子书(告诫:我是本书的作者之一)。 它不会永远是免费的,因为它是一本合适的O'Reilly书,但是我们已经得到了出版商的许可,并放弃了很多,现在就得到一个。
Dan1111已经给出了被标记为正确的答案。 值得一提的是,还有几点值得注意。
首先,在几乎所有图形数据库的实现中,记录都是“固定的”,因为在其当前位置有指向该记录的未知数量的指针。 这意味着如果不在旧位置留下转发地址或打破未知数量的指针,则无法将记录洗牌到新位置。
理论上,人们可以立即洗牌所有的记录,找出找到并修复所有指针的方法。 在实践中,这是一项在大型图形数据库上可能需要数周才能完成的操作,在此期间数据库将不得不停播。 这是不可行的。
相比之下,在关系数据库中,记录可以在相当大的范围内重新编排,唯一需要做的是重建任何受影响的索引。 这是一个相当大的操作,但远不及图形数据库的等效值那么大。
值得一提的第二点是,万维网可以被看作是一个巨大的图形数据库。 网页包含超链接,以及超链接参考,以及其他网页。 该引用是通过URL,其功能类似于指针。
当一个网页移动到一个不同的URL而不在旧URL上留下转发地址时,未知数量的超链接将会被破坏。 这些断开的链接然后引起令人恐惧的“错误404:找不到页面”信息,这种信息中断了许多冲浪者的乐趣。
链接地址: http://www.djcxy.com/p/66423.html