gpt4 book ai didi

mongodb - 在 mongodb 中存储图形

转载 作者:IT老高 更新时间:2023-10-28 11:05:53 29 4
gpt4 key购买 nike

我有一个无向图,其中每个节点都包含一个数组。可以从数组中添加/删除数据。将其存储在 Mongodb 并能够有效地执行此查询的最佳方法是什么:给定节点 A,选择 A 的相邻节点中包含的所有数据。

在关系数据库中,您可以创建一个表示边的表和另一个表来存储每个节点中的数据。

table 1 
NodeA, NodeB
NodeA, NodeC

table 2
NodeA, item1
NodeA, item2
NodeB, item3

然后在查询相邻节点中的数据时加入表。但是在 MongoDB 中连接是不可能的,那么设置这个数据库并有效地查询相邻节点中的数据的最佳方法是什么(在空间上稍微有利于性能)。

最佳答案

专业的分布式图数据库

我知道这听起来与 OPs 关于 Mongo 的问题有点遥远,但现在有更多专业的图形数据库擅长此类工作,并且可能更容易使用,尤其是在大型图形上。

这里有 7 种此类产品的比较:https://docs.google.com/spreadsheet/ccc?key=0AlHPKx74VyC5dERyMHlLQ2lMY3dFQS1JRExYQUNhdVE#gid=0

在三个最重要的开源产品(Titan、OrientDB 和 Neo4J)中,它们都支持 Tinkerpop Blueprints 界面。所以对于一个看起来像这样的图表......

enter image description here

...查询“自 2011 年以来朱诺非常钦佩的人”将如下所示:

Iterable<Vertex> results = juno.query().labels("knows").has("since",2011).has("stars",5).vertices()

当然,这只是冰山一角。相当强大的东西!

如果你必须留在 Mongo

将 Tinkerpop 蓝图视为各种数据库中的“存储图形结构的 JDBC”。 Tinkerpop Blueprints API 有一个特定的 MongoDB 实现,我相信它会为您工作。然后使用 Tinkerpop Gremlin,您可以使用各种高级遍历和搜索方法。

关于mongodb - 在 mongodb 中存储图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5125709/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com