mongodb日志存储预研总结

Mongodb技术报告总结


1.目的

提供技术人员进行参考

2.技术优势

大数据量

内置GridFS,支持大容量的存储

高扩展性

Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病。

高性能

在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询,而mongodb的查询性能可以,同时它的写入性能也很厉害,可以写入百万级别的数据。

灵活的数据模型

无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。

高可用:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如mongodb通过mongos、mongo分片就可以快速配置出高可用配置。

MongoDB的缺陷:

1. 事务关系支持薄弱(4.0版本后修改支持事务操作)。

2. 稳定性有些欠缺,大量的查询会影响插入速度,会造成插入非常不稳定。

3.MongoDB一方面在方便开发者的同时,另一方面对运维人员却提出了相当多的要求。业界并没有成熟的MongoDB运维经验。

3.性能分析

由于机器以及测试环境缺乏等原因,没能够进行具体的性能以及压力测试,所以引用了网上比较符合基本的业务场景的测试报告文件,该测试结果仅提供参考。

测试环境:

服务器:X86 pcserver


           cpu:  单颗8核


           内存:64G

磁盘:raid 10


           操作系统:centos 6.5

 mongodb:3.0


           java驱动:2.13.0


           jdk:1.6


          网络:千兆以太网


测试一:单台monodb服务,一台同配置服务器作为压力服务器,数据量不超过内存大小。


场景一:每文档1000字符,10线程同时写。


结果:每秒平均写入22413 个文档。


场景二:每文档10K字符,10线程同时写。

 

结果:每秒平均写入9038个文档

 

场景三:每文档35K字符,10线程同时写。

结果:每秒平均写入2261个文档.插入速度不稳定

 

结论:插入速率于文档大小有关,插入速率与文档成反比

 

测试二:单台monodb服务,一台同配置服务器作为压力服务器,数据量不超过内存大小。库里背景为1亿条大小为10K的数据。查询会随机按ID进行,插入为每次插入10k的数据。10线程插入,10线程查询。测试之前,先进行大量的随机查询,直到内存不增长

结果:插入速度平均每秒9229

查询速度平均每秒2102

 

场景:10线程插入,20线程查询

结果:插入速度平均每秒4622  插入速度非常不稳定

 

      查询速度平均每秒2530

 

结论:在数据并发量大的情况下,大量的查询会影响插入速度,会造成插入非常不稳定(将查询分布到副本上是个好的选择)

4.技术框架

建议架构模式:副本模式


框架优点:

[if !supportLists]①   [endif]读写分离,解决节点的读写压力过大

[if !supportLists]②   [endif]集群数据一致性,采用从节点复制主节点数据,保证集群内数据一致

[if !supportLists]③   [endif]集群高可用,主节点挂了能自动切换连接(支持手动切换)

[if !supportLists]④   [endif] 

5.部署(待)

 

你可能感兴趣的:(mongodb日志存储预研总结)