MapReduce 與 關係型數據庫的區別

MapReduce 與 關係型數據庫的區別: node

1 數據訪問模式受限於磁盤尋址

磁盤尋址時間提升速度遠遠小於數據傳輸速率提升速度。對於超大規模數據(以PB爲單位)必須考慮使用其餘方式。關係型數據庫使用B樹結構進行數據的更新查詢操做,對於最大到GB的數據量,通常相對數據量較小,效果很好。可是大數據量時,B樹使用排序/合併方式重建數據庫以更新數據的效率遠遠低於MapReduce。 算法

2 MapReduce是關係型數據庫的補充。

MapReduce更適合批量更新大批量的數據集,一次寫入屢次讀取。RDBMS更適合點查詢和更新,這時的數據集已經被索引以提供低延遲的檢索和短期的少許數據更新,適合屢次讀寫。 數據庫

3 數據結構不一樣。

關係型數據使用的是結構化數據,在數據庫階段按具體類型處理數據。MapReduce數據模式半結構化或非結構化,數據處理是在Mapreduce操做中由用戶實現。 編程

關係型數據的規範性很是重要,保持數據的完整性,一致性。這樣的規範限制了數據必須在非本地操做。而MapReduce最終要是讓數據在靠近數據的地方處理。 數據結構

結構化數據

(structured data):是具體既定格式的實體化數據,如XML文檔或知足特定預約義格式的數據庫表。這是RDBMS包括的內容。 大數據

半結構化數據

(semi-structured data):比較鬆散,雖然可能有格式,可是常常被忽略,因此他只能做爲對數據結構的通常指導。如:一張電子表格,其結構是由單元格組成的網格,可是每一個單元格自身可保存任何形式的數據。 spa

非結構化數據

(unstructured data):沒有什麼特別的內部結構,如純文本或圖像數據。 翻譯

4 伸縮性。

關係型數據庫 對數據處理是非線性。 orm

MapReduce線性。 排序

其中有一句話難以理解,涉及到了關係型數據和MapReduce處理數據方式不一樣的根本緣由。

原文:

Relational data is often normalized to retain its integrity, and remove redundancy.

Normalization poses problems for MapReduce, since it makes reading a record a nonlocal

operation, and one of the central assumptions that MapReduce makes is that it

is possible to perform (high-speed) streaming reads and writes

翻譯後:

關係型數據每每是規範的,以保持其完整性和刪除冗餘。規範化爲MapReduce帶來問題,由於它使讀取記錄成爲一個非本地操做,而且MapReduce的核心假設之一就是,它能夠進行(高速)流的讀寫。

這段話難以理解是在 爲何規範化使得讀取操做必須是非本地操做。這句話怎麼理解呢?

個人理解:

這個本地操做應該是指的數據傳輸仍是算法傳輸,mapreduce是將算法傳輸到hdfs datanode上以便數據在本地執行。而關係型數據庫必需要經過 connection 將數據傳輸到算法所在容器執行。而這個的根本緣由是數據規範性。

數據規範性,爲了保證約束(完整性、一致性)正常,數據就須要傳輸到數據庫容器外執行,數據處理邏輯完成後,由事務提交到數據庫,從而嚴格保證數據的規範。

比較項

MapReduce

RDBMS

 

數據訪問模式

不受磁盤尋址的限制,磁盤尋址時間提升速度遠遠小於數據傳輸速率提升速度。

受限於磁盤尋址,關係型數據庫使用B樹結構進行數據的更新查詢操做,對於最大到GB的數據量,通常相對數據量較小,效果很好。

 

增刪改查

更適合批量更新大批量的數據集,一次寫入屢次讀取

更適合點查詢和更新,這時的數據集已經被索引以提供低延遲的檢索和短期的少許數據更新,適合屢次讀寫。

 

數據結構

MapReduce數據模式半結構化或非結構化,數據處理是在Mapreduce操做中由用戶實現,MapReduce最終要是讓數據在靠近數據的地方處理

關係型數據使用的是結構化數據,在數據庫階段按具體類型處理數據。關係型數據的規範性很是重要,保持數據的完整性,一致性。這樣的規範限制了數據必須在非本地操做。

伸縮性

線性

非線性

 

仍是先來比較下傳統關係型數據庫與MapReduce兩種方式的區別吧,以下表所示:

比較項 傳統關係數據庫 MapReduce
數據大小 GB PB
訪問 交互式批處理批處理 批處理
更新 屢次讀寫 一次寫入屢次讀取
結構 靜態模式 動態模式
完整性
橫向擴展 非線性 線性

由上表可見:

1.MapReduce比較適合以批處理的方式處理須要分析整個數據集的問題,尤爲是即席分離。RDBMS適用於「點查詢」和更新,數據集被索引後,數據庫系統可以提供低延遲的數據檢索和快速的少許數據更新。

2.MapReduce適合一次寫入、屢次讀取數據的應用,而關係型數據庫更適合持續更新的數據集。

3.關係型數據庫中數據集是高度結構化的數據,而MapReduce中的數據是非結構化數據。

相信在不久的未來,關係型數據庫系統和MapReduce系統之間的差別極可能變得模糊。關係型數據庫都開始吸取MapReduce的一些思路,另外一方面,基於MapReduce的高級查詢語言使MapReduce的系統更接近傳統的數據庫編程方式。

(注:部份內容摘自其餘博主分享)

相關文章
相關標籤/搜索