NOSQL之Redis、MongDB、Habase、Cassandra的介绍与比较
一、Redis介绍
1.1Redis优点
(1)Redis拥有非常丰富的数据结构:
(2)Redis提供事务的功能,可以保证一串命令的原子性,中间不会被任何打断。
(3)数据存储在内存中,读写非常的高速,可以达到10W/s的频率。
1.2Redis缺点
(1)Redis 3.0才出现官方的集群方案,但仍存在一些架构上的问题。
(2)持久化功能体验不佳:Redis 提供了RDB和AOF两种持久化机制:RDB将数据库的快照(snapshot)以二进制的方式保存到磁盘中,需要每个一段时间将数据写到磁盘上,代价非常高;AOF则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到AOF文件中,以此达到记录数据库状态的目的。而aof方法只能追踪变化的数据,类似于mysql的binlog方法,但追加的log可能过大,同事所有操作需要重新执行一遍,恢复速度较慢。
(3)由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key的过期策略,但是还是很需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。
1.3Redis适用场景
(1)会话缓存:目前最常见的Redis使用场景是会话缓存,使用Redis来作为会话缓存,而不使用类似Memcached的其他会话缓存,是因为Redis提供持久化。当维护并不要求严格一致性记录的缓存时,用户们并不希望看到购物车信息不见了。
(2)全页缓存:除了基本的会话token,Redis 提供了一个非常容易操作的FPC平台。回到一致性的问题,即使重启了Redis实例,由于磁盘持久化的原因,用户并不会看到加载页面时速度明显的下降。
(3)队列:Redis内存存储引擎可以进行list和set操作,这使它可以作为一个很好的消息队列平台来使用,对Redis进行队列操作,就像本地使用Python对lists进行push和pop操作。
(4)排行榜/计数器:Redis在内存中对数字的递增和递减操作实现的非常好,(Set)集合和(Sorted Set)有序集合让我们在进行这种操作时更加容易,Redis只是正好提供了这两种数据结果。所以在进行类似在有序集合中查找前十个用户这种操作,我们只需要一行代码
ZRANGE user_scores 0 10
(5)订阅/发布功能:Redis的订阅发布功能。使用Redis订阅发布功能的案例非常普遍,甚至有人用它来搭建社交网络连接,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统。
二、MONGDB介绍
2.1MONGDB优点
(1). 强大的自动化 shading 功能;
(2). 全索引支持,查询非常高效;
(3). 面向文档(BSON)存储,数据模式简单而强大。
(4). 支持动态查询,查询指令也使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
(5). 支持 javascript 表达式查询,可在服务器端执行任意的 javascript函数。
2.2MONGDB缺点
(1). 单个文档大小限制为16M,32位系统上,不支持大于2.5G的数据;
(2). 对内存要求比较大,至少要保证热数据(索引,数据及系统其它开销)都能装进内存;
(3). 非事务机制,无法保证事件的原子性。
2.2MONGDB适用场景
(1). 适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;
(2). 非常适合文档化格式的存储及查询;
(3). 高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。
(4). 对性能的关注超过对功能的要求。
三、Hbase介绍
HBase 是 Apache Hadoop 中的一个子项目,属于 bigtable 的开源版本,所实现的语言为Java。HBase 依托于 Hadoop 的 HDFS作为最基本存储基础单元。
3.1Hbase优点
(1). 存储容量大,一个表可以容纳上亿行,上百万列;
(2). 可通过版本进行检索,能搜到所需的历史版本数据;
(3). 负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);
(4). 在第3点的基础上可有效避免单点故障的发生。
3.2Hbase缺点
(1). 基于Java语言实现及Hadoop架构意味着其API更适用于Java项目;
(2). node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺乏文档;
(3). 占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;
(4). API相比其它 NoSql 的相对笨拙。
3.3Hbase适用场景
(1). bigtable类型的数据存储;
(2). 对数据有版本查询需求;
(3). 应对超大数据量要求扩展简单的需求。
四、Cassandra介绍
Cassandra 是一个来自 Apache 的分布式数据库,具有高度可扩展性,可用于管理大量的结构化数据。它提供了高可用性,没有单点故障。
4.1Cassandra优点
(1)弹性可扩展性 - Cassandra是高度可扩展的; 它允许添加更多的硬件以适应更多的客户和更多的数据根据要求。
(2)始终基于架构 - Cassandra没有单点故障,它可以连续用于不能承担故障的关键业务应用程序。
(3)快速线性性能 - Cassandra是线性可扩展性的,即它为你增加集群中的节点数量增加你的吞吐量。因此,保持一个快速的响应时间。
(4)灵活的数据存储 - Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。它可以根据您的需要动态地适应变化的数据结构。
(5)便捷的数据分发 - Cassandra通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。
(6)事务支持 - Cassandra支持属性,如原子性,一致性,隔离和持久性(ACID)。
(7)快速写入 - Cassandra被设计为在廉价的商品硬件上运行。 它执行快速写入,并可以存储数百TB的数据,而不牺牲读取效率。
4.2Cassandra缺点
参考链接:
(1)https://www.objectrocket.com/blog/how-to/top-5-redis-use-cases
(2)https://redis.io/documentation
(3)http://redisbook.readthedocs.io/en/latest/internal/aof.html#id
(4)https://www.w3cschool.cn/cassandra/
(5)http://www.dataguru.cn/thread-189148-1-1.html
NOSQL之Redis、MongDB、Habase、Cassandra的介绍与比较的更多相关文章
- NoSQL之Redis入门笔记
Redis 1.Redis介绍 1.1 NoSQL:一类新出现的数据库(not only sql),它的特点 不支持sql语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据 ...
- NoSQL:redis缓存数据库
一 Redis介绍 Redis和Memcached类似,也属于key-value nosql 数据库 Redis官网redis.io, 当前最新稳定版4.0.1 和Memcached类似,它支持存储的 ...
- Cassandra官方介绍及安装
Cassandra官方介绍及安装 这个数据库有很高的伸缩性和可用性,你完全不需要向性能妥协.在硬件或者云设施上做修改 官网:Cassandra官网 一.简介 cassandra这个数据库有很高的伸缩性 ...
- No-sql之redis常用命令
转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-val ...
- NoSQL之Redis学习笔记
一.NoSQL与Redis 1.什么是NoSQL? NoSQL=Not Only SQL ,泛指非关系型数据库.随着互联网的兴起,传统的关系型数据库已经暴露了很多问题,NoSQL数据库的产生就是为了解 ...
- NoSQL 之 Redis配置与优化
NoSQL 之 Redis配置与优化 1.关系数据库与非关系型数据库概述 2.关系数据库与非关系型数据库区别 3.非关系型数据库产生背景 4.Redis简介 5.Redis安装部署 6.Redis 命 ...
- NoSQL之Redis配置与优化
NoSQL之Redis配置与优化 目录 NoSQL之Redis配置与优化 一.关系数据库和非关系数据库 1. 关系型数据库 2. 非关系型数据库 3. 非关系型数据库产生背景 4. 关系型数据库和非关 ...
- redis事务及相关命令介绍
redis事务及相关命令介绍 一.概述:和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事 ...
- 一篇文章带你了解NoSql数据库——Redis简单入门
一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...
- 【NoSql】Redis
[NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...
随机推荐
- 2016-2017-220155329 《Java程序设计》第8周学习总结
学号 2016-2017-220155329 <Java程序设计>第8周学习总结 教材学习内容总结 了解NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量,在 ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- hasura graphql 角色访问控制
目前从官方文档以及测试可以看出不加任何header的请求访问的是所有的数据,对于具有访问 控制的请求需要添加请求头,实际生产的使用需要集合web hook 的实现访问控制. 参考配置 访问请求 目前数 ...
- ballerina 学习十七 多线程编程
并发&&多线程开发对于日常的处理是比较重要的,ballerina 支持的模式有work fork/join async lock 基本workers 参考代码 import balle ...
- vs2005新建项目中没有ASP.NET WEB应用程序的解决方法
在vs2003的年代,我们可以在项目模板中选择创建"asp.net web应用程序",可是到vs2005中,就变成了创建网站,原有的创建"asp.net web应用程序& ...
- Hive之 数据存储
首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据. 其次 ...
- bzoj 4885: [Lydsy2017年5月月赛]长方体
Description 给定一个a*b*c的长方体,定义其表面上两个点的距离为沿着长方体的表面走的最短路径的长度,请找到距离最远的点对,你需要保证找到的两个点里至少有一个是长方体顶点. Input 第 ...
- 关于ROS证书导入的步骤
在群里的vibbow大神指点下,做了一个ROS证书导入的步骤 1.到阿里云申请的免费证书清单如下:(如果你准备的自签名证书,那么在客户端也需要安装证书才行,否则就要到网上去申请真实的,或者花钱买的证书 ...
- 关于jQuery的$.proxy()应用.
今天在看<<锋利的jQuery>>时看到了proxy()的使用,感觉很模糊,就到处找资料. jQuery的源码也没看明白. 不过总算明白了proxy的用法了; <inpu ...
- 软件测试——等价类划分(EditText * 3)
一.程序要求 EditBox 同时允许输入三个1到6个英文字符或数字,点击确定结束. 二.测试分析 编号 第一个输入框 第二个输入框 第三个输入框 输出 1 null null null 三个输入框均 ...