我试图了解我是否应该为我的项目使用GraphDB。我正在映射计算机网络,并且使用NetworkX。该关系是物理或逻辑上的邻接(L2和L3)。在当前版本中,我的程序扫描网络并将邻接信息转储到Postgress RDB中。从那里开始,我使用Python使用NetworkX构建图形。
我试图了解是否应该更改方法,以及将信息存储在GaphDB中是否有任何好处。 Postgress具有AgensGraph,它似乎是作为GraphDB叠加层或插件在Postgress之上构建的。我不知道是否将其安装在顶部会使我的生活更轻松。从SQLite到Postgress :-)到SQLAlchemy的迁移我都勉强生存了下来,所以现在甚至不到3个月,我就在重新考虑事情(迁移未完成)
我可以选择使用混合,但是我不确定使用GraphDB是否有意义。据我了解,这些优点是不需要模式(这对像我这样的数据库新手很有帮助)
我还想知道NetworkX(Python librayr)和GraphDB是否以任何方式重叠。据我了解,NetworkX可能有助于分析图的拓扑,而GraphDB主要用于查询存储在数据库中的数据。它们有重叠吗?它们可以一起使用吗?
答案 0 :(得分:1)
TLDR::使用Neo4j或OrientDB存储数据,并使用networkx
处理数据(如果需要复杂的算法)。这将是最好的解决方案。
我强烈建议您不要使用GraphDB。 GraphDB基于RDF,用于语义Web和常识存储。它不应该用于像您这样的问题。有许多图形数据库将更适合您。我可以推荐Neo4j(如您所见,是最受欢迎的图形数据库;免费,但非开源)或OrientDB(最受欢迎的图形数据库)。
遇到类似问题时,我使用了图数据库(但我使用了HP UCMDB,这是公司软件,而且不是免费的)。确实比平均关系数据库好得多。因此,使用图数据库的想法很好,很自然地适合这种问题。
我不确定您是否真的需要networkx
来分析图(可以使用图查询语言),但是如果需要,可以使用以下方法将数据库中的数据加载到networkx
中: GraphML或some another methods(OrientDB与之类似)以使用networkx
处理它。
最后还有小问题问答:
据我所知,NetworkX可能有助于分析图的拓扑
绝对正确。
而GraphDB主要用于查询存储在数据库中的数据。
是一个数据库。而且,是的,它主要用于查询数据。
它们是否会重叠?
它们都是关于图形的。当然,它们重叠:)
可以一起使用吗?
是的,他们可以。不,它们不能一起解决您的问题。