NetworkX 与 GraphDB:它们的用途相似吗?何时使用一种或另一种以及何时将它们一起使用?

Min*_*iMe 4 graph networkx graphdb

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

我试图了解我是否应该改变我的方法,以及将信息存储在 GaphDB 中是否有任何好处。Postgress 有 AgensGraph,它似乎建立在 Postgress 之上,作为 GraphDB 覆盖或插件。我还不知道把它安装在上面是否会让我的生活更轻松。我几乎没有从 SQLite 迁移到 Postgress :-) 和 SQLAlchemy,所以现在不到 3 个月,我就在尽可能地重新考虑事情(迁移尚未完成)

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

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

vur*_*mux 7

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


我强烈不建议您将 GraphDB 用于您的目的。GraphDB 基于RDF,用于语义网络和公共知识存储。它不应该用于处理像您这样的问题。有许多图形数据库更适合您。我可以推荐Neo4j(最流行的图形数据库,如您所见;免费,但非开源)或OrientDB(最流行的开源图形数据库)。

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

我不确定您是否真的需要networkx分析图形(您可以使用图形查询语言),但是如果您愿意,您可以networkx使用 GraphML 或其他一些方法(OrientDB 类似)将数据从数据库加载到处理它使用networkx.

以及最后的小问答:

据我了解,NetworkX 可能有助于分析图的拓扑结构

绝对正确。

而GraphDB主要用于查询DB中存储的数据。

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

它们有重叠吗?

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

它们可以一起使用吗?

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