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》暫不支持存儲過程
關係型數據庫:Mysql,Oracle
非關係型數據庫:Redis,MongoDB,HBASE
類SQL數據庫:hive
具體地:
關係型數據庫(Mysql和Oracle)
1.表和表、表和字段、數據和數據存在着關係
優勢:
1.數據之間有關係,進行數據的增刪改查的時候是很是方便的
2.關係型數據庫是有事務操做的,保證數據的完整性和一致性。
缺點:
1.由於數據和數據是有關係的,底層是運行了大量的算法
大量算法會下降系統的效率,會下降性能
2.面對海量數據的增刪改查的時候會顯的無能爲力
3.海量數據對數據進行維護變得很是的無力
適合處理通常量級的數據(銀行轉帳和錢)
非關係數據庫的(redis和MangDB)
爲了處理海量數據,非關係數據庫設計之初就是爲了替代關係型數據庫的關係
查找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自己不存儲和計算數據,它徹底依賴於HDFS和MapReduce,Hive中的表純邏輯。hive須要用到hdfs存儲文件,須要用到MapReduce計算框架。
hbase是物理表,不是邏輯表,提供一個超大的內存hash表,搜索引擎經過它來存儲索引,方便查詢操做。
hbase是列存儲。