MySQL、MongoDB、Redis 介绍与区别

关系型数据库: MySQL

关系型数据库是一种基于关系的数据库,而关系模型可通过二维表来进行表示,所以数据的存储方式是由行列组成的表,每一列是一个字段,每一行是一个记录。在关系型数据库中通常包含了三个概念:数据库(database)、表(table)、记录(record)。在大部分关系型数据库中,都是适用B+树作为索引,比如MySQL。

  • MySQL也是一种硬盘型数据库,它所有的数据都是存放在硬盘中,需要使用的时候才会交换到内存中。因此MySQL能够处理海量的数据,但是数据量很大的时,速度会稍慢。
  • MySQL的使用需要提前建表,不适用于数据结构变换频繁的情况

非关系型数据库:MongoDB、Redis

MongoDB

MongoDB是由c++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储类似JSON对象,它的字段可以包含其他的文档、数组以及文档数组。MongoDB包含了三个层次概念:数据库(database)、集合(collection)、文档(document)。MongoDB的数据索引是B-树。

  • MongoDB 在创建数据库的时候,会直接在磁盘上面分配一组数据文件,所有的集合、索引和数据库的其他元数据都保存在这些文件中。

  • 在使用MongoDB中,操作系统会通过mmap将进程所需要的所有数据都映射到虚拟内存中,然后在将当前需要处理的数据映射到内存中。当需要访问的数据不在虚拟内存的时候,会触发page fault,然后os就会硬盘中的数据加载到虚拟内存和内存中。而当内存已满时,会触发swap-out操作,将一些数据写回硬盘。所以有了这种内存映射文件的方法,就会有种好像所有需要访问的数据都在内存里一样。

特点
  • 提供面向文档存储,操作简单
  • 扩展性强,第三方支持丰富
  • 具有failover机制(失效转移:一种备份操作模式,当一个系统因为一些故障无法完成工作的时候,另一个系统自动接替已失效系统的工作继续执行)
  • 支持大容量存储,内置GridFS(可用于存放大量的小文件)
  • 在高负载的情况下,可以添加更多的节点,保证服务器性能
缺点
  • 无事务机制(数据库事务(database transaction)对单个的逻辑单元执行一系列的操作,要么完全执行,要么完全不执行)
  • 占用空间过大
  • 没有mysql那样成熟的维护工具
适用场景
  • 适合那种数据格式不明确或者经常变化的模型,比如事件记录、内容管理或者博客平台。

Redis

Redis是一种内存数据库,所有的数据都是放在内存之中,定期写入磁盘中,当内存不够的时候,可选择指定的LRU算法删除数据。Redis是基于哈希字典建立的,因此其索引方式是哈希。

特点
  • 由于数据存放在内存中,因此读写性能高
  • 支持丰富的数据类型,如键值对、集合、列表、散列存储
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值