hive和传统数据库之间的区别

263 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

hive和传统数据库之间的区别

1、 数据存储位置。

Hive是建立在Hadoop之上的,所有的Hive的数据都是存储在HDFS中的。数据库可将数据保存在块设备或本地文件系统中。

 

2、 数据格式。

Hive中没有定义专门的数据格式,由用户指定,需要指定三个属性:列分隔符,行分隔符,以及读取文件数据的方法。

数据库中,存储引擎定义了自己的数据格式。所有数据都会按照一定的组织存储。

 

3、 数据更新。

Hive的内容是读多写少的,因此,不支持对数据的改写和删除,数据都在加载的时候中确定好的。数据库中的数据通常是需要经常进行修改。

 

4、 执行延迟。

Hive在查询数据的时候,需要扫描整个表(或分区),因此延迟较高,只有在处理大数据是才有优势。数据库在处理小数据是执行延迟较低。

 

5、 索引。

Hive没有,数据库有

 

6、 执行。

Hive是MapReduce,数据库是Executor

Hive中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。而数据库通常有自己的执行引擎。

 

7、 可扩展性。

Hive高,数据库低

由于Hive是建立在Hadoop之上的,因此Hive的可扩展性是和Hadoop的可扩展性是一致的。而数据库由于 ACID 语义的严格限制,扩展行非常有限。目前最好的并行数据库 Oracle 在理论上的扩展能力也只有100台左右。

 

8、 数据规模。

Hive大,数据库小

由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

 

9、 计算模型。

hive使用的计算模型是mapreduce,而关系数据库则是自己设计的计算模型;

 

10、实时性。

关系数据库都是为实时查询的业务进行设计的,而hive则是为海量数据做数据挖掘设计的,实时性很差

11、Hive很容易扩展自己的存储能力和计算能力,这个是继承Hadoop的而关系

数据库在这个方面要比数据库差很多

12、数据检查。

Hive是读写模式,数据库是写时模式

13、查询语言。

由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。