1. 程式人生 > >傳統資料庫難以處理大資料的原因

傳統資料庫難以處理大資料的原因

這其實是一個偽命題,我圍繞這個問題,問幾個問題:
1,何為“傳統資料庫”?更多的人認為“處理不了大資料的資料庫叫做‘傳統資料庫’“,這樣你的問題就不用回答了……但是,接下來的一個問題是:
2,何為“大資料”?我就知道你要用那3個V/4個V來砍我了……我更反對一提“大資料”,就提Hadoop,就提Map Reduce,就提Cassandra,好像堆砌了這些名詞就代表了你懂大資料了……
3,有人認為“傳統資料庫”就是10-20年前的資料庫產品,例如IBM DB2,Oracle,Microsoft SQL Server,Sybase等等,但是我要告訴你說,這些公司都有新版本陸續推出,在解決大資料的很多場合中發揮著優異的功效。
4,也有人說“非結構化?資料量大?速度?”:也不見得對,Sybase早在1990年代初就有了儲存非結構化資料的BLOB欄位,資料量也一直並不是“傳統資料庫”的最大問題,速度的確是軟肋,但是Hadoop等開源軟體並不是解決這個速度問題的答案!

我其實一直認為,大資料不過是資料庫發展過程中的一個階段,這個階段和以前的很多階段一樣,是來改進/優化/顛覆以前的資料庫處理能力,處理方法的。

對不起,似乎沒有正面回答你的問題,希望你能夠正面理解我的回答……

============================================================

傳統的資料庫都是單個伺服器提供的,一臺伺服器就能提滿足儲存和處理的需求。
  • 可靠的方案用的機器都是企業級的伺服器,如IBM的伺服器。
  • 對可靠性敏感的都是用企業級的儲存方案,如EMC的產品。
  • 通過主從複製的方式提供熱備

當資料量增大的時候,一臺機器已經無法滿足儲存和處理的需求,那麼就增加了機器
  • 分割槽或分片,將資料拆成多個子集,分別放到不同的機器上。

隨著資料量的日益增長,就存在以下的問題:
  • 分割槽加上主從複製,方案比較複雜
  • 分割槽不支援動態擴充套件,也就是伸縮性不夠好,當業務和資料量增加時,無法增加機器,修改原來的分割槽。
  • 依賴於IBM,EMC等公司的裝置,造價高
  • 多臺伺服器的資料庫許可證貴,比如幾十臺Oracle資料庫伺服器的許可。
  • 一臺伺服器的故障率低,十幾臺,幾十臺,上百臺,故障率高。

再加上更多非結構化的資料處理的需求,就產生了大資料技術,如Hadoop,Cassandra等。

Hadoop包括HDFS,MapReduce和HBase,MapReduce是資料處理框架,HBase和Cassandra主要是資料庫,主要提供以下特性:
  • 可以使用幾十臺上百臺商用PC來替代那些IBM企業級伺服器
  • 可以使用分散式檔案系統的副本,替代冗餘磁碟陣列等EMC儲存裝置
  • 軟體自己開發,或使用開源專案,免去了許可證的費用
  • 通過副本和容錯機制,解決單點故障,
    • 一個數據塊存有多個副本,儲存在不同的伺服器上,甚至不同的機架,不同的機房中。
    • 例如HDFS和HBase的分散式叢集,當一臺伺服器宕機時,其他伺服器會接過來繼續服務。
    • 例如MapReduce,一臺伺服器上出錯,可以傳送給另外的伺服器處理。
  • 支援動態分割槽,無論是HBase的劃分Region,還是Cassandra的一致性雜湊。

傳統資料庫處理方式和大資料處理方式的區別

檔案系統把資料組織成相互獨立的資料檔案,實現了記錄內的結構性,但整體無結構;而資料庫系統實現整體資料的結構化,這是資料庫的主要特徵之一,也是資料庫系統與檔案系統的本質區別。
在檔案系統中,資料冗餘度大,浪費儲存空間,容易造成資料的不一致;資料庫系統中,資料是面向整個系統,資料可以被多個使用者、多個應用共享使用,減少了資料冗餘。
檔案系統中的檔案是為某一特定應用服務的,當要修改資料的邏輯結構時,必須修改應用程式,修改檔案結構的定義,資料和程式之間缺乏獨立性;資料庫系統中,通過DBMS的兩級映象實現了資料的物理獨立性和邏輯獨立性,把資料的定義從程式中分離出去,減少了應用程式的維護和修改。
檔案系統和資料庫系統均可以長期儲存資料,由資料管理軟體管理資料,資料庫系統是在檔案系統基礎上發展而來。

大資料時代和傳統資料有什麼區別

傳統的分析是基於結構化、關係性的資料,而且往往是取一個很小的資料集,來對整個資料進行預測和判斷。

大資料是對整個資料全集直接進行儲存和管理分析。

大資料時代簡介

大資料(Bigdata)通常用來形容一個公司創造的大量非結構化和半結構化資料,這些資料在下載到關係型資料庫用於分析時會花費過多時間和金錢。大資料分析常和雲端計算聯絡到一起,因為實時的大型資料集分析需要像MapReduce一樣的框架來向數十、數百或甚至數千的電腦分配工作。

“大資料”在網際網路行業指的是這樣一種現象:網際網路公司在日常運營中生成、累積的使用者網路行為資料。這些資料的規模是如此龐大,以至於不能用G或T來衡量。