浅尝key-value数据库(二)——MongoDB的优与劣
浅尝key-value数据库(二)——MongoDB的优与劣
MongoDB的名字取自英文单词"humongous"的中间五个字母,是一个C++开发的基于分布式文件存储的数据库开源项目。他的文件存储格式是BSON(Binary JSON),因此可以高效存储二进制数据,例如图像、视频等大对象。
由于我是CentOS x86_64的系统,于是安装MongoDB非常简单:
vi /etc/yum.repos.d/mongo.repo
[10gen]
name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/
gpgcheck=0
yum install mongo-stable mongo-stable-server mongo-stable-debuginfo
然后建一个数据目录/var/db/mongo
启动服务
mongod --dbpath /var/db/mongo --fork --logpath /var/log/mongodb.log --logappend
之后就可以通过默认端口27017访问了。
mongo
>use d # 选择数据库d
>db.c.save({_id: 0, value: "abcd"}) # 在Collection c中存入{0, "abcd"}键值对
>db.c.findOne({_id: 0}) # 在c中查找主键为0的数据
>db.c.find() # 列出c中的所有数据
>use admin # 切换到admin模式
>db.shutdownServer() # 关闭MongoDB
那么MongoDB的性能是否如同传说中的那样出色呢?我在一台配置为Xeon E5506 2.13GHz x 4,8G内存,1TB SATA硬盘的机器上进行了测试,结果如下:
写入:
第一次插入500W条每条大小约2K的数据,耗时1050.2s,实际内容为12G左右,数据集占用空间为22G
第二次再插入4500W条每条大小约2K的数据,耗时8614.4s,实际内容共为98G左右,数据集共占有空间为137G
随机读取:
读取32041次,耗时250.3s
可以看出,随机读的速度非常慢,也许是由于SATA磁盘I/O性能不足吧。另外,MongoDB的磁盘空间占用也是在key-value数据库中比较大的。
同时,同事做了与Tokyo Tyrant的对比,结论是性能差不多,磁盘空间占用稍微少一点,但是TT似乎不支持分布式。由于我没有拿到测试数据,在这里就不细说了。在网上可以找到老赵做过的MongoDB和TT的比较——《MongoDB与Tokyo Tyrant性能比较》,他的测试结论是MongoDB性能有10~20%的优势,也可以参考一下。
由于MongoDB磁盘空间占用比较大,那么他的分布式功能就刻不容缓了。MongoDB从1.6版本开始也提供了Sharding的接口,下一篇我们会来测试MongoDB的分布式。
浅尝key-value数据库(二)——MongoDB的优与劣的更多相关文章
- 浅尝Vue.js组件(二)
本篇目录: 插槽(Slot) 插槽内容 作用域 具名插槽 作用域插槽 独占默认插槽的缩写语法 解构插槽Prop 使用场景举例 动态插槽名 具名插槽缩写 动态组件&keep-alive 异步组件 ...
- 浅尝key-value数据库(三)——MongoDB的分布式
浅尝key-value数据库(三)——MongoDB的分布式 测试了单机MongoDB的随机读和写入性能,这一节来讲一讲MongoDB的分布式. MongoDB的分布式分成两种,一种是Replicat ...
- 浅尝key-value数据库(一)——一览NoSQL
浅尝key-value数据库(一)——一览NoSQL 最近由于一个项目的关系,研究了一下key-value数据库这个最近很火的概念.本系列从项目需求的角度分析并测试了几个key-value数据库的性能 ...
- NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装 NoSQL Manager for MongoDB 可 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...
- NOSQL数据库之MongoDB
一.NoSQL概述 如今,大多数的计算机系统(包括服务器.PC.移动设备等)都会产生庞大的数据量.其实,早在2012年的时候,全世界每天产生的数据量就达到了2.5EB(艾字节,).这些数据有很大一部 ...
- 浅尝ECMAScript6
浅尝ECMAScript6 简介 ECMAScript6 是最新的ECMAScript标准,于2015年6月正式推出(所以也称为ECMAScript 2015),相比于2009年推出的es5, es6 ...
- Python图形界面开发编程:wxPython(浅尝篇)
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 ...
随机推荐
- BZOJ 1225: [HNOI2001] 求正整数( dfs + 高精度 )
15 < log250000 < 16, 所以不会选超过16个质数, 然后暴力去跑dfs, 高精度计算最后答案.. ------------------------------------ ...
- BZOJ 1618: [Usaco2008 Nov]Buying Hay 购买干草( dp )
无限背包dp.. 因为题目中说至少到 H 磅 , 我就直接把 H * 2 了.. ----------------------------------------------------------- ...
- php定时自动执行 需启动第一次
1 2 3 4 5 6 7 8 9 10 11 12 <? ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_li ...
- {% load staticfiles %}
原先写法 {# <link rel="stylesheet" href="/static/css/reset.css"/>#} 不使用路径写法,方便 ...
- phpeclipse
http://phpeclipse.sourceforge.net/update/stable/1.2.x/
- Linux下gsoap实现webservice功能
蓝字为关键字,等号=后面为关键字值. 一.介绍 我们用的webservice是根据gsoap编译工具来实现,gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据 ...
- Chukwa
http://baidutech.blog.51cto.com/4114344/748261/ http://blog.csdn.net/cnbird2008/article/details/1451 ...
- 让我们共同构筑物联网起飞的平台:物联网操作系统Hello China寻求应用合作伙伴
经过几天的努力,终于把Hello China V1.76版的内核移植到基于Cortex-M3内核的STM32 chipset上.因为还希望进一步写一个USART驱动程序,因此详细的移植文档,预计一周之 ...
- myeclipse设置凝视
Window-perferences--java--Code Style--Code Templates--Commments 类凝视:Types /** *@desc *@author haozk ...
- Android学习——百度地图开发定位与显示Demo
百度地图给我们提供了很丰富的API供我们进行二次开发.百度地图的SDK与定位SDK在今年6月份进行了更新. 地图更新为3.0,定位更新为4.2.百度说:这次更新对接口有了较大部分的调整,与之前版本号不 ...