NetworkX vs GraphDB:它们的用途相似吗?什么时候使用其中一个,什么时候一起使用?

NetworkX vs GraphDB: do they serve similar purposes? When to use one or the other and when to use them together?

我想知道我是否应该为我的项目使用 GraphDB。我正在映射计算机网络并使用 NetworkX。关系是物理或逻辑邻接(L2 和 L3)。在当前版本中,我的程序扫描网络并将邻接信息转储到 Postgress RDB 中。从那里我使用 Python 使用 NetworkX 构建我的图表。

我想知道我是否应该改变我的方法,以及将信息存储在 GaphDB 中是否有任何好处。 Postgress 有 AgensGraph,它似乎作为 GraphDB 覆盖或插件构建在 Postgress 之上。我还不知道将其安装在顶部是否会让我的生活更轻松。我勉强从 SQLite 迁移到 Postgress :-) 和 SQLAlchemy 所以现在在不到 3 个月的时间里我正在重新考虑事情(迁移未完成)

我可以选择混合使用,但我不确定使用 GraphDB 是否有意义。据我了解,这些具有不需要模式的优点(这对像我这样的数据库新手有很大帮助)

我还想知道 NetworkX(Python librayr)和 GraphDB 是否有任何重叠。据我了解,NetworkX 可能有助于分析图形的拓扑结构,而 GraphDB 主要用于查询存储在数据库中的数据。它们是否重叠?它们可以一起使用吗?

TLDR: 使用 Neo4j 或 OrientDB 存储数据,networkx 处理数据(如果您需要复杂的算法)。这将是最好的解决方案。


我强烈不建议您将 GraphDB 用于您的目的。 GraphDB 基于 RDF that is used for semantic web and common knowledge storage. It is not supposed to be used with problems like yours. There are many graph databases that will fit to you much better. I can recommend Neo4j (the most popular graph database, as you can see; free, but non-open-source) or OrientDB(最流行的开源图形数据库)。

我遇到类似问题时使用了图数据库(但我使用的是HP UCMDB,那是企业软件,不是免费的)。它确实比一般的关系数据库好得多。所以图数据库的使用思路很好,很适合这类问题。

我不确定你是否真的需要 networkx 来分析图表(你可以使用图表查询语言),但如果你愿意,你可以将数据从你的数据库加载到 networkx 使用 GraphML 或 some another methods(OrientDB 类似)使用 networkx.

对其进行处理

最后的小问答测验:

As far as I understand these things NetworkX could be instrumental in analyzing the topology of the graph

完全正确。

while GraphDB is mainly used to query the data stored in the DB.

一个数据库。而且,是的,它主要是用来查询数据的。

Do they overlap in anyway?

它们都是关于图表的。当然它们重叠:)

Can they be used together?

是的,他们可以。不,它们不应该一起用于您的问题。