NetworkX与GraphDB:它们有相似的用途吗?何时使用一个或另一个以及何时将它们结合使用?

NetworkX与GraphDB:它们有相似的用途吗?何时使用一个或另一个以及何时将它们结合使用?,graph,networkx,graphdb,Graph,Networkx,Graphdb,我试图了解我是否应该在我的项目中使用GraphDB。我正在映射一个计算机网络,我使用NetworkX。这些关系是物理或逻辑邻接(L2和L3)。在当前版本中,我的程序扫描网络并将邻接信息转储到Postgress RDB中。在此基础上,我使用Python使用NetworkX构建图形 我试图了解我是否应该改变我的方法,以及将信息存储在GaphDB中是否有任何好处。Postgress有一个AgentsGraph,它似乎是作为GraphDB覆盖或插件构建在Postgress之上的。我还不知道安装在上面是否

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

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

我可以选择使用混音,但我不确定使用GraphDB是否有意义。据我所知,它们的优点是不需要模式(这对我这样的DB新手很有帮助)


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

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


我强烈建议您不要出于自己的目的使用GraphDB。GraphDB是基于语义web和公共知识存储的。它不应该用于像你这样的问题。有许多图形数据库更适合您。我可以推荐(如您所见,最流行的图形数据库;免费但非开源)或(最流行的开源图形数据库)

当我遇到类似问题时,我使用了graph数据库(但我使用的是公司软件,不是免费的)。它确实比一般的关系数据库好得多。因此,图形数据库使用的思想是好的,它自然适合这类问题

我不确定您是否真的需要
networkx
来分析图形(您可以使用图形查询语言进行分析),但如果需要,您可以使用GraphML将数据从数据库加载到
networkx
,或者(OrientDB类似)使用
networkx
处理数据

最后还有一个问答小测验:

据我所知,NetworkX可以帮助分析图形的拓扑结构

绝对正确

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

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

它们有重叠吗

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

它们可以一起使用吗


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

非常全面的答案,正是我所需要的。Graph DB只是指这类数据库,而不是特定的GraphDB产品。我倾向于使用Neo4j,因为它有一个非常强大的浏览器,可以让我省去发布网络地图或创建新地图的工作。你用什么来可视化这些信息。对我来说,使用浏览器发布查询或教我的同事如何查询似乎非常方便……然后我不需要编写代码来创建带有Gephi或Graphviz/DOT(取决于图形类型)的mapsI可视化图形,因为我在本地机器上脱机处理图形。但是,正如我所记得的,Neo4j在浏览器中有非常好的图形可视化工具(我不确定OrientDB,我认为它没有)。我有另一个简短解释的答案(看看PS):Graphwiz是我开始做的,但它太…静态了。我想要一个交互式图形,带有过滤节点、移动节点等选项。是的,Neo4j浏览器看起来正是我需要的。我确实看了,Gephi和其他人都喜欢,但他们看起来太复杂了,我不能说Gephi很复杂。它很强大,如果你不想的话,你不能使用它所有的功能(比如,嗯……Photoshop与绘画相比)。无论如何,它有很多功能可以帮助您,比如过滤、动态着色、查找巨型组件、自动集群、各种布局等。此外,您可以直观地移动节点(与Graphviz不同)。我建议你再给Gephi一次机会:)好的,我会试试Gephi,但我需要给Gephi提供数据。我需要的是浏览器提供的内容,用户访问他或她运行所需查询的页面,然后图形就在那里。对于更详细的东西和静态,我正在考虑D3