NOSQL2-MongoDB和Redis区别

来源:互联网 发布:淘宝店铺没有自然搜索 编辑:程序博客网 时间:2024/05/24 00:45

简介

MongoDB更类似MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。

Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。

mongodb:我觉得定位是取代关系型数据库,想当一个主流数据库。因为他有非结构化、方便扩充字段、写性能优于mysql。万事万物有利有弊,mongodb的内存型缓存内容,让其速度飞快,带来内存率多,掉电数据问题等,加上自身代码还有很多bug带来不如老牌关系型数据库稳定,特别是在主从等分布式环境,其设计也带来诸多问题。
  • 是一个介于关系型和非关系型之间的一个产品吧,类SQL语言,支持索引
  • MongoDb在类SQL语句操作方面目前比HBase具备更多一些优势,有二级索引,支持相比于HBase更复杂的集合查找等。
  • BSON的数据结构使得处理文档型数据更为直接。支持复杂的数据结构
  • MongoDb也支持mapreduce,但由于HBase跟Hadoop的结合更为紧密,Mongo在数据分片等mapreduce必须的属性上不如HBase这么直接,需要额外处理。
  • mongodb是文档存储数据库,支持二级索引,但比较消耗内存,查询功能强大,类似json格式存储,一般可以用来存放评论等半结构化数据
  • mongodb 适合存储json类型数据,不经常变化,比如排行榜,每天刷新一次,remove一次再从db更新过去。
  • redis:是一个小而美的数据库,主要用在key-value 的内存缓存,读写性能极佳,list,set,hash等几种简单结构使得使用也很简单。缓存与简单是其定位,分布式redis架构的出现,让redis更加广泛的使用,稳坐缓存第一把交椅。

    Redis是k-v型数据库,目标是做高效的分布式缓存。数据一般不实时落地。也不适合做存储和分析。

    • Redis为内存型KV系统,处理的数据量要小于HBase与MongoDB
    • Redis很适合用来做缓存,但除此之外,它实际上还可以在一些“读写分离”的场景下作为“读库”来用,特别是用来存放Hadoop或Spark的分析结果。
    • Redis的读写性能在100,000 ops/s左右,时延一般为10~70微妙左右;而HBase的单机读写性能一般不会超过1,000ops/s,时延则在1~5毫秒之间。
    • Redis的魅力还在于它不像HBase只支持简单的字符串,他还支持集合set,有序集合zset和哈希hash
    redis是KV数据库,不支持二级索引,读写性能高,支持list,set等多种数据格式,适合读多写少的业务场景,可以用来做缓存系统
    redis特点是k-v, 适合存储全局变量,比如微信token每两小时刷新一次,就比较适合用redis存储,读也比较方便。
    redis是个in memory cache,主要作为软件里一个部件来提升整体性能的。

    内存管理机制

    Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。

    MongoDB数据存在内存,由Linux系统mmap实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

    支持的数据结构

    Redis支持的数据结构丰富,包括hash、set、list等。

    MongoDB数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

    性能

    二者性能都比较高,应该说都不会是瓶颈。

    可靠性

    二者均支持持久化。

    集群

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

    不适用场景

    Ø  需要使用复杂sql的操作

    Ø  事务性系统

    原创粉丝点击