mongodb,redis,mysql 简要对比

来源:互联网 发布:淘宝直播下载什么软件 编辑:程序博客网 时间:2024/06/02 07:10

准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块。

当下主流的要数NoSql数据库了,拥有强大的高并发能力。

mongodb:

它是一个内存数据库,数据都是放在内存里面的。

对数据的操作大部分都在内存中,但mongodb并不是单纯的内存数据库。

持久化方式:

mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。

然后,mongodb就在这块区域里面进行数据修改,避免了零碎的硬盘操作。

至于mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,mongodb在内存中修改了数据后,mmap数据flush到硬盘之前,系统宕机了,数据就会丢失。

mmap详解链接:http://www.cnblogs.com/techdoc/archive/2010/12/22/1913521.html

redis:

它就是一个不折不扣的内存数据库了。

持久化方式:

redis所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式。

解密redis持久化:http://blog.nosqlfan.com/html/3813.html

mysql:

无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。

数据量和性能:
当物理内存够用的时候,redis>mongodb>mysql
当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。
实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。
但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。
mongodb还是能够保证性能。有人使用mongodb存储了上T的数据。
mysql,mysql根本就不需要担心数据量跟内存下的关系。不过,内存的量跟热数据的关系会极大地影响性能表现。
当物理内存和虚拟内存都不够用的时候,估计除了mysql你没什么好选择了。
其实,从数据存储原理来看,我更倾向于将mongodb归类为硬盘数据库,但是使用了mmap作为加速的手段而已。
简说mmap:
mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件进行操作。
mmap 系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用。 read(),write()等操作。mmap并不分配空间, 只是将文件映射到调用进程的地址空间里, 然后你就可以用memcpy等操作写文件, 而不用write()了.写完后用msync()同步一下, 你所写的内容就保存到文件里了. 不过这种方式没办法增加文件的长度, 因为要映射的长度在调用mmap()的时候就决定了。
下面是redis和mongodb的对比图:
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 壁虎会不会爬到床上 壁虎数据恢复 家里有壁虎什么征兆 主播吃壁虎身亡 家中有壁虎是否吉利 小壁虎借尾巴故事 家里有壁虎怎么办 家里有壁虎怎么弄出去 壁虎怎么赶走 怎么赶走壁虎一分钟有效 壁虎进家里预示什么 怎样驱赶壁虎妙招 打死壁虎后果严重 壁虎吃蟑螂吗 小壁虎借尾巴课文 驱赶壁虎小妙招 壁虎吃什么食物 壁虎会不会咬人 小壁虎吃什么 家里进壁虎什么预兆 小壁虎找尾巴 小壁虎有毒吗 小壁虎借尾巴的故事 小壁虎借尾巴图片 小壁虎的尾巴有什么作用 壁虎尾巴的作用 壁虎会咬人吗 壁虎能活多久 壁虎有毒吗它咬人吗 壁虎的尾巴有什么作用 壁虎咬人吗有毒吗 被壁虎咬了怎么办 壁虎尿有毒吗 白色壁虎有毒吗 壁虎的尿有毒吗 壁虎的功效与作用 壁虎的尾巴像什么 小壁虎借尾巴原文 小壁虎借尾巴教案 车标是壁虎的是什么车 壁虎为什么会断尾巴