大資料的儲存和管理

來源:互聯網
上載者:User

大資料的儲存和管理

任何機器都會有物理上的限制:記憶體容量、硬碟容量、處理器速度等等,我們需要在這些硬體的限制和效能之間做出取捨,比如記憶體的讀取速度比硬碟快得多,因此記憶體資料庫比硬碟資料庫效能好,但是記憶體為2GB的機器不可能將大小為100GB的資料全部放入記憶體中,也許記憶體大小為128GB的機器能夠做到,但是資料增加到200GB時就無能為力了。

資料不斷增長造成單機系統效能不斷下降,即使不斷提升硬體設定也難以跟上資料的增長速度。然而,當今主流的電腦硬體比較便宜而且可以擴充,現在購置八台8核心、128GB記憶體的機器比購置一台64核心、TB層級記憶體的伺服器划算得多,而且還可以增加或減少機器來應對將來的變化。這種分布式架構策略對于海量資料來說是比較適合的,因此,許多海量資料系統選擇將資料放在多個機器中,但也帶來了許多單機系統不曾有的問題。

下面我們介紹大資料存放區和管理髮展過程中出現的四類大資料存放區和管理資料庫系統。

並行資料庫

並行資料庫[1]是指那些在無共用的體繫結構中進行資料操作的資料庫系統。這些系統大部分採用了關係資料模型並且支援SQL語句查詢,但為了能夠並存執行SQL的查詢操作,系統中採用了兩個關鍵技術:關係表的水平劃分和SQL查詢的分區執行。

水平劃分的主要思想就是根據某種策略將關係表中的元組分布到叢集中的不同節點上,這些節點上的表結構是一樣的,這樣就可以對元組平行處理。現有的分區策略有雜湊分割、定界分割、迴圈分區等。例如,雜湊分割策略是將表T中的元組分布到n個節點上,可以使用統一的雜湊演算法對元組中的某個或某幾個屬性進行雜湊,如hash(T.attribute1)
mod n,然後根據雜湊值將元組放置到不同的節點上。

在分區儲存的表中處理SQL查詢需要使用基於分區的執行策略,如擷取表T中某一數值範圍內的元組,系統首先為整個表T產生總的執行計畫P,然後將P拆分成n個子計劃{P1,…,Pn},子計劃Pi在節點ni上獨立執行,最後每個節點將產生的中間結果發送到某一選定的節點上,該節點對中間結果進行聚集產生最終的結果。

並行資料庫系統的目標是高效能和高可用性,通過多個節點並存執行資料庫任務,提高整個資料庫系統的效能和可用性。最近一些年不斷湧現一些提高系統效能的新技術,如索引、壓縮、實體化視圖、結果緩衝、I/O共用等,這些技術都比較成熟且經得起時間的考驗。與一些早期的系統如Teradata必須部署在專有硬體上不同,最近開發的系統如Aster、Vertica等可以部署在普通的商業機器上,這些資料庫系統可以稱得上准雲系統。

並行資料庫系統的主要缺點就是沒有較好的彈性,而這種特性對中小型企業和初創企業是有利的。人們在對並行資料庫進行設計和最佳化的時候認為叢集中節點的數量是固定的,若需要對叢集進行擴充和收縮,則必須為資料轉移過程制訂周全的計劃。這種資料轉移的代價是昂貴的,並且會導致系統在某段時間內不可訪問,而這種較差的靈活性直接影響到並行資料庫的彈性以及現用現付商業模式的實用性。

並行資料庫的另一個問題就是系統的容錯性較差,過去人們認為節點故障是個特例,並不經常出現,因此系統只提供事務層級的容錯功能,如果在查詢過程中節點發生故障,那麼整個查詢都要從頭開始重新執行。這種重啟任務的策略使得並行資料庫難以在擁有數以千個節點的叢集上處理較長的查詢,因為在這類叢集中節點的故障經常發生。基於這種分析,並行資料庫只適合於資源需求相對固定的應用程式。不管怎樣,並行資料庫的許多設計原則為其他海量資料系統的設計和最佳化提供了比較好的借鑒。

NoSQL資料管理系統

NoSQL[5]一詞最早出現於1998年,它是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關係型資料庫(他認為,由於NoSQL悖離傳統關聯式資料庫模型,因此,它應該有一個全新的名字,比如“NoREL”或與之類似的名字[6])。

2009年,Last.fm的Johan Oskarsson發起了一次關於分布式開來源資料庫的討論[7],來自Rackspace的Eric
Evans再次提出了NoSQL的概念,這時的NoSQL主要指非關係型、分布式、不提供ACID的資料庫設計模式。

2009年在亞特蘭大舉行的“no:sql(east)”討論會是一個裡程碑,其口號是"select fun, profit from real_world whererelational=false;"。因此,對NoSQL最普遍的解釋是“非關係型的”,強調KVStore for Redis和文檔資料庫的優點,而不是單純地反對關係型資料庫。

