浅尝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 和 ...
随机推荐
- 在后台获取Textarea控件的值
使用Request.Form方法 1.在前台设置name 属性 <textarea name="Content">hdjfhjdfhdj</textarea> ...
- 一个简单链表的C++实现(二)
/* LList.cpp * Author: Qiang Xiao * Time: 2015-07-12 */ #include<iostream> using namespace std ...
- Cocos2d-x win7 + vs2010 配置图文详解(亲测)
下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d-1.01-x-0.9.1,具体下载位置如下图: 下载完之后, ...
- Laravel 5.1 ACL权限控制 四 之middleware
1.创建Middleware php artisan make:middleware MustBeAnAdmin 2.实现 MustBeAnAdmin.php中的handle方法,判断登录的用户是否为 ...
- CentOS6.4关闭触控板
1. 检查是否安装xorg-x11-app; rpm -qa xorg-x11-apps 如果没有安装使用下面命令安装xorg-x11-app yum install xorg-x11-apps 2. ...
- Android 5.0五大安全特性
全盘加密(Full Disk Encryption, FDE) 对所有闪存数据加密.性能下降较大 Nexus 6,Nexus 9无法关闭FDE 对于其它设备.Google推荐开启 多用户支持 4.2中 ...
- Identifiers
Identifier An identifier is an arbitrarily long sequence of digits, underscores, lowercase and upper ...
- 再见了acm
2013年11月17日长沙区域赛我的最后一场区域赛. 忙碌了三年的acm要停下脚步,一时还无法接受. 这样一个结果有点无奈. 感谢队友,三年三支队伍五个队友,感谢你们.(每当写到这里时就总有点小忍不住 ...
- 使用ownCloud在Linux安装你的个人云服务
ownCloud是一个免费开源的软件,用于为分享文件,日历,联系人,书签和个人音频/视频.非常容易安装和管理. 前提 在这篇教程里我使用CentOS 6.5 minimal server来安装ownC ...
- MySQL 出现 The table is full 的解决方法
原文链接: MySQL 出现 The table is full 的解决方法 浅谈MySql的存储引擎(表类型) MySQL 出现 The table is full 只有一个原因,对应的表数据容量达 ...