Mysql 图和关系数据模型

Mysql 图和关系数据模型,mysql,nosql,relational-database,neo4j,graph-databases,Mysql,Nosql,Relational Database,Neo4j,Graph Databases,对我来说,关系数据是一个图形,其中每个表都是一个节点,每个外键都是将两个节点连接在一起的边 因此,当我听说Neo4j和“图形数据库”之类的东西时,我很难理解它们与关系模型的本质区别,关系模型本身就是一个图形 最重要的是,因为我无法区分两者之间的区别,所以我很难确定哪些问题域最好用图形模型解决,哪些问题域最好用关系模型解决。我正在寻找一套指导原则来说明:嘿,这个问题肯定最好用一个图模型来表示,所以我将使用(比如)Neo4j。或者说:这个问题最好用关系模型来表示,所以我将使用(比如)MySQL 编辑

对我来说,关系数据是一个图形,其中每个表都是一个节点,每个外键都是将两个节点连接在一起的边

因此,当我听说Neo4j和“图形数据库”之类的东西时,我很难理解它们与关系模型的本质区别,关系模型本身就是一个图形

最重要的是,因为我无法区分两者之间的区别,所以我很难确定哪些问题域最好用图形模型解决,哪些问题域最好用关系模型解决。我正在寻找一套指导原则来说明:嘿,这个问题肯定最好用一个图模型来表示,所以我将使用(比如)Neo4j。或者说:这个问题最好用关系模型来表示,所以我将使用(比如)MySQL


编辑:总之,图形模型比关系模型更能解决哪些问题域(数据方面)?

您希望使用neo4j而不是关系数据库的一种情况:

>“<强”>使用表之间的多个连接,特别是在连接表本身时,请考虑使用图DB .< /P> 在我看来,使用graph DB是一种存储此类信息的方法,我以很少的方式查询这些信息(或者可能只使用一种查询模式),我在寻找答案的速度。 当您使用大量查询类型并且仍然具有大量计算能力时,使用关系数据库会更好


如果您想了解更多信息并深入了解graph DB,我建议您阅读smthing about math graph in general(),但如果您没有很强的数学背景,仅此一点可能很难理解。

也许您甚至可以查看和,通过比较,主要区别在于信息的存储方式,以及查询时如何访问信息

正如您所说,图形也可以存储在关系模型中,但是如果您想要遍历图形,通常需要连接多个表。在这种情况下,像InfiniteGraph中的图形模型效果更好,因为它将实体的关系存储在实体本身。这意味着处理关系是一种快速而廉价的操作

现在,您已经询问了图形数据库更适合哪个问题域。如果您的问题是在实体之间查找不直接已知的关系,或者在多个关系中查找一个实体的所有已知信息,则可能需要调查图形数据库

Objective,Inc.是InfiniteGraph背后的公司,有一些不错的用例和交互式演示,你可以看看(http://objectivity.com/resources). 思考如何在有争议的时间内使用关系数据库解决LinkHunter演示,有助于理解图形数据库

最后我想说,图形数据库根本不是更好的关系数据库。如果您的问题在关系数据库中是可以解决的,那么您应该考虑这个问题。查看图形数据库不仅仅是解决问题的基本方法,关系数据库不是为解决问题而设计的

致以最良好的祝愿,
Timo

正如您所说,如果您将节点与行、关系与表以及属性与列进行比较,那么图形和关系数据库的结构可能看起来是相同的

但基本的区别在于我们访问数据的方式

您可以使用关系连接两个节点,并向其添加标签,从而轻松查找它们是否相关,而不是使用外键(如果表中有大量数据,则会使查找速度变慢)


在RDBMS中,使用Graph DB来维护关系和有关该节点(相关节点)的附加信息。如果应用程序有要求,您可以在单个应用程序中同时使用这两个选项。

我理解您的失望(我也理解所有这些不同类型的“NoSQL”数据库),但请将此帖子编辑成某种形式的问题。当然,neo4j主要用于大型数据集(~Bilons原语)因此,在其上建立一个典型的网站是毫无价值的。实际上,它同样适用于典型的网站……我不认为它只适用于大型数据集。在最后一段中,你可以淡化一种傲慢的假设,即你的读者不理解,也不理解什么是图形。