传统数据库、新兴数据库、NoSQL一次选型验证数据
近期需要开发一个项目。需要集中向数据库写入大量数据,然后在查询分析。业务特点:每条数据可能要达到8K左右。写入数据量也很大,每次要写入数万条数据。因此写入速度就成为了整个项目最关键的指标。我们通常评价数据库总是看重查询性能,关于查询性能方面的评估很多。然而对于写入速度却很少提及。所以就决定进行一次实际测试。先说说入选的几个数据库:
Sqlserver :
老牌数据库,稳定可靠。我们产品一直在使用。
Derby:
纯java数据库,亮点是和java程序的集成很完美。JRE 1.7自带Derby,在JRE 1.7上开发可以不用加任何lib
Mongo:
使用C++编写。新兴的NoSQL数据,网上评价很高。
下面开始进行测试:
测试环境:
机型:个人云,
OS:win7
SQLServer:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
Derby:Apache Derby 10.8
Mongo:2.4.6
测试方法:
同时启动3个线程,SQLServer、Derby 使用连接池通过JDBC连接,Mongo使用自己的客户端连接。循环插入同样的数据。
测试结果:
[2013-37-13 10:37:56,481]
Derby Insert 13015
SqlServer Insert 15328
Mongo Insert 60832
[2013-37-13 10:39:55,393]
可以看到,在约2分钟的时间里, Mongo 完成的插入最多,达到了60832条,分别是Derby 和 Sqlserver的4.67倍和 3.97倍。
Mongo在写入性能上完胜Sqlserver 和 Derby。
同时也发现Mongo的一个问题。 在继续插入更多数据的试验中,Mongo最终异常退出。
Fri Sep 13 10:39:55.687 [conn1] mongod.exe ???
Fri Sep 13 10:39:55.687 [conn1] mongod.exe ???
Fri Sep 13 10:39:55.687 [conn1] mongod.exe ???
Fri Sep 13 10:39:55.687 [conn1] mongod.exe ???
Fri Sep 13 10:39:55.687 [conn1] kernel32.dll BaseThreadInitThunk+0x12
Fri Sep 13 10:39:55.687 [conn1]
***aborting after fassert() failure
- 点赞
- 收藏
- 关注作者
评论(0)