傳統關係型資料庫在處理資料密集型應用方面顯得力不從心,主要表現在靈活性差、擴充性差、效能差等方面。最近出現的一些儲存系統摒棄了傳統關係型資料庫管理系統的設計思想,轉而採用不同的解決方案來滿足擴充性方面的需求。這些沒有固定資料模式並且可以水平擴充的系統現在統稱為NoSQL(有些人認為稱為NoREL更為合理),這裡的NoSQL指的是“Not
Only SQL”,即對關係型SQL資料系統的補充。NoSQL系統普遍採用的一些技術有:

     簡單資料模型。不同於分散式資料庫,大多數NoSQL系統採用更加簡單的資料模型,這種資料模型中,每個記錄擁有唯一的鍵,而且系統只需支援單記錄層級的原子性,不支援外鍵和跨記錄的關係。這種一次操作擷取單個記錄的約束極大地增強了系統的可擴充性,而且資料操作就可以在單台機器中執行,沒有分散式交易的開銷。

     中繼資料和應用資料的分離。NoSQL資料管理系統需要維護兩種資料:中繼資料和應用資料。中繼資料是用於系統管理的,如資料分區到叢集中節點和副本的映射資料。應用資料就是使用者儲存在系統中的商業資料。系統之所以將這兩類資料分開是因為它們有著不同的一致性要求。若要系統正常運轉,中繼資料必須是一致且即時的,而應用資料的一致性需求則因應用場合而異。因此,為了達到可擴充性,NoSQL系統在管理兩類資料上採用不同的策略。還有一些NoSQL系統沒有中繼資料,它們通過其他方式解決資料和節點的映射問題。

     弱一致性。NoSQL系統通過複製應用資料來達到一致性。這種設計使得更新資料時副本同步的開銷很大,為了減少這種同步開銷,弱一致性模型如最終一致性和時間軸一致性得到廣泛應用。

通過這些技術,NoSQL能夠很好地應對海量資料的挑戰。相對於關係型資料庫,NoSQL資料存放區管理系統的主要優勢有:

     避免不必要的複雜性。關係型資料庫提供各種各樣的特性和強一致性,但是許多特性只能在某些特定的應用中使用,大部分功能很少被使用。NoSQL系統則提供較少的功能來提高效能。

     高輸送量。一些NoSQL資料系統的輸送量比傳統關係資料管理系統要高很多,如Google使用MapReduce每天可處理20PB儲存在Bigtable中的資料。

     高水平擴充能力和低端硬體叢集。NoSQL資料系統能夠很好地進行水平擴充,與關係型資料庫叢集方法不同,這種擴充不需要很大的代價。而基於低端硬體的設計理念為採用NoSQL資料系統的使用者節省了很多硬體上的開銷。

     避免了昂貴的對象-關係映射。許多NoSQL系統能夠儲存資料對象,這就避免了資料庫中關聯式模式和程式中物件模型相互轉化的代價。

NoSQL向人們提供了高效便宜的資料管理方案,許多公司不再使用Oracle甚至MySQL,他們借鑒Amzon的Dynamo和Google的Bigtable的主要思想建立自己的海量資料存放區管理系統,一些系統也開始開源,如Facebook將其開發的Cassandra捐給了Apache軟體基金會。

雖然NoSQL資料庫提供了高擴充性和靈活性,但是它也有自己的缺點,主要有:

     資料模型和查詢語言沒有經過數學驗證。SQL這種基於關係代數和關係演算的查詢結構有著堅實的數學保證,即使一個結構化的查詢本身很複雜,但是它能夠擷取滿足條件的所有資料。由於NoSQL系統都沒有使用SQL,而使用的一些模型還未有完善的數學基礎。這也是NoSQL系統較為混亂的主要原因之一。

     不支援ACID特性。這為NoSQL帶來優勢的同時也是其缺點,畢竟事務在很多場合下還是需要的,ACID特性使系統在中斷的情況下也能夠保證線上事務能夠準確執行。

     功能簡單。大多數NoSQL系統提供的功能都比較簡單,這就增加了應用程式層的負擔。例如如果在應用程式層實現ACID特性,那麼編寫代碼的程式員一定極其痛苦。

     沒有統一的查詢模型。NoSQL系統一般提供不同查詢模型,這一定程度上增加了開發人員的負擔。

NewSQL資料管理系統

人們曾普遍認為傳統資料庫支援ACID和SQL等特性限制了資料庫的擴充和處理海量資料的效能,因此嘗試通過犧牲這些特性來提升對海量資料的儲存管理能力,但是現在一些人則持有不同的觀念,他們認為並不是ACID和支援SQL的特性,而是其他的一些機制如鎖機制、日誌機制、緩衝區管理等制約了系統的效能,只要最佳化這些技術,關係型資料庫系統在處理海量資料時仍能獲得很好的效能。

 

