MySQL MongoDB Redis 数据库之间的区别

转自 https://blog.csdn.net/CatStarXcode/article/details/79513425

MongoDB

它是一个内存数据库,数据都是放在内存里面的。
对数据的操作大部分都在内存中,但 MongoDB 并不是单纯的内存数据库。
MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组

  • 优点
    1.性能优越:快速!在适量级的内存的 MongoDB 的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快,
    2.高扩展:第三方支持丰富(这是与其他的 No SQL 相比,MongoDB 也具有的优势)
    3.自身的 Failover 机制!
    4.弱一致性(最终一致),更能保证用户的访问速度
    5.文档结构的存储方式,能够更便捷的获取数据: json 的存储格式
    6.支持大容量的存储,内置 GridFS
    7.内置 Sharding

  • 缺点
    主要是无事物机制!
    MongoDB 不支持事务操作(最主要的缺点)
    MongoDB 占用空间过大
    MongoDB 没有如 MySQL 那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方

Redis

它就是一个不折不扣的内存数据库。
持久化方式:
Redis 所有数据都是放在内存中的,持久化是使用 RDB 方式或者 aof 方式。

MySQL

无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。
关系型数据库。
在不同的引擎上有不同 的存储方式。
查询语句是使用传统的 SQL 语句,拥有较为成熟的体系,成熟度很高。
开源数据库的份额在不断增加,MySQL 的份额页在持续增长。

缺点就是在海量数据处理的时候效率会显著变慢。

数据量和性能的比较

当物理内存够用的时候,Redis > MongoDB > MySQL
当物理内存不够用的时候,Redis 和 MongoDB 都会使用虚拟内存。
实际上如果Redis要开始虚拟内存,那很明显要么加内存条,要么你就该换个数据库了。
但是,MongoDB 不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap 的交换较少。
MongoDB 还是能够保证性能。有人使用 MongoDB 存储了上T的数据。
MySQL,MySQL根本就不需要担心数据量跟内存下的关系。不过,内存的量跟热数据的关系会极大地影响性能表现。
当物理内存和虚拟内存都不够用的时候,估计除了 MySQL 你没什么好选择了。
其实,从数据存储原理来看,我更倾向于将 MongoDB 归类为硬盘数据库,但是使用了 mmap 作为加速的手段而已

你可能感兴趣的:(Redis,mysql,mongodb,redis)