美文网首页
noSql之间的对比

noSql之间的对比

作者: phper1021 | 来源:发表于2017-02-07 10:37 被阅读75次

关于redis、memcache、mongoDB

1.性能

都比较高,性能对我们来说应该都不是瓶颈。
总体来说,TPS方面redis和memcache差不多,要大于mongoDB。

2.操作的便利性

memcache的数据结构单一。(key-value)
redis丰富一些,数据操作方面,redis更好一些,较少的网络IO次数,同时还提供list,set,hash等数据结构的存储。
mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

3.内存空间的大小和数据量的大小

redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对key value设置过期时间(类似memcache)
memcahce可以修改最大可用内存,采用LRU算法。memcahce代理软件magent,比如建立10台4G的memcache集群,就相当于有了40G。magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000
mongoDB 适合大数据量的存储,依赖操作系统VM做内存管理,吃内存也比较厉害。服务不要和别的服务在一起。

4.可用性(单点问题)

redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题,所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash机制。一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡。
memcache本身没有数据冗余机制,也没必要;对应故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的抖动问题。
mongodb支持master-slave,replicaset(内部采用选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制。

5.可靠性(持久化)

对于数据持久化和数据恢复
redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响;
memcache不支持,通常用在做缓存,提升性能;
mongodb从1.8版本开始采用binlog方式支持持久化的可靠性;

6.数据一致性(事务支持)

memcache在并发场景下,用cas保证一致性;
redis事务支持比较弱,只能保证事务中每个操作连续执行;
mongodb不支持事务;

7.数据分析

mongodb内置了数据分析的功能(mapreduce),其他不支持

8.应用场景

redis:数据量较小的更性能操作和运算上
memcache:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写小,对于数据量比较大,可以用sharding)
mongodb:主要解决海量数据的访问效率问题。
对比参数 memcache redis mongodb
数据库类型 纯粹的key-value数据库,数据结构单一 结构化数据库 对象数据库
支持数据类型 string string,list,sort,sorted,hash 丰富的数据表达 索引,类似于关系型数据库
可用性 没有数据冗余机制,使用一致性hash增加可用性 支持ms,mss结构,slave重连主节点会导致一次全量同步产生,影响性能和效率。可以实现读写分离,slave重连使用全量数据,性能和效率会有问题,不支持自动sharding,需要程序上实现一致性hash 支持ms,支持replication set,set可以自动故障转换,支持autosharding
持久化支持 数据完全放在内存中,没有持久化支持 支持持久化,快照持久化和aof持久化 1.8版本开始采用binlog方式支持持久化的可靠性
内存空间优化 最大内存限制,LRU算法淘汰(可选) 独立的vm机制,最大内存限制,数据ttl过期设置,内存淘汰(可选) 依赖于操作系统的vm管理机制,使用内存映射文件,把剩余内存作为缓存使用,没有最大内存限制,数据存在文件系统上和内存
是否多线程 是,可以通过-t控制进线程数 单线程 多线程
性能 15W/s的GET,11W/s的SET 单个实例qps:8.5W左右(GET/SET)(RH2285) 单个qps:3.5W左右(GET/SET)(RH2285)
事务支持 并发场景下,用cas保证一致性 事务支持比较弱,保证每个事务操作连续执行,如果一个操作失败,不会回滚。使用乐观锁实现cas。 不支持事务
数据分析 简单的get查询功能 简单查询功能,支持对集合和hash的操作等 查询方便,有类似于sql的语法,支持条件查询
应用场景 常作为前端缓存 缓存和数据存储,队列 大数据量存储
特点 - 支持使用pipeline减少查询次数 auto sharding,故障自动切换,mapreduce支持,大文件下的GridFs文件系统
安全问题 目前没有身份验证 支持密码验证(requirepass) 支持collection级别的身份验证(auth)
数据备份和还原 数据存放于内存中,不方便备份和还原(stats cachedump) 可以使用持久化做备份和还原 mongodump倍份,mogorestore还原。数据导出:mongoexport,mongoimport,导出数据支持csv格式
slowlog相关 没有slowlog相关的设置 支持slowlog,slowlog存在于数据库中,使用slowlog get获取相关日志,slowlog的大小有限制,超过后会删除旧的 支持slowlog(profiling),slowlog存在于system.profile(capped collection)的collection中
状态查看 stats info mongostat,db.serverStatus(),db.stats(),rs.statsu()等
tunning 1.object size不要太大(默认只支持1M)2.object 的expires设置(缓存应该具有超时的特点)3.适合数据处理后的缓存,不适合缓存后的处理输出 1.开启vm,将不常用的value值给交换到磁盘上 2.尽量将数据存放在内存中 3.前端使用proxy或persistence hash来实现均衡访问 4.使用master-slave结构,做读写分离 5.大数据量时持久化数据dump时影响服务,应该放在slave端做6.使用pipeline聚合访问7.网卡bonding 1.索引相关(读多写少时) 2.explain解析查询 3.限定返回条目(limit) 4.只查看指定需要字段,不查询所有字段 5.使用capped collection (特殊业务)6.使用replsets,扩展整体集群能力
  1. 类型——memcacheheredis都是将数据存放在内存,所以是内存数据库。当然,memcache也可用于缓存其他东西,例如图片等等。
  2. 数据类型——Memcache 在添加数据时就要指定数据的字节长度,而 redis 不需要。
  3. 虚拟内存——当物理内存用完时,可以将一些很久没用到的 value 交换到磁盘。
  4. 过期策略——memcache 在 set 时就指定,例如 set key1 0 0 8,即永不过期。Redis 可以通过例如 expire 设定,例如 expire name 10。
  5. 分布式——设定 memcache 集群,利用 magent 做一主从;redis可以做一主多从。都可以一主一从。
  6. 存储数据安全——memcache 断电就断了,数据没了;redis 可以定期 save 到磁盘。
  7. 灾难恢复——memcache 同上,redis 丢了后可以通过 aof 恢复。

