数据库和数据仓库,虽然名字只有一点点不同,但是性质却有很大的区别。数据仓库是什么?数据仓库是为企业制定各个级别的决策,可以提供各种数据类型支持的战略集合。
它们两种之间的区别,就由我来给大家介绍一下吧。
1. 存储数据位置
众所周知,Hive是Hadoop生态圈中不可缺少的一部分。Hive的元数据存储在自带的derby数据库中,可它实际的数据存储在HDFS上。
可数据库的数据存储在块设备上或者本地文件系统中。
2.查询语言
虽然Hive为了方便一些开发者使用,通过将HQL转为MapReduce查询,但是HQL与常规的SQL语句使用起来还是有不同的地方。
3.数据更新
因为Hive是数据仓库,本身性质就是“读多写少”,所以在一些以前的版本中,它并不支持insert into插入数据以及update更新数据的。但是数据库通常使用起来就是需要经常修改以及添加的。
4.计算引擎
Hive的架构如下,Hive实际上就是将用户输入的HQL语句转化为MapReduce程序来运行,但是数据库有自己的执行引擎。
5.索引
在Hive中并没有索引这个概念,当Hive需要访问数据中某些符合特定条件的特定值时,需要对全盘进行暴力检索,所以访问延迟较高,但Hive引入了MapReduce,可以并行处理数据。在数据库中,虽不可以并行处理数据,但是可以在数据中建立索引。因此,对于少量特定条件的数据访问时,数据库延迟低。但是大数据量还是选择Hive。
6.执行延迟
Hive中没有索引不说,MapReduce的这个框架本身就具有很高的延迟。相对于数据库来说,延迟比较高。但是当数据量很大,超出了数据库的处理能力范围时,Hive的并行计算就具有很大的优势了。
7.可扩展性
由于Hive是建立在Hadoop集群上的,所以它的扩展能力和Hadoop一样。所以可以想象,Hadoop集群的节点可以有多少个?但是数据库本身由于ACID语义的限制,就Oracle在理论上最多也只能扩展100台。
compiled up by JiaMingcan
转载请署名:JiaMingcan