开启掘金成长之旅!这是我参与「掘金日新计划 · 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进行开发。