3 与MongoDB比较
Ubuntu没有自带MongoDB,需手动安装,安装过程不赘述,可参考。
www.jingyan.baidu.com/article/363872ecef62466e4ba16f08.html
基础环境操作系统:Linux 3.6.10 Ubuntu 64位
CPU:Intel(R) Core(TM)i3 CPU M 350 @ 2.27GHz
内存:4GB
语言:Java 7
SequoiaDB版本1.10,使用安装后的默认设置,未调优
MongoDB版本2.6.6,使用安装后的默认设置,未调优
测试方法测试插入、批量插入等常规CRUD操作,分别使用1万,4万,16万,64万的数据量测试运行时间(毫秒),同一个操作重复20次取均值。
数据格式为:{ "Age" : 1 ,"Name" : "test"}
插入测试单条简单数据插入,每条数据的Name字段固定为“test”,Age字段自增。
比较结果见下图,MongoDB在插入速度上领先。
批量插入测试数据的批量插入,插入数据时Name字段不变,Age字段自增。
比较结果见下图。在批量插入的场景下,两种数据库的操作速度都有1个量级的提高,但MongoDB仍然领先。
查询测试数据的查询,查询Name为test的字段,由于数据里Name字段相同,会返回所有数据。
比较结果见下图。在查询场景下,两种数据库性能相差无几。
条件查询1测试数据的条件查询,查询满足0
比较结果见下图,若没有索引,两种数据库性能差不多。若添加索引,MongoDB性能有1个量级的提升,但似乎索引对SequoiaDB性能改变不大。
也可能是笔者对索引优化不够,或者使用场景有问题,才导致SequoiaDB在索引查找上表现欠佳。
条件查询2测试数据的条件查询插入,查询满足Age==random条件的单条数据。
在查询时,使用hint方式强制SequoiaDB使用索引。
索引对MongoDB的性能提升有很大帮助,但对SequoiaDB似乎无效。
从目前的测试场景上看,MongoDB暂时领先。
更新测试数据的更新,将所有数据的Name字段由test更新为test2,会更新所有数据。
比较结果见下图。此时SequoiaDB优势明显。
删除
测试数据的删除,删除Name为“test”的数据,即所有数据。
比较结果见下图。此时SequoiaDB优势明显。SequoiaDB在对已有数据进行写操作时速度较快。


空间
两个数据库运行内存和存储空间的对比情况如下表所示,二者差距不大。
| 运行内存(MB) |
MongoDB | 272 |
SequoiaDB | 209 |
分析
搜索了一下网上现有的对两者的比较,发现大部分比较都在集群环境中完成,和笔者得出的结论也不尽相同,有些结论甚至相反。这里罗列网上搜到的前人比较分析结论,供参考。
www.tech.it168.com/a2013/0904/1529/000001529489_all.shtml
www.kuqin.com/shuoit/20140928/342398.html
www.linuxidc.com/Linux/2014-12/110688.htm
测试代码打包放在git.oschina上,望有高人指点。源码地址为:
http://git.oschina.net/reallyfly/TestDB