`
x10232
  • 浏览: 57215 次
  • 来自: 北京
社区版块
存档分类
最新评论

详细总结 Hive VS 传统关系型数据库

阅读更多

重点区别:

(1)hive是数据仓库,传统数据库是关系型数据库。

(2)读时模式vs写时模式

在传统数据库里,表的模式是在数据加载的时候强制确定的。如果在数据加载时发现数据不符合模式,则拒绝加载。因为数据是在写入数据库时对照模式进行检查,因此这一设计有时被称为“写时模式”。(它需要读取数据,然后进行“解析”,再进行序列化以数据库内部格式存入磁盘)

另一方面,Hive对数据的验证并不在加载数据是进行,而在查询时进行,这称为“读时模式”。

注:写时模式有利于提升查询性能,因为数据库可以对列进行索引,并对数据进行压缩。但是作为权衡,数据加载会花更多时间。

(3)更新、事物和索引

更新、事物和索引都是传统数据库最重要的特性。但是,直到最近,HIve也没能很好的支持这些特性。

下面对图中的各条做详细总结


1、查询语言

不做赘述

2、数据存储位置

不做赘述

 

3、数据格式

Hive:Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”t”、”x001″)、行分隔符(”n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)。

由于在加载数据的过程中,不需要从用户数据格式到 Hive 定义的数据格式的转换,因此,Hive 在加载的过程中不会对数据本身进行任何修改,而只是将数据内容复制或者移动到相应的 HDFS 目录中。

数据库:不同的数据库有不同的存储引擎,定义了自己的数据格式。所有数据都会按照一定的组织存储,因此,数据库加载数据的过程会比较耗时。

4、数据更新

Hive:由于Hive是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候就已经确定好的。

数据库:数据库数据通常是需要经常进行修改的,因此可以使用 INSERT INTO ... VALUES 添加数据,使用UPDATE ... SET 修改数据。

5、索引

Hive:之前已经说过,Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些 Key 建立索引。Hive 要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。

数据库:数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了Hive不适合在线数据查询。

6、执行

Hive:Hive 中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的(类似 select *from tbl 的查询不需要MapReduce)。

数据库:数据库通常有自己的执行引擎。

7、  执行延迟

Hive:之前提到,Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架。由于 MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟。

数据库:相对的,数据库的执行延迟较低。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。

8、  可扩展性

Hive:由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的规模在 4000 台节点左右)。

数据库:而数据库由于ACID 语义的严格限制,扩展行非常有限。目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有 100 台左右。

9、数据规模

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

数据库:对应的,数据库可以支持的数据规模较小。

分享到:
评论

相关推荐

    Hive3--Hive和普通关系数据库的异同.pdf

    然而,与传统的关系型数据库相比,Hive有着显著的不同。下面我们将详细探讨Hive与普通关系数据库的主要异同点。 首先,从查询语言的角度来看,Hive采用了一种名为HQL(Hive Query Language)的类SQL查询语言,这是...

    浅谈Hive vs. HBase

    它提供了类似于 SQL 的数据操作能力,但与传统的关系型数据库不同,HBase 更适合存储海量数据,并支持随机读写操作。 **2.2 特点** - **列族**:HBase 表由行和列组成,列被组织成多个列族,每个列族存储特定类型的...

    hive入门级详解

    Hive 作为一个数据仓库系统,与传统的关系型数据库(如 MySQL、Oracle 等)不同。数据仓库主要用于分析处理和挖掘信息,而关系型数据库主要用于事务处理。Hive 不是 NoSQL 数据库,而是一种分析型数据库。 Hive 的...

    hive的学习资料

    - **元数据存储**:元数据通常存储在关系型数据库(如 MySQL 或 Derby)中,用于描述表结构、分区信息等。 - **驱动器**:解析 HiveQL 语句,并将其转化为 MapReduce 作业。 - **Hive Server**:处理来自客户端的...

    Getting Started with Hive for Relational Database Developers

    虽然Hive支持SQL语法,但与传统的关系型数据库有显著区别。Hive不支持事务、ACID属性(原子性、一致性、隔离性、持久性),并且延迟较高,适合批处理而非实时查询。然而,Hive的优势在于其可扩展性和容错性,以及对...

    hadoop+hive+mapreduce的java例子

     Hive提供了jdbc驱动,使得我们可以用Java代码来连接Hive并进行一些类关系型数据库的sql语句查询等操作。同关系型数据库一样,我们也需要将Hive的服务打开;在Hive 0.11.0版本之前,只有HiveServer服务可用,你得在...

    大数据hive笔记.zip

    3. 索引:虽然Hive不支持传统的关系型数据库索引,但可以借助ORC、Parquet等列式存储格式提高查询速度。 4. 预编译:通过CREATE TABLE AS SELECT语句生成预处理的结果表,减少实时查询的计算量。 5. 内存调优:调整...

    SpringBoot整合hive-jdbc示例

    它为Hive提供了标准的数据库访问方式,使得开发者能够像操作关系型数据库一样操作Hive。 ### 2. SpringBoot项目准备 首先,我们需要一个基础的SpringBoot项目。确保你的项目中已经集成了Spring Data JPA或者...

    分布式数据库Hive笔记_HDFS_Hadoop_分布式数据库

    Hive的元数据通常存储在MySQL等传统关系型数据库中,用于管理表的结构和位置信息。 Hive01.pdf和Hive高级.pdf可能涵盖了Hive的基本概念、安装配置、表的创建与管理、查询语法、分区与桶化、优化技巧以及Hive与其他...

    Hive学习笔记

    2. **MySQL**:作为一种成熟的开源关系型数据库管理系统,MySQL在性能、稳定性和可扩展性方面都优于DERBY,因此被广泛用于生产环境中的Hive元数据库存储。 #### HIVE数据存储与操作 Hive的数据存储在HDFS上,支持...

    hive-jdbc-1.1.0驱动相关jar包

    Hive JDBC驱动是Hive对JDBC标准的实现,使得Java应用程序能够像操作传统关系型数据库一样操作Hive。这在大数据处理场景中非常有用,因为Hive通常被用来处理大规模的结构化数据。 Hive JDBC驱动的核心功能包括: 1....

    尚硅谷大数据技术之 Hive1

    【尚硅谷大数据技术之 Hive1】章节主要介绍了Hive的基本概念、优缺点、架构原理以及与数据库...然而,由于其设计目标和底层实现,它在实时性和查询复杂性方面与传统关系型数据库有所区别,更适合作为数据仓库工具使用。

    Hive用户指南 Hive user guide 中文版

    **1.3 Hive与传统关系型数据库的异同** - **相同点**:Hive支持SQL风格的查询语言,使得熟悉SQL的用户能够快速上手。 - **不同点**:与传统的RDBMS相比,Hive的数据模型更加面向批处理,不支持事务处理,也没有行级...

    大数据平台和HiveSQL.md

    Hive与传统关系型数据库管理系统(RDBMS)相比具有以下特点: 1. 查询语言:Hive使用HQL进行查询,这是一种类似于SQL的查询语言,与传统数据库使用的SQL有所不同。 2. 存储数据:Hive将数据存储在Hadoop分布式文件...

    hive+mysql-connector-java-5.1.38.zip

    标题中的"hive+mysql-connector-java-5.1.38.zip"暗示了这个压缩包包含与Hive和MySQL数据库连接相关...这样的集成方案常见于数据仓库和大数据分析的解决方案中,特别是在需要结合传统关系型数据库和大数据平台的场景。

    Hive-SQLforHadoop

    - **灵活性**:传统的关系型数据库更适合事务性的操作,而Hive更适用于批量处理和数据分析。 **案例分析** 文档中提到了一个关于“国王的数据仓库”的故事,这个故事形象地说明了为什么企业和组织可能会选择从传统...

    分布式数据库课程设计+基于Hbase的滴滴出行数据分析+Hive+Hadoop+Mysql+Sqoop+可视化

    Sqoop 是一个用来在 Hadoop 和传统数据库之间进行数据迁移的工具,它可以将数据导入到 Hadoop 的 HDFS 中,也可以将 Hadoop 中的数据导出到关系型数据库中。在滴滴出行项目中,Sqoop 负责将 Hive 中经过分析的数据...

    Hive随笔.docx

    此外,Hive 的数据不支持事务,这与大多数关系型数据库不同,后者通常提供ACID(原子性、一致性、隔离性和持久性)特性。 【Hive 基础语法】 Hive 支持多种数据库操作语言: 1. DDL(Data Definition Language):...

    《企业级Hive实战课程》大纲

    - Hive与传统关系型数据库的区别; - Hive应用场景及优缺点分析; - 环境搭建过程; - 元数据与数据存储机制。 2. **Hive Shell常用命令** - `hive-e`、`hive-f`、`hive-v`、`hive-i`、`hive-S`等命令的使用...

    Hadoop和HIVE面试题

    4. Hive与传统的关系型数据库相比有何优势和劣势? 5. Hive的表可以如何分区?如何利用分区优化查询? 6. 举例说明Hive的MapReduce执行流程。 7. 如何在Hive中创建存储桶?它对性能有什么影响? 8. 当处理大数据时,...

Global site tag (gtag.js) - Google Analytics