相关文章

  • noSql之间的对比

    关于redis、memcache、mongoDB 1.性能 2.操作的便利性 3.内存空间的大小和数据量的大小 4...

  • SQL 与 NoSQL

    SQL 与 NoSQL 数据库对比 SQL 与 Nosql 术语 参考资料 https://aws.amazon....

  • mongodb学习1

    MongoDb 数据库介绍、安装、使用 数据库和文件的主要区别NoSql 介绍NoSql 和传统数据库简单对比No...

  • 有对比的生活

    有时候人上进,真的是因为对比,同事之间的对比(竞争),邻居之间的对比,朋友之间的对比,兄弟姐妹之间的对比,走出去,...

  • REDIS

    NoSQL = Not Only SQL.高并发读写 会导致关系型数据库压力过大 NOSQL优点:数据之间无关系,...

  • HBase与Hive的集成

    一.HBase与Hive的对比 HiveHbase特点类SQL 数据仓库NoSQL (Key-value)适用场景...

  • SQL与NoSQL之间的不同

    SQL(结构化的查询语言)数据库是过去四十年间存储数据的主要方式。20世纪90年代末随着Web应用和MySQL、P...

  • 四、nosql 概念性了解

    要想了解nosql的话,肯定是需要跟关系型数据库做对比了,nosql字面意思就是并不仅仅是sql,传统项目一般都会...

  • [Node][NoSql]MongoDB轻度使用(不入门只入土)

    [Node][NoSql]MongoDB轻度使用(不入门只入土) 对比 因业务需要赶紧啃一手MongoDB,大致过...

  • Hive本质1大数据和Hive概述

    关系和NoSQL数据库与Hadoop 为了更好地理解关系数据库,NoSQL数据库和Hadoop之间的差异,让我们将...

网友评论

      本文标题:noSql之间的对比

      本文链接:https://www.haomeiwen.com/subject/bjmpittx.html