Hive與傳統資料庫對比

2021-08-13 10:56:48 字數 2745 閱讀 4198

由於

hive

採用了sql

的查詢語言

hql,因此很容易將

hive

理解為資料庫。其實

從結構上來看,

hive

和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述

hive

和資料庫的差異。資料庫可以用在

online

的應用中,但是

hive

是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解

hive

的特性。

查詢語言

hqlsql

資料儲存位置

hdfs

raw device

或者 local fs

資料格式

使用者定義

系統決定

資料更新

不支援支援索引 無

有  執行

mapredcue

executor

執行延遲 高

低可擴充套件性 高

低資料規模 大

小1.查詢語言

由於sql

被廣泛的應用在資料倉儲中,因此,專門針對

hive

的特性設計了類

sql的查詢語言

hql。熟悉

sql開發的開發者可以很方便的使用

hive

進行開發。

2.資料儲存位置

hive 

是建立在

hadoop

之上的,所有

hive

的資料都是儲存在

hdfs

中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

3.資料格式

hive 

中沒有定義專門的資料格式,資料格式可以由使用者指定,使用者定義資料格式需要指定三個屬性:列分隔符(通常為空格、

」\t」

、」\x001″

)、行分隔符(

」\n」

)以及讀取檔案資料的方法(

hive

中預設有三個檔案格式

textfile

,sequencefile

以及rcfile

)。由於在載入資料的過程中,不需要從使用者資料格式到

hive

定義的資料格式的轉換,因此,

hive

在載入的過程中不會對資料本身進行任何修改,而只是將資料內容複製或者移動到相應的

hdfs

目錄中。而在資料庫中,不同的資料庫有不同的儲存引擎,定義了自己的資料格式。所有資料都會按照一定的組織儲存,因此,資料庫載入資料的過程會比較耗時。

4.資料更新

由於hive

是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,

hive

中不支援對資料的改寫和新增,所有的資料都是在載入的時候中確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用

insert into ...  values

新增資料,使用

update ... set

修改資料。

5.索引

之前已經說過,

hive

在載入資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃瞄,因此也沒有對資料中的某些

key建立索引。

hive

要訪問資料中滿足條件的特定值時,需要暴力掃瞄整個資料,因此訪問延遲較高。由於

mapreduce

的引入,

hive

可以並行訪問資料,因此即使沒有索引,對於大資料量的訪問,

hive

仍然可以體現出優勢。資料庫中,通常會針對乙個或者幾個列建立索引,因此對於少量的特定條件的資料的訪問,資料庫可以有很高的效率,較低的延遲。由於資料的訪問延遲較高,決定了

hive

6.執行

hive 

中大多數查詢的執行是通過

hadoop

提供的mapreduce

來實現的(類似

select * from tbl

的查詢不需要

mapreduce

)。而資料庫通常有自己的執行引擎。

7.執行延遲

之前提到,

hive

在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致

hive

執行延遲高的因素是

mapreduce

框架。由於

mapreduce

本身具有較高的延遲,因此在利用

mapreduce

執行hive 

查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,

hive

的平行計算顯然能體現出優勢。

8.可擴充套件性

由於hive

是建立在

hadoop

之上的,因此

hive

的可擴充套件性是和

hadoop

的可擴充套件性是一致的。而資料庫由於

acid

語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫

oracle

在理論上的擴充套件能力也只有

100臺左右。

9.資料規模

由於hive

建立在集群上並可以利用

mapreduce

進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

Hive與傳統資料庫對比

由於hive採用了sql的查詢語言hql,因此很容易將hive理解為資料庫。其實從結構上來看,hive和資料庫除了擁有類似的查詢語言,再無類似之處。資料庫可以用在online的應用中,但是hive是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解hive的特性。hive 傳統資料庫 查詢語言 h...

Hive對比傳統資料庫區別

hive對比傳統資料庫 hive和關聯式資料庫儲存檔案系統不同,hive使用的是hadoop的hdfs hadoop的分布式檔案系統 關聯式資料庫則是伺服器本地的檔案系統 hive使用的計算模型是mapreduce,而關聯式資料庫則是自己設計的計算模型 關聯式資料庫都是為了實時查詢的業務進行設計的,...

hbase簡介 與傳統資料庫對比

什麼是hbase hbase是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型資料。hbase是goog...