關係型資料庫處理事務時對效能影響較大、需要最佳化的因素有:

     通訊。應用程式通過ODBC或JDBC與DBMS進行通訊是OLTP事務中的主要開銷。

     日誌。關係型資料庫事務中對資料的修改需要記錄到日誌中,而日誌則需要不斷寫到硬碟上來保證持久性,這種代價是昂貴的,而且降低了事務的效能。

     鎖。事務中修改操作需要對資料進行加鎖,這就需要在鎖表中進行寫操作,造成了一定的開銷。

     閂。關係型資料庫中一些資料結構,如B樹、鎖表、資源表等的共用影響了事務的效能。這些資料結構常常被多線程讀取,所以需要短期鎖即閂。

     緩衝區管理。關係型資料將資料群組織成固定大小的頁,記憶體中磁碟頁的緩衝管理會造成一定的開銷。

為瞭解決上面的問題,一些新的資料庫採用部分不同的設計,它取消了耗費資源的緩衝池,在記憶體中運行整個資料庫。它還擯棄了單線程服務的鎖機制,也通過使用冗餘機器來實現複製和故障恢複,取代原有的昂貴的恢複操作。這種可擴充、高效能的SQL資料庫被稱為NewSQL,其中“New”用來表明與傳統關係型資料庫系統的區別,但是NewSQL也是很寬泛的概念。它首先由451集團在一份報告中提出,其主要包括兩類系統:擁有關係型資料庫產品和服務,並將關聯式模式的好處帶到分布式架構上;或者提高關聯式資料庫的效能,使之達到不用考慮水平擴充問題的程度。前一類NewSQL包括Clustrix、GenieDB、ScalArc、ScaleBase、NimbusDB,也包括帶有NDB的MySQL叢集、Drizzle等。後一類NewSQL包括Tokutek、JustOne
DB。還有一些“NewSQL即服務”,包括Amazon的關聯式資料庫服務、Microsoft的SQL Azure、FathomDB等。

當然,NewSQL和NoSQL也有交叉的地方,例如,RethinkDB可以看作NoSQL資料庫中鍵/值儲存的快取系統,也可以當作NewSQL資料庫中MySQL的儲存引擎。現在許多NewSQL供應商使用自己的資料庫為沒有固定模式的資料提供儲存服務,同時一些NoSQL資料庫開始支援SQL查詢和ACID事務特性。

NewSQL能夠提供SQL資料庫的品質保證,也能提供NoSQL資料庫的可擴充性。VoltDB是NewSQL的實現之一,其開發公司的CTO宣稱,它們的系統使用NewSQL的方法處理事務的速度比傳統資料庫系統快45倍。VoltDB可以擴充到39個機器上,在300個CPU核心中每分鐘處理1600萬事務,其所需的機器數比Hadoop叢集要少很多。

隨著NoSQL、NewSQL資料庫陣營的迅速崛起,當今資料庫系統“百花齊放”,現有系統達數百種之多,圖1-1將廣義的資料庫系統進行了分類。

 

圖1-1  資料庫系統的分類

圖1-1中將資料庫分為關係型資料庫、非關係型資料庫以及資料庫緩衝系統。其中,非關係型資料庫主要指的是NoSQL資料庫,分為:索引值資料庫、列存資料庫、圖存資料庫以及文檔資料庫四大類。關係型資料庫包含了傳統關聯式資料庫系統以及NewSQL資料庫。

高容量、高分布式、高複雜性應用程式的需求迫使傳統資料庫不斷擴充自己的容量極限,這些驅動傳統關係型資料庫採用不同的資料管理技術的6個關鍵因素可以概括為“SPRAIN”,即:

     可擴充性(Scalability)——硬體價格

     高效能(Performance)——MySQL的效能瓶頸

     弱一致性(Relaxedconsistency)——CAP理論

     敏捷性(Agility)——持久多樣性

     複雜性(Intricacy)——海量資料

     必然性(Necessity)——開源

 

 

作者簡介

陸嘉恒,中國人民大學教授,博士生導師。2006年畢業於新加坡國立大學電腦科學系,獲博士學位;2006-2008年在美國加利福尼亞大學爾灣分校(University of California, Irvine)進行博士後研究;2008年加入中國人民大學,2012年破格晉陞為教授。主要研究領域包括資料庫技術和雲端運算技術。先後在SIGMOD、VLDB、ICDE、WWW等國際重要會議和期刊上發表資料庫方向的論文40多篇,主編多本雲端運算和大資料的教材和著作。

本文節選自《大資料挑戰與NoSQL資料庫技術》一書。陸嘉恒編著,由電子工業出版社出版。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.