HIVE与RDBMS的区别

 最近做到一份大数据平台相关的笔试题,问答题第一题就是简述HIVE与RDBMS关系数据库的区别,虽然自己这两种技术都摸过、使用过(HIVE只是了解过,主要使用的是阿里云的odps,rdbms的话主要是mysql),

但是突然问我这样一个问题,我还从来没认真总结过,自我感觉答得不算好,回来百度了网上的资料,在这里就简单总结下。


1、hive存储的数据量比较大,适合海量数据,适合存储轨迹类历史数据,适合用来做离线分析、数据挖掘运算,

事务性较差,实时性较差

 rdbms一般数据量相对来说不会太大,适合事务性计算,实时性较好,更加接近上层业务


2、hive的计算引擎是hadoop的mapreduce,存储是hadoop的hdfs文件系统,

 rdbms的引擎由数据库自己设计实现例如mysql的innoDB,存储用的是数据库服务器本地的文件系统


3、hive由于基于hadoop所以存储和计算的扩展能力都很好,

 rdbms在这方面比较弱,比如orcale的分表和扩容就很头疼


4、hive表格没有主键、没有索引、不支持对具体某一行的操作,适合对批量数据的操作,不支持对数据的update操作,

更新的话一般是先删除表然后重新落数据

 rdbms事务性强,有主键、索引,支持对具体某一行的增删改查等操作


5、hive的SQL为HQL,与标准的RDBMS的SQL存在有不少的区别,相对来说功能有限

rdbms的SQL为标准SQL,功能较为强大。


6、(原文https://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html中摘录,感谢原作者)

 Hive在加载数据时候和rdbms关系数据库不同,hive在加载数据时候不会对数据进行检查,也不会更改被加载的数据文件,

而检查数据格式的操作是在查询操作时候执行,这种模式叫“读时模式”。在实际应用中,写时模式在加载数据时候会对列进行

索引,对数据进行压缩,因此加载数据的速度很慢,但是当数据加载好了,我们去查询数据的时候,速度很快。但是当我们的

数据是非结构化,存储模式也是未知时候,关系数据操作这种场景就麻烦多了,这时候hive就会发挥它的优势。

 rdbms里,表的加载模式是在数据加载时候强制确定的(表的加载模式是指数据库存储数据的文件格式),如果加载数据

时候发现加载的数据不符合模式,关系数据库则会拒绝加载数据,这个就叫“写时模式”,写时模式会在数据加载时候对数据模

式进行检查校验的操作。


------------------------------------------------------------------------------------------------------------------------------------


 最后做下总结,HIVE是数据仓库适合存储历史的海量的数据,适合做批量和海量复杂运算,事务性差,运算时间长。

RDBMS是数据库,存储数据量偏小一些,事务性强,适合做OLTP和OLAP业务,运算时间短。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值