本篇内容大部分不是原创,转载的会贴有链接。

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

当下主流的要数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的对比图:

mongodb,redis,mysql 简要对比相关推荐

  1. mongodb,redis,mysql简要对比

    mongodb,redis,mysql 简要对比 本篇内容大部分不是原创,转载的会贴有链接. 准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块. 当下主流的要数No ...

  2. mongodb与mysql命令对比 (前人笔记+自己添加)

    mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(col ...

  3. mongodb与mysql命令对比

    mongodb与mysql命令对比 (在前辈的基础上,做了一些整理及修改,同时也添加了一些内容) 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组 ...

  4. mongodb和mysql的对比_MongoDB和MySQL的区别

    http://www.cnblogs.com/caihuafeng/p/5494336.html MongoDB(文档型数据库):提供可扩展的高性能数据存储 一. 1.基于分布式文件存储 2.高负载情 ...

  5. mongodb和mysql的对比_Mongodb与mysql语法比较

    Mongodb与mysql语法比较 mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据 ...

  6. MongoDB与MySQL效率对比

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u014513883/article/ details/49365987 本文主要通过批量与非批量对比操作的方式介绍MongoD ...

  7. 后端常用数据库的使用MongoDB, Redis, Mysql

    后端常用数据库的使用 数据库安装 (ubuntu操作系统) mysql安装 redis安装 mongodb安装 mysql 使用 (增删改查) mysql 数据库前置知识: mysql 是一个软件, ...

  8. 数据库mongodb和mysql对比

    数据库主流分类: 非关系型数据库(Nosql database) 关系型数据库(relation database management system) mysql概述 mysql采用table和结构 ...

  9. MongoDB和MySQL的区别

    http://www.cnblogs.com/caihuafeng/p/5494336.html MongoDB(文档型数据库):提供可扩展的高性能数据存储 一. 1.基于分布式文件存储 2.高负载情 ...

最新文章

  1. 定制Eclipse IDE之界面篇
  2. linux+bash+参数脚本名,linux – Bash中的脚本参数
  3. vs2015编译android,VS2015 Update2 构建 Android 程序问题汇总
  4. 统一操作系统 UOS 龙芯版上线
  5. 如何将Spring Bean注入到JSF Converter
  6. 算法题-字符串匹配算法
  7. 如何便捷的获取AD(Altium Designer)封装、以及如何从PCB工程中导出封装库、封装库安装
  8. 佛山科学技术学院计算机科学与技术李欣华,第七届国务院学位委员会中文学科评议组2019年度 扩大会议在佛山科学技术学院召开...
  9. 用Python爬取英雄联盟(lol)全部皮肤
  10. Velodyne VLP16 WIN下配置
  11. 传统工厂如何利用物联网模块实现智能化生产?
  12. python立体爱心_css绘制各种各样的形状图形
  13. 2019清华计算机考研,2019清华计算机考研总分是多少
  14. 微信帐号检测的实用小方法
  15. tensorflow教程——tf.GraphKeys
  16. w7设置双显示器_Win7如何设置双显示器?设置双显示器的方法
  17. 频谱分析系列:1dB增益压缩点概述及测试
  18. Java实现一个单号生成工具类
  19. 全球及中国网络安全行业项目投资调研及十四五前景展望分析报告2021-2027
  20. 征服 JavaScript 面试:什么是闭包?| Eric Elliott

热门文章

  1. android 剩余内存,Android:如何检查剩余的内存量?
  2. python corr画图_用一张很丑的图学习Python数据可视化基础--热力图
  3. Echarts组件 tooltip提示formatter函数
  4. Special Judge Ⅲ(这道题考的就是出栈序列判定_关键代码不差什么)
  5. SVM学习(三):线性分类器的求解
  6. Spring(3)——装配 Spring Bean 详解
  7. 【年度学术大会合集】SIGGRAPH,KDD,AAAI,NIPS…这些你想参加的会议
  8. 深度学习Deep Learning 相关库简介
  9. 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流
  10. 《大话数据结构》第9章 排序 9.6 希尔排序(下)