将图存储在MySQL中是一个好主意吗?

时间:2011-03-06 09:01:18

标签: mysql sql graph relational-database

我使用MySQL来存储工具的报告。我对用户可以查询数据的速度和灵活性感到非常满意。该工具还有一些数据,这是一个图表。我的问题是,将图形存储在MySQL中是一个好主意吗?图中的节点数和边数以百万计,查询通常是图遍历。

3 个答案:

答案 0 :(得分:5)

特别是MySQL不是作为图形数据库创建和优化的。您可能想尝试Neo4J,这是一个很好的图形数据库。

答案 1 :(得分:3)

普通SQL通常不适合操作图形数据结构。但是,有一些技术可以对其进行索引。

例如,如果您的频繁更新,使用GRIPP index可以非常好地处理图遍历查询。后者允许您在或多或少的固定时间内回答父子和深度相关的查询 - 无论图的节点数或链接密度如何。

答案 2 :(得分:1)

SQL数据库通常不能很好地处理图形数据。问题是,要进行图遍历,您必须在单个查询中将整个图形拉入内存,然后操纵它并存储更改,或者您必须执行大量连接以一次遍历一个节点的图形,这变得非常慢。使用您正在查看的比例图表,最好使用图形数据库或使用REDIS等内存数据库作为快速缓存层,然后将其保留在后台。