MySQL MongoDB Redis 数据库之间的区别

it2022-05-05  193

转自 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 作为加速的手段而已


最新回复(0)