-1

我想知道是否有人看过使用 mongodb 和标准 C++ 树之间的速度比较。我目前正在构建一个使用树结构将其数据存储在 RAM 中的项目。据我了解,JSON 具有类似的结构,其中树的节点位于 JSON 对象内部,例如

my_tree : {
    node1 : [
        innerNode1: {},
        innerNode2: {},
        innerNode3: {}
    ],
    node2 : [
    ... data
    ],
}

这与我正在实现的树状数据结构非常相似。

4

3 回答 3

2

您可以设置一个测试并自己计时。答案当然取决于你的树结构实现的效率!

于 2013-05-10T20:31:48.567 回答
1

纯 C++ 树实现可能更快,并且开销可能更少,因为它不必处理来自 DB 世界的事物,例如原子性、日志、并发性、IPC、解析驱动程序消息(这可能与工业电脑)...

但是您的树状实现可能没有 MongoDB 提供给您的所有类型的查询。您的实现也可能完全基于 RAM,这意味着您无法处理那么多文档。

于 2013-05-11T06:03:00.583 回答
1

核心树总是更快。获取节点通常会导致一次(可能更多)缓存未命中。那是几纳秒。对于基于磁盘的树节点,磁盘的延迟将是 5-10 毫秒(加上一个或多个系统调用的成本)。对于基于网络的存储,远程存储甚至可能需要 100 毫秒或更长时间。

如果您想遍历树,情况会变得更糟:每个节点都将花费磁盘或网络存储的往返,或者内存中对象的缓存未命中。

基于磁盘的对象存储的艺术就是避免这种逐行处理。今天的 SQL 数据库对递归查询有一些支持。但恐怕 noSQL DBMSses 不会有这个。

于 2013-05-11T11:41:14.037 回答