Database 图形数据库反对关系数据库吗?
我是DBs的新手。似乎可以用图形形式表示任何关系数据库(尽管它可能是一个非常扁平的图形),也可以用关系数据库表示任何图形数据库(有足够的表) 通过从一个条目到另一个条目的硬链接,图形可以避免在其他表中进行大量查找,因此在许多/大多数情况下,我可以看到图形的速度优势。如果您的数据是自然分层的,特别是如果它形成了一棵树,那么我看到了关系图的逻辑/推理优势。我想象一个链接到其他节点的图的节点可能包含多个映射或列表。。。它有效地在图的节点中包含关系数据库 图形数据库与关系数据库相比有什么缺点吗?(注意:我不是在寻找实现中缺少的特性,而是理论上的优点/缺点)Database 图形数据库反对关系数据库吗?,database,graph,nosql,relational-database,non-relational-database,Database,Graph,Nosql,Relational Database,Non Relational Database,我是DBs的新手。似乎可以用图形形式表示任何关系数据库(尽管它可能是一个非常扁平的图形),也可以用关系数据库表示任何图形数据库(有足够的表) 通过从一个条目到另一个条目的硬链接,图形可以避免在其他表中进行大量查找,因此在许多/大多数情况下,我可以看到图形的速度优势。如果您的数据是自然分层的,特别是如果它形成了一棵树,那么我看到了关系图的逻辑/推理优势。我想象一个链接到其他节点的图的节点可能包含多个映射或列表。。。它有效地在图的节点中包含关系数据库 图形数据库与关系数据库相比有什么缺点吗?(注意:
什么时候我还应该使用关系数据库?即使我在逻辑上有一个int到int的单一映射,我也可以在一个图中进行映射。图形数据库在大约20到30年前被关系ish技术弃用 主要的理论缺点是,图形数据库使用两个基本概念来表示信息(节点和边),而关系数据库只使用一个(关系)。这就渗透到了数据操作语言中,因为基于图形的语言必须提供两组不同的操作符:一组用于在节点上操作,另一组用于在边上操作。关系模型只需要一个就足够了
更多的操作符意味着需要为DBMS builder实现更多的操作符,更多出现错误的机会,对于用户来说,这意味着需要学习更多不同的语言结构。例如,向数据库添加信息只是在关系中插入,在基于图形的数据库中,信息可以是存储(节点)或连接(边)。删除信息只是删除(关系),而不是删除(节点)或断开连接(边)。基于欧文·斯穆特的精确答案,关系模型取代图模型的一个重要原因是,图的结构比关系具有更大程度的“偏差”。图的边是导航链接,用户查询将以特定方式遍历这些链接。相同数据的关系模型对如何使用数据的假设要小得多。用户可以自由地以数据库设计者可能无法预见的方式连接和操作关系数据。重新设计图形数据库结构以支持新需求的破坏性成本是20世纪80年代推动采用关系模型及其基于SQL的分支的一个因素。数据模型很重要,但更重要的是如何访问数据。注意,很少有(实际上没有)分片或以其他方式分布的图形数据库。如果将插入速度与典型关系数据库和图形数据库进行比较,则关系数据库很可能会获胜 是的,图形模型比关系模型更通用,但它并不能使它具有通用性——在某些情况下,这种通用性是优化的障碍 事实上,现代图形数据库是一个小范围任务的解决方案——寻找从a到B的路线,在社交网络中与朋友合作,医学中的信息技术
对于大多数业务应用程序来说,关系数据库仍然占主导地位。在上面的回答中,我忽略了性能方面。 基于图形的数据库的性能对于标量模型甚至基于树的模型来说本质上更差。只有当你有一个真正的图形,他们可能会表现出更好的性能 此外,大多数graph DBs不支持ACID,例如几乎任何RDBMS 从我的实际生活经验中,我可以看出几乎任何不断发展的数据模型迟早都会变成一个图,这就是为什么graph DB在灵活性和敏捷性方面具有优势(它们与数据模型的发展保持同步)
这就是为什么我不认为rdb会像@Kostja所说的那样“适用于大多数业务应用程序”。我认为,在ACID功能至关重要的地方,它们将占上风。关系数据库的设计目的是聚合数据,通过图表找到关系。 例如,如果您有一个金融领域,所有连接都是已知的,那么您只能通过其他数据来聚合数据以找到总和,以此类推 图形数据库在更混乱的领域中更好,其中to连接更为重要,并且并非所有连接都是明显的,例如:
- 人与人之间关系不同的人际网络
- 电影和创造它们的人。不仅仅是演员,还有全体工作人员
- 自然语言处理和识别词之间的联系