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开始支持集群。

  • 相关阅读:
    ubuntu下文件安装与卸载
    webkit中的JavaScriptCore部分
    ubuntu 显示文件夹中的隐藏文件
    C语言中的fscanf函数
    test
    Use SandCastle to generate help document automatically.
    XElement Getting OuterXML and InnerXML
    XUACompatible meta 用法
    Adobe Dreamweaver CS5.5 中文版 下载 注册码
    The Difference Between jQuery’s .bind(), .live(), and .delegate()
  • 原文地址:https://www.cnblogs.com/turningli/p/12712954.html
Copyright © 2011-2022 走看看