我正在使用MySQL存储来自工具的报告。用户可以非常快速和灵活地查询数据,这让我非常满意。该工具还包含一些图形数据。我的问题是,在MySQL中存储图形数据是否是一个好主意?图形中的节点和边数达到了数百万级别,并且查询通常是图形遍历。
我正在使用MySQL存储来自工具的报告。用户可以非常快速和灵活地查询数据,这让我非常满意。该工具还包含一些图形数据。我的问题是,在MySQL中存储图形数据是否是一个好主意?图形中的节点和边数达到了数百万级别,并且查询通常是图形遍历。
MySQL并不是专门为图形数据库而创建和优化的。您可能想尝试Neo4J,它是一个很好的图形数据库。
通常,纯粹的SQL语句并不适合操作图形数据结构。但是,有一些技术可以对其进行索引。
例如,如果您的数据不需要频繁更新,使用GRIPP索引将使您能够非常好地处理图遍历查询。后者让您能够以更或多或少固定的时间回答关于父子关系和深度相关的查询,而不管图的节点数或链接密度如何。
一般来说,SQL数据库不能很好地处理图形数据。问题在于,要进行图形遍历操作,您要么需要在一个查询中将整个图形加载到内存中,然后对其进行操作和更改,要么需要执行大量的连接操作以逐个节点遍历图形,这变得非常缓慢。对于您所关注的规模的图形,最好使用图形数据库或使用像REDIS这样的内存数据库作为快速缓存层,然后将其持久化到后台。