登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 564|回复: 0

磊哥测评之MongoDB篇

[复制链接]

194

主题

194

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-2-25 22:45:49 | 显示全部楼层 |阅读模式 来自 江苏徐州
上期文章我们聊到了Redis,这期我们来说说另一个网红NoSQL数据库——MongoDB。
PS:其他汗青测评请直接翻到文末~


有这么一个先容MongoDB的说法是:MongoDB黑白关系数据库当中功能最丰富、最像关系数据库的。这么说是由于作为一个面向文档存储型、数据布局非常疏松自由的数据库,MongoDB却拥有着丰富的功能特性如强盛机动的查询语言、支持二级索引等,新版本的MongDB乃至还支持事件。


MongoDB不但功能丰富,而且读性能强盛到远远把MySQL甩在背面,本日我就取代各人来动手举行一下数据库测试,揭开MongoDB的秘密面纱。搜刮关注“腾讯云数据库TencentDB"官方微信,最新最热数据库前沿知识和手把手实战教程等你来约,更可在移动端一键管理数据库。


为了举行数据库对比测试,这次我购买了腾讯云MongoDB的主从版(1主2从),同时在同样设置的云主机自建MongoDB作为对比。


c92482FxFuScXFii.jpg
下面给出CentOS7 64位上安装MongoDB 3.6的实践如下:
vim /etc/yum.repos.d/mongod-org.repo
编辑内容如下:
[mongodb-org]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=http://www.mongodb.org/static/pgp/server-3.6.asc
实行指令yum install mongodb-org -y安装
vim /etc/mongod.conf
此处根据本身需求修改bindIp: 0.0.0.0            #监听地点 port: 27017        #监听端口
systemctl start mongod.service   #开启服务
netstat -anpt | grep 27017    #查抄是否启动
服务开启后可以利用上面的指令测试服务是否启动,假如乐成启动的话会看到效果如下图所示:


e275J7c27wkOw2O2.jpg
假如无法启动,必要根据日记分析详细缘故原由。根据笔者的实践,大部门的缘故原由会落在设置和权限上。假如清除错误太难,发起重新安装来的快一点。



接下来必要安装数据库测试工具,这次我们利用YCSB,雅虎开辟的一个很强盛的测试工具。
在安装YCSB前必要安装Java和Maven,测试前必要在workloads文件夹中创建设置文件,设置如下图所示:


e4g4F8N8N5kgzN4M.jpg
思量到购买的mongoDB是副本集设置,一个主节点带两个从节点,我们在当地也设置好副本集群,利用 ./mongod --replSet amymongo --dbpath /data/27019 --port 27019 --logpath /var/log/mongodb/27019.log --fork 设置从节点,详细设置和初始化方法参考http://cloud.tencent.com/developer/article/1379231(固然摆设在本机的方案不能包管高可用)。


在workloads中防止设置文件,我们选择插入1万万条记载,实行1万万次操纵,测试两种场景:read/update 9:1和纯insert场景。
废话少说,下面就一起来看看测试效果吧。


场景读更新read/update 9:1,单元ops/sec:
mY5puydj3PPmj3j5.jpg
场景纯写入insert,单元ops/sec:


u6c4E5Y6Ldd4yCfP.jpg
场景读更新read/update 9:1,单元us(延时):


J1ezYwi4Nny54441.jpg
场景纯写入insert,单元us(延时):


V4hz1W7777A6pZAp.jpg


搜刮关注“腾讯云数据库TencentDB"官方微信,最新最热数据库前沿知识和手把手实战教程等你来约,更可在移动端一键管理数据库。


看来MongoDB真的是一个高性能的数据库,为啥呢,由于mongo的延时单元居然是us微秒、微秒、微秒。。。16GB的内存根本上20线程之后延时就会大大增长,在100线程的时间根本上延时根本在1000us以上,而读多场景跟写入场景相比,写入场景的性能略差一点,随着线程数的增大,写入场景的吞吐量和延时体现和读更新场景的差距会扩大。


有读者大概会有迷惑,既然数据库测试是比力云和自建,看起来差距也没有那么大,用自建似乎也可以担当啊。这里我要把测试中的发现讲给各人听,听完之后各人就明确了。



  • 第一点,笔者买的是16G内存的呆板(流下了没有钱的泪水),测试的时间发现cvm的内存占用根本到了百分之60左右,笔者在创建副本集和加大测试数据量(购买数据量的百分之80)之后发现,内存占用根本到了百分之80以上。看来mongo的第一个缺点,就是对内存的斲丧真的非常可骇!!假如碰到高并发大数据量读写,恐怕分分钟就存在着OOM的风险。


以是这里奉劝各位同砚,假如要自建MongoDB,照旧只管购买超大内存满意业务需求,制止在业务高峰的时间被“干掉”。假如由于跟笔者一样贫苦不想买那么大的内存,可以思量利用云数据库,云MongoDB具备动态伸缩本领,纵然没有买够大的内存,也完全来得及在业务高峰扩容, 纵然发生故障,也有美满的数据主动备份和无损规复机制来规复数据,在可用性上保障就高多了。



  • 第二点,笔者在后续测试当地副本集的时间,实验读secondary节点的数据,效果碰到了读耽误很高的环境。在网上研究了一下发现是由于,MongoDB 复制集里 Secondary 不停从主上批量拉取 oplog,然后在当地重放,以包管数据与 Primary 同等。这里为了防止脏读,会加一个锁壅闭全部的读哀求。


以是假如碰到 Secondary 重放 oplog 占用锁时间长,读取的延时也会对应变长。这个锁最高能锁多久呢,看到有个案例锁了靠近一个小时。。。看到的人心田肯定是瓦解的,而在云Mongo测试的时间没有碰到这个环境,我想这肯定是针对这个缺陷做了很大的改进,利用了其他方法实现同步。


总的来说,MongoDB确实可以不借助其他第三方工具实现高可用和分片功能,具备的高可用的故障切换,分片可以实现数据的分部平衡,大数据量的时间通过路由实现了服务器的负载平衡。以是MongoDB自身的可用性较高,也难怪会在短短时间内成为盛行的NoSQL数据库。


但是MongoDB也存在着一些坑,如对内存的占用过高、对网络的占用过高、存在从节点锁导致读险些不可用的环境,这些环境在现实业务利用的时间会导致很严峻的题目,集群宕机、服务瘫痪、数据丢失无时不刻不是覆盖在运维同砚心头的阴影。这个时间云MongoDB险些就是救星,弹性伸缩、随时扩容、真正安全的数据热备以及强盛的专业运维架构师团队,才气真简直保业务安全无端障的运行下去。搜刮关注“腾讯云数据库TencentDB"官方微信,移动端一键管理数据库。


写到这里,笔者也在思索,云数据库到底是什么,它仅仅是把数据库封装一下,改改内核,提供给利用者吗?不,云数据库应当是一整套专业服务,除了数据库之外,另有监控、安全、迁徙、灾备、运维等一系列的服务提供。能让业务开辟专注于业务自己,把专业的交给专业的人去做。想要领会上云的利益,可以先从购买一个云数据库试用开始。


你肯定还想看
《磊哥测评:腾讯云控制台、DMC和小步伐》

《磊哥测评:自建数据库VS云数据库,到底怎么选?》

《磊哥测评:腾讯云数据库 VS 阿里云数据库》

《磊哥测评:云Redis VS 自建Redis》

《怎样使用MongoDB打造TOP榜小步伐》

云MongoDB优化使LBS性能进步10倍

《腾讯云自研数据库CynosDB存储架构揭秘》

《迪B讲堂:怎样精确的选择云数据库》

《迪B讲堂:MySQL备份周期怎样选择?》

《怎样计划和实现高可用的MySQL》

《Redis数据库云端最佳技能实践》

《腾讯云数据库为保护网保驾护航》

听云轻松处置惩罚日均千亿级数据哀求量背后的机密

《揭秘环球最大出行业务背后的数据库体系》

qLolLLG78XCLN73C.jpg TencentDB
云上智能数据管理专家
有任何题目请致电:
4009-100-100
↓↓点此开抢腾讯云数据库




上一篇:Centos7安装ffmpeg和利用youtube-dl下载Youtube视频
下一篇:测试情况搭建(k8s-1.13单节点)
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-2 08:38 , Processed in 0.077336 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表