hive倉庫和關係型資料庫的對比

2021-08-02 17:27:09 字數 1660 閱讀 4092

1.  查詢語言。由於 sql 被廣泛的應用在資料倉儲中,因此專門針對 hive 的特性設計了類 sql的查詢語言 hql(發音「海口」)。熟悉 sql 開發的開發者可以很方便的使用hive 進行開發。

2.  資料儲存位置。hive 是建立在hadoop 之上的,所有 hive 的資料都是儲存在 hdfs 中。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

3.  資料格式。hive 中沒有定義專門的資料格式,資料格式可以由使用者來指定,使用者定義資料格式需要指定三個屬性:列分隔符(通常為空格、」\t」、」\x001″)、行分隔符(」\n」)以及讀取檔案資料的方法(hive中預設有三個檔案格式 textfile,sequencefile,rcfile)。由於在載入資料的過程中,不需要從使用者資料格式到hive定義的資料格式的轉換,因此hive

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

hdfs

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

4.  資料更新。由於

hive

是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,hive 中不支援對資料的改寫和新增,所有的資料都是在載入的時候中確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用 insert into ...  values 新增資料,使用 update ... set 修改資料。

5.  索引。之前已經說過,hive 在載入資料的過程中不會對資料進行任何處理,甚至不會對資料進行掃瞄,因此也沒有對資料中的某些 key 建立索引。hive要訪問資料中滿足條件的特定值時,需要暴力掃瞄整個資料,因此訪問延遲較高。不過為了提公升查詢效能,通常會在建表時建立分割槽,那麼就會在hdfs上建立對應的目錄,查詢時直接查這個目錄即可(而不需暴力掃瞄整個資料)。由於

mapreduce

的引入,

hive

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

hive

6.  執行。hive 中大多數查詢的執行是通過hadoop 提供的 mapreduce 來實現的,而資料庫通常有自己的執行引擎。

7.  執行延遲。之前提到,hive 在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致 hive 執行延遲高的因素是mapreduce 框架。由於 mapreduce 本身具有較高的延遲,因此在利用 mapreduce 執行 hive 查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,

hive

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

8.  可擴充套件性。由於 hive 是建立在hadoop 之上的,因此 hive

的可擴充套件性是和

hadoop

的可擴充套件性是一致的(世界上最大的 hadoop 集群在yahoo!,2023年的規模在 4000 臺節點左右)。而資料庫由於acid 語義的嚴格限制,擴充套件性非常有限。目前最先進的並行資料庫oracle 在理論上的擴充套件能力也只有 100 臺左右。

9.    資料規模。由於 hive

建立在集群上並可以利用

mapreduce

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

hive和關係型資料庫對比

關係型資料庫用的是sql,hive用的是類sql,兩個語法相似,但是還是有點區別的 hive資料是存到hdfs上面的,關係型資料庫是存到本地磁碟或者別的塊裝置上.關係型資料庫增刪改查都能寫,hive只能寫查詢和新增,因為hive資料存放到hdfs上面,hdfs是不支援隨機寫的 關係型資料庫是有索引的...

關係型資料庫和非關係型資料庫

關係型資料庫 mysql oracle等 非關係型資料庫 nosql hbase,mongodb,redis等 優勢 可以在乙個表以及多個表之間做複雜的資料查詢 支援事務,保持資料的一致性。優勢 基於鍵值對,不需要經過sql解析,資料之間沒有耦合,易水平擴充套件。資料儲存在快取中,查詢速度快。可以儲...

關係型資料庫和非關係型資料庫

關聯式資料庫是資料項之間具有預定義關係的資料項的集合。這些項被組織為一組具有列和行的表。表用於儲存有關要在資料庫中表示的物件的資訊。表中的每列都儲存著特定型別的資料,字段儲存著屬性的實際值。表中的行表示乙個物件或實體的相關值的集合。表中的每一行可標有乙個稱為主鍵的唯一識別符號,並且可使用外來鍵在多個...