mongodb - 用于高效大规模图遍历的数据库

标签 mongodb networking graph database

我有一个大型二分有向图数据集(约 2000 万个元素)。在当前的使用中,我运行的遍历算法每次运行约 500,000 个节点。这些算法有效,但历史上运行的是从文本文件加载到内存的数据。

文本文件似乎是一个不好的方法,所以我将数据作为邻接列表传输到 mongoDB 中,即。

{ _id: 1, children: [2, 3] }
{ _id: 2, children: [4] }
{ _id: 3, children: [5, 6, 7] }

这可行,但我觉得该模型对于我正在做的事情来说效率低下。在伪代码中,从 _id: 1 开始的广度优先搜索的查询结构如下所示:

children = getChildren(_id = 1)
for child in children
    grandchildren = getChildren(_id = child)
    // etc., either recursively or as a nested loop

我遇到的数据库问题是没有逻辑连接节点。每个查询都必须遍历索引树,如果我没记错的话,是 O(log N)。加载后,文本文件方法的复杂度为 O(1),因为我可以制定一些简单的查找规则来直接指向节点子节点。

TL;DR 有没有一种方法可以使用数据库在 O(1) 时间内遍历大型网络?

最佳答案

您可以尝试使用 Neo4J ,NoSQL 图形数据库。我没有使用过它,但它 promise 高性能。

关于mongodb - 用于高效大规模图遍历的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688745/

相关文章:

java - 如何在 Java 中使用子节点查询 MongoDB

Node.Js 和 MongoDB Compass 连接错误

c++ - 我如何调整这个 C++ 测试用例,以便它继续与新的网络设备一起工作?

networking - 网络和负载均衡器如何在 docker swarm 模式下工作?

c++ - 如何遍历图形并沿途提取边缘权重?

node.js - Mongoose /Node 错误 : Cannot read property 'ObjectId' of undefined

mongodb - 使用 Node.js 和 MongoDB 同步数据库访问

c++ - 从另一个线程关闭 QTcpSocket

algorithm - 改善图表中的总行驶距离

javascript - Echart条形图反转Y轴