Redis、传统数据库、HBase以及Hive的区别

在大数据相关行业的面试中 , 经常会被问到这个问题:redis、传统数据库、HBase以及Hive的区别 。

Redis、传统数据库、HBase以及Hive的区别

文章插图
 
【Redis、传统数据库、HBase以及Hive的区别】本文将针对这个面试问题 , 做以下分析:
1.问题分析面试官考核的是你对不同数据存储技术的理解和应用 , 概念和特性都需要回答 。同时可以延伸到业务场景 , 考察面试者在项目实战中不同服务如何区分配合使用 。
2.核心问题回答Redis
分布式缓存 , 基于内存 , 强调缓存 , 支持数据持久化 , 支持事务操作 , NoSQL 类型的Key/vale数据库 , 同时支持List、Set等更丰富的类型 。
HBase
HBase是建立在HDFS之上,提供高可靠性的列存储 , 实时读写的数据库系统 。它介于Nosql和关系型数据库之间 , 仅通过主键和主键的range来检索数据 , 仅支持单行事务 。主要用来存储非结构化和半结构化的松散数据 。
关系数据库
有MySQL、Oracle、SqlServer等 , 支持事务性操作 , 属于写模式 , 即写入数据时进行检查 。它是针对具体业务在数据库联机的日常操作 , 通常对少数记录进行查询、修改 。支持完善的sql功能 , 可以对少量数据进行统计分析 。
Hive
Hive是基于Hadoop的数据仓库工具 , 可以将结构化数据文件映射为数据库表 。并提供简单的sql功能 , 可以将sql转化为mr任务运行 。因为sql学习成本低 , 不必专门开发mr应用 , 十分适合数据仓库的统计分析 。
3.区别这里可以分为两大类:关系型数据和Hive都是支持SQL引擎的数据库;Redis和Hbase都是NoSQL 类型的Key/vale数据库 , 支持简单的行列操作 , 不支持SQL引擎 。
SQL类数据库中 , 关系型数据库更侧重于事务性操作 , 属于写模式 , 支持的数据量较小 , 支持索引延迟低;而Hive更侧重于查询分析操作 , 属于读模式 , 不支持索引延迟高 , 支持的数据量大 , 为数据仓库而设计 。
K/V数据库中 , Redis的读写性能更高 , 通常是几十微秒 , 而Hbase是几毫秒;Redis不仅支持K/V操作 , 也支持List、Set等更丰富的类型;Redis因为存储在内存中所以数据量较小 , 而Hbase的存储远远超出内存的大小 。HBase适合做大数据的持久存储 , 而Redis比较适合做缓存 。
4.问题扩展类似的存储服务特别多 , 除此之外还有es和solr等等 。需要先答出两种存储服务的概念 , 再根据核心功能 , 特性的不同答出两者区别 。
5.结合项目中的使用在哪种场景下 , 使用哪种技术 。传统数据库用来进行实时业务的事务处理 , Redis用来做性能要求很高的实时缓存 , Hive可以用来进行离线统计查询 , HBase可以用来做历史数据的固化和快速查询 。当然 , 他们是可以配合使用的 。




    推荐阅读