Hadoop與常見數據庫的區別

想必在數據量情況少的情況下我們首先想到的時擅長于存儲的常見數據庫如MySQL或者oracle,甚至我們可以將企業的web Server,db Server都裝載到一個服務中,但是隨著時間或者公司的成長數據庫會越來越滿。

這時候我們想到了讀寫分離,使用Master/salve架構,使用Master負責寫操作,使用幾個Salve負責寫操作。

但是隨著壓力增大,Master節點壓力也變大,一般我們采用的是進行垂直分庫,就是將沒有邏輯關系的數據表,分布在不同的數據庫中。當數據一直增大導致一張表的數據會特別大,這樣也會使得一個數據表的查詢變得特別慢,我們只能采取的水平分區的辦法,將一個表的數據量限制在10W,來減輕庫的壓力。

畢竟不是最終的解決辦法,不能解決數據一直激增的存儲問題。Hadoop是通過集群的方式,即通過增加機器的方式解決了數據的存儲問題。

目前oracle雖然可以搭建集群 但是當數據量達到一定限度之后查詢處理速度會變得很慢 且對機器性能要求很高。

SQL數據庫和Hadoop 區別

  1. 用向外擴展代替向上擴展
    Hadoop集群就是增加更多的機器。一個Hadoop集群的標配是十至數百臺計算機。而不是專注于提高單臺服務器的性能

  2. 用鍵/值對代替關系表
    SQL 針對結構化查詢語句 是結構化數據,hadoop針對的是非結構化數據,文本形式
    關系數據庫是 有一定格式,而存放文本、圖片和xml文件 則應該用鍵值對的方式

  3. 用函數式編程(MapReduce)代替聲明式查詢(SQL)
    hadoop讀取出的數據,可以建立復雜的模型或者改變圖片格式

  4. 用離線批量處理代替在線處理
    Hadoop是專為離線處理和大規模數據分析而設計的,它并不適合那種對幾個記錄隨機讀寫的在線事務處理模式。

同時在設計Hadoop時考慮的是對大量數據的存儲和操作,雖然在小量的數據上Hadoop可能不如RDMS,但是大量數據存儲情況下,如HDFS可以存儲超大的文件,更新或修改大部分數據時MapReduce效率大于常見數據的B樹查詢。

為什么不通過使用數據庫加上更多磁盤來做大規模批量分析?為什么我們還需要MapReduce?

1、磁盤驅動器尋址時間的速度遠遠慢于傳輸速率的提高速度,尋址就是將磁頭移動到特定位置進行讀寫操作的工序,它的特點是磁盤操作有延遲,而傳輸速率對應磁盤的帶寬。如果數據的訪問受限于磁盤的
尋址,勢必會導致它花更長的時間來讀或寫大部分數據。

2、在更新一小部分數據的情況下,傳統的B樹效果很好,但在更新大部分數據時,B樹的效率就沒有MapReduce的高,因為它需要使用排序/合并來重建數據庫。

在很多情況下,MapReduce能夠被視為一種RDBMS的補充,MapReduce很適合處理那些需要分析整個數據集的問題,以批處理的方式,尤其是Ad Hoc(自主或即時)分析。RDBMS適用于點查詢和更新
(其中,數據集已經被索引以提供低延遲的檢索和短時間的少量數據更新)。MapReduce適合數據被一次寫入和多次讀取的應用,而RDBMS更適合持續更新的數據集。

為什么數據庫使用B樹索引而非散列索引?

一般關系型數據庫使用B+樹來做索引,NoSQL數據庫用哈希來做索引。MySQL就普遍使用B+Tree實現其索引結構。
因為索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲的磁盤上。這樣的話,索引查找過程中就要產生磁盤I/O消耗,相對于內存存取,I/O存取的消耗要高幾個數量級,所以評價一個數據結構作為索引的優劣最重要的指標就是在查找過程中磁盤I/O操作次數的漸進復雜度。

因此為了提高效率,要盡量減少磁盤I/O。

為了達到這個目的,磁盤往往不是嚴格按需讀取,而是每次都會預讀,即使只需要一個字節,磁盤也會從這個位置開始,順序向后讀取一定長度的數據放入內存。這樣做的理論依據是計算機科學中著名的局部性原理:
當一個數據被用到時,其附近的數據也通常會馬上被使用。程序運行期間所需要的數據通常比較集中。

根據B Tree的定義,可知檢索一次最多需要訪問h個節點。數據庫系統的設計者巧妙利用了磁盤預讀原理,將一個節點的大小設為等于一個頁,這樣每個節點只需要一次I/O就可以完全載入。為了達到這個目的,在實際實現中B-Tree在每次新建節點時,直接申請一個頁的空間,這樣就保證一個節點物理上也存儲在一個頁里,加之計算機存儲分配都是按頁對齊的,就實現了一個node只需一次I/O。

B-Tree中一次檢索最多需要h-1次I/O(根節點常駐內存),漸進復雜度為O(h)=O(logdN)。一般實際應用中,出度d是非常大的數字,通常超過100,因此h非常小(通常不超過3)。
綜上所述, 用B-Tree作為索引結構效率是非常高的。
而紅黑樹這種結構,h明顯要深的多。由于邏輯上很近的節點(父子)物理上可能很遠,無法利用局部性,所以紅黑樹的I/O漸進復雜度也為O(h),效率明顯比B-Tree差很多。
B+Tree更適合外存索引,原因和內節點出度d有關。從上面分析可以看到,d越大索引的性能越好,而出度的上限取決于節點內key和data的大小,由于B+Tree內節點去掉了data域,因此可以擁有更大的出度,擁有更好的性能

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容