Hive和數據庫除了擁有相似的查詢語言,再無相似之處;關係型數據庫和非關係型數據庫的優缺點

Hive和數據庫除了擁有相似的查詢語言,再無相似之處。redis

數據庫能夠用在Online的應用中,可是Hive是爲數據倉庫而設計的(因爲數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。)算法

1.sql

因爲 Hive 是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。所以,Hive 中不支持對數據的改寫和添加,全部的數據都是在加載的時候中肯定好的。而數據庫中的數據一般是須要常常進行修改的,所以可使用 INSERT INTO ...  VALUES 添加數據,使用 UPDATE ... SET 修改數據。數據庫

 Hive的加載,是將整個文件加載到對應的HDFS中,不會對數據自己有任何修改。能夠簡單理解爲:hive的元數據,對應的是文件的位置,數據庫對應的是文件裏面內容的位置。安全

Hive 在加載的過程當中不會對數據自己進行任何修改,而只是將數據內容複製或者移動到相應的 HDFS 目錄中。而在數據庫中,不一樣的數據庫有不一樣的存儲引擎,定義了本身的數據格式。全部數據都會按照必定的組織存儲,所以,數據庫加載數據的過程會比較耗時。oracle

2.框架

索引。以前已經說過,Hive 在加載數據的過程當中不會對數據進行任何處理,甚至不會對數據進行掃描,所以也沒有對數據中的某些 Key 創建索引。Hive 要訪問數據中知足條件的特定值時,須要暴力掃描整個數據,所以訪問延遲較高。因爲 MapReduce 的引入, Hive 能夠並行訪問數據,所以即便沒有索引,對於大數據量的訪問,Hive 仍然能夠體現出優點。數據庫中,一般會針對一個或者幾個列創建索引,所以對於少許的特定條件的數據的訪問,數據庫能夠有很高的效率,較低的延遲。因爲數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。數據庫設計

Hive 在查詢數據的時候,因爲沒有索引,須要掃描整個表,所以延遲較高。另一個致使 Hive 執行延遲高的因素是 MapReduce 框架。因爲 MapReduce 自己具備較高的延遲,所以在利用 MapReduce 執行 Hive 查詢時,也會有較高的延遲。相對的,數據庫的執行延遲較低。固然,這個低是有條件的,即數據規模較小,當數據規模大到超過數據庫的處理能力的時候,Hive 的並行計算顯然能體現出優點。函數

 3.oop

因爲 Hive 創建在集羣上並能夠利用 MapReduce 進行並行計算,所以能夠支持很大規模的數據;對應的,數據庫能夠支持的數據規模較小。

界上最大的 Hadoop 集羣在 Yahoo!2009年的規模在 4000 臺節點左右

目前最早進的並行數據庫 Oracle 在理論上的擴展能力也只有 100 臺左右。

 

Hive是一個應用層的東西,定位是數據倉庫,所偏向的是數據分析,存儲和計算的方向,其本質是mapreduce

Hive的應用場景

1》數據挖掘:

1.數據用戶行爲分析

2.興趣分區

3.區域展現

2》非實時分析

1.日誌分析

2.文本分析

3》數據彙總

1.天天/每週用戶點擊數

2.流量統計

3》做爲數據倉庫(這也是我在公司接觸的最多的數據分析的場景)

1.數據抽取

2.數據加載

3.數據轉換

 

Hive缺點:

 

1》延遲很高:

 

      1.默認M/R執行引擎

 

      2.M/R啓動有所延遲

2》暫不支持列級,別的數據增長,更新,刪除操做。

 

3》暫不支持存儲過程

 關係型數據庫:MysqlOracle

非關係型數據庫:RedisMongoDBHBASE

SQL數據庫:hive

具體地:

關係型數據庫(MysqlOracle

1.表和表、表和字段、數據和數據存在着關係

優勢:

1.數據之間有關係,進行數據的增刪改查的時候是很是方便的

2.關係型數據庫是有事務操做的,保證數據的完整性和一致性。

缺點:

1.由於數據和數據是有關係的,底層是運行了大量的算法

大量算法會下降系統的效率,會下降性能

2.面對海量數據的增刪改查的時候會顯的無能爲力

3.海量數據對數據進行維護變得很是的無力

 

適合處理通常量級的數據(銀行轉帳和錢)

 

非關係數據庫的(redisMangDB

爲了處理海量數據,非關係數據庫設計之初就是爲了替代關係型數據庫的關係

查找key---value的時候:entry(即一條K-V記錄)默認是按照key的字典順序存儲的,固然開發者也能夠重載這個排序函數;

優勢:

1.海量數據的增刪改查是能夠的

2.海量數據的維護和處理很是輕鬆

缺點:

1.數據和數據沒有關係,他們之間就是單獨存在的

2.非關係數據庫沒有關係,沒有強大的事務關係,沒有保證數據的完整性和安全性

 

適合處理海量數據,保證效率,不必定安全(統計數據,例如微博數據)

 

總之:

1.關係型數據庫支持SQL語句的查詢,增刪改查很是方便,而且支持多表的join操做,相比非關係型數據庫速度比較慢

2.非關係型數據庫讀寫很是快,可是不支持增刪改查的操做

3.hive數據倉庫是元數據和客戶端的形式,將數據存儲在HDFS上的。可是Hive 中不支持對數據的改寫和添加,全部的數據都是在加載的時候中肯定好的。

4.非關係型數據庫的數是存儲在內存中的,關係型數據庫的數據是存儲在磁盤的

 

Hive query就是MapReduce jobs能夠從5分鐘到數小時不止,HBase是很是高效的,確定比Hive高效的多。
Hive自己不存儲和計算數據,它徹底依賴於HDFSMapReduceHive中的表純邏輯。hive須要用到hdfs存儲文件,須要用到MapReduce計算框架。
hbase是物理表,不是邏輯表,提供一個超大的內存hash表,搜索引擎經過它來存儲索引,方便查詢操做。
hbase是列存儲。

相關文章
相關標籤/搜索