2013-05-10 64 views
-1

我想知道是否有人看过使用mongodb和标准C++树之间的速度比较。我目前正在构建一个使用树结构将其数据存储在RAM中的项目。据我了解,JSON也有类似的一种结构,其中一棵树的节点是一个JSON对象的内部,像MongoDB在速度上如何与用C++实现的标准树进行比较?

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

这是非常相似的树状数据结构,我实现。

回答

1

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

如果你想步行事情变得更糟树:每个节点将花费磁盘或网络存储的往返行程或内存对象的高速缓存未命中。

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

2

你可以自己设定一个测试和时间。当然,答案取决于树结构实现的效率!

+0

我只是好奇,看看别人是否做了类似的事情。 – user1876508 2013-05-10 20:32:48

1

纯粹的C++树实现可能会更快,并且可能有更少的开销,因为它不必处理来自数据库世界的事情,如原子性,日志,并发性,IPC,解析驱动程序消息(这可能几乎与IPC相同)...

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