zoukankan      html  css  js  c++  java
  • mysql,mongodb,redis区别

    MongoDB:
    它是一个内存数据库,数据都是放在内存里面的。
    对数据的操作大部分都在内存中,但 MongoDB 并不是单纯的内存数据库。
    MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。
    在高负载的情况下,添加更多的节点,可以保证服务器性能。
    MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
    
    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
    
    MongoDB 的存储特点
    在传统的关系型数据库中,数据是以表单为媒介进行存储的,每个表单均拥有纵向的列和横向的行。
    
    由此可见,相比较 MySQL,MongoDB 以一种直观文档的方式来完成数据的存储。它很像 JavaScript 中定义的 JSON 格式,不过数据在存储的时候 MongoDB 数据库为文档增加了序列化的操作,最终存进磁盘的其实是一种叫做 BSON 的格式,即 Binary-JSON。
    
    MongoDB 的应用场景
    在另一方面,对开发者来说,如果是因为业务需求或者是项目初始阶段,而导致数据的具体格式无法明确定义的话,MongoDB的这一鲜明特性就脱颖而出了。相比传统的关系型数据库,它非常容易被扩展,这也为写代码带来了极大的方便。
    持久化方式:
    MongoDB 的所有数据实际上是存放在硬盘的,所有要操作的数据通过 mmap 的方式映射到内存某个区域内。
    然后,MongoDB 就在这块区域里面进行数据修改,避免了零碎的硬盘操作。
    至于 mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,MongoDB 在内存中修改了数据后,mmap 数据flush到硬盘之前,系统宕机了,数据就会丢失。
    
    MongoDB 优点:
    1.性能优越:快速!在适量级的内存的 MongoDB 的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快,
    2.高扩展:第三方支持丰富(这是与其他的 No SQL 相比,MongoDB 也具有的优势)
    3.自身的 Failover 机制!
    4.弱一致性(最终一致),更能保证用户的访问速度
    5.文档结构的存储方式,能够更便捷的获取数据: json 的存储格式
    6.支持大容量的存储,内置 GridFS
    7.内置 Sharding
    
    MongoDB 缺点:
    主要是无事物机制!
    
    ① MongoDB 不支持事务操作(最主要的缺点)
    ② MongoDB 占用空间过大
    ③ MongoDB 没有如 MySQL 那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方

    1.mysql和redis的数据库类型

    
    

    mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

    
    

    redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限

    
    

    2.mysql的运行机制

    
    

    mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。

    
    

    3.缓存

    
    

    缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。

    
    

    缓存的好处就是读取速度快

    
    

    4.redis数据库: redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。

    
    

    5.redis和mysql的区别总结

    
    

    (1)类型上

    
    

    从类型上来说,mysql是关系型数据库,redis是缓存数据库

    
    

    (2)作用上

    
    

    mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢

    
    

    redis用于存储使用较为频繁的数据到缓存中,读取速度快

    
    

    (3)需求上

    
    

    mysql和redis因为需求的不同,一般都是配合使用。

    
    

    Redis和MongoDB区别

    MongoDB 更类似 MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询 JSON 数据,能存储海量数据,但是不支持事务。
    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,支持多种类型的数据结构,可用作数据库,高速缓存和消息队列代理。
    1、内存管理机制
    Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。
    MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

    2、支持的数据结构
    Redis 支持的数据结构丰富,包括hash、set、list等。MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

    3、数据量和性能:
    当物理内存够用的时候,redis>mongodb>mysql
    当物理内存不够用的时候,redis和mongodb都会使用虚拟内存。
    实际上如果redis要开始虚拟内存,那很明显要么加内存条,要么你换个数据库了。
    但是,mongodb不一样,只要,业务上能保证,冷热数据的读写比,使得热数据在物理内存中,mmap的交换较少。
    mongodb还是能够保证性能。

    4、性能
    mongodb依赖内存,TPS较高;Redis依赖内存,TPS非常高。性能上Redis优于MongoDB。

    5、可靠性
    mongodb从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性;
    Redis依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能。
    可靠性上MongoDB优于Redis。

    6、数据分析
    mongodb内置数据分析功能(mapreduce);而Redis不支持。

    7、事务支持情况
    Redis 事务支持比较弱,只能保证事务中的每个操作连续执行;mongodb不支持事务。

    8、集群
    MongoDB 集群技术比较成熟,Redis从3.0开始支持集群。

  • 相关阅读:
    shell 格式化输出
    Linux tar 修改终端命令
    uniqu 用法
    HashMap按照value值进行排序
    汇编语言系列教程之基础入门 (一)
    Linux权限管理
    linux用户管理
    vim的tab键设定
    HTTP请求(GET与POST区别)和响应
    JS eval()
  • 原文地址:https://www.cnblogs.com/turningli/p/12712954.html
Copyright © 2011-2022 走看看