大數(shù)據(jù)數(shù)據(jù)庫技術(shù)簡介與分類分析

責(zé)任編輯:editor005

2016-04-20 14:16:32

摘自:中國云計算

說起大數(shù)據(jù)生態(tài),不得不提大數(shù)據(jù)生態(tài)系統(tǒng)圖,而大數(shù)據(jù)行業(yè)卻不斷的發(fā)生著巨變,目前的這張圖應(yīng)該還算比較新了。盡管NoSQL數(shù)據(jù)庫技術(shù)目前發(fā)展非常迅速

說起大數(shù)據(jù)生態(tài),不得不提大數(shù)據(jù)生態(tài)系統(tǒng)圖,而大數(shù)據(jù)行業(yè)卻不斷的發(fā)生著巨變,目前的這張圖應(yīng)該還算比較新了。

大數(shù)據(jù)

創(chuàng)業(yè)者們蜂擁至這個行業(yè),這個行業(yè)正變得越來越擁擠。Hadoop似乎已經(jīng)奠定了其作為整個大數(shù)據(jù)生態(tài)系統(tǒng)的關(guān)鍵部分,Spark是另一個基于內(nèi)存計算的開源分布式計算框架,它試圖填補(bǔ)Hadoop的弱項,提供更快的數(shù)據(jù)分析和良好的編程接口。

分析工具領(lǐng)域變得異?;钴S,數(shù)據(jù)應(yīng)用領(lǐng)域正如預(yù)測一樣逐漸成為重心。一些類別如數(shù)據(jù)庫無論是NoSQL還是NewSQL和社交數(shù)據(jù)分析正日趨成熟。

今天就先讓我們從眾多內(nèi)容當(dāng)中,先挑選一塊和大家探討探討,先從數(shù)據(jù)庫說起吧。

◎數(shù)據(jù)庫技術(shù) 傳統(tǒng)vs新型

從大的角度講,可以簡單的將數(shù)據(jù)庫分為兩類:

●傳統(tǒng)SMP架構(gòu)的數(shù)據(jù)庫,主要指代的是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,例如DB2、Postgrel,MySQL等。

●新型數(shù)據(jù)庫,主要指代為支持大規(guī)模數(shù)量集,高并發(fā)要求,高可擴(kuò)展性等孕育而生的新型數(shù)據(jù)庫。包括目前大數(shù)據(jù)生態(tài)當(dāng)中主流MPP,NoSQL,NewSQL數(shù)據(jù)庫等。

傳統(tǒng)數(shù)據(jù)庫和新型數(shù)據(jù)庫的一個主要區(qū)別是SMP架構(gòu)VS分布式/并行。

◎數(shù)據(jù)庫理論基礎(chǔ)

理論基礎(chǔ) - 服務(wù)器系統(tǒng)架構(gòu)

●SMP(Symmetric Multi-Processor)

SMP是對稱多處理器結(jié)構(gòu)的簡稱,指代多個CPU對稱工作,無主次或從屬關(guān)系。各個CPU共享相同的物理內(nèi)存,每個CPU訪問內(nèi)存中的任何地址的路徑是相同的(訪問的時間是相同的),因此SMP也被稱為一致存儲器訪問結(jié)構(gòu)(UMA: Uniform Memory Access)。

●NUMA(Non-Uniform Memory Access)

NUMA是非對稱的多處理結(jié)構(gòu),剛好與SMP相對,多個CPU工作時,對內(nèi)存的訪問路徑不同。NUMA架構(gòu)的提出主要是解決SMP架構(gòu)下多CPU擴(kuò)展的問題。

●MPP(Massive Parallel Processing)

和NUMA不同,MPP提供了另一種進(jìn)行系統(tǒng)擴(kuò)展的方式。它由多個SMP服務(wù)器通過一定的節(jié)點互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,協(xié)同工作,完成相同的任務(wù),從用戶的角度來看是一個服務(wù)器系統(tǒng)。

SMP和NUMA都主要指向單一的計算機(jī)系統(tǒng),而MPP則有點集群的意思了

理論基礎(chǔ) - ACID基本理論

●原子性(Atomic)

整個事務(wù)要么成功,要么失敗,杜絕部分成功

●一致性(Consistent)

事務(wù)的運(yùn)行并不改變數(shù)據(jù)庫中數(shù)據(jù)的一致性。例如,完整約束了a+b=10,一個事務(wù)改變了a,那么b也應(yīng)該隨之改變

●獨立性(lsolated)

也稱作隔離性,指兩個以上的事務(wù)不會出現(xiàn)交錯執(zhí)行的狀態(tài),因為這樣不可能會導(dǎo)致數(shù)據(jù)不一致

●持久性(Durable)

事務(wù)執(zhí)行成功以后,該事務(wù)所對數(shù)據(jù)庫做的更改便是持久的保存在數(shù)據(jù)庫之中,不會無緣無故的回滾

傳統(tǒng)基于關(guān)系模型的數(shù)據(jù)庫遵從ACID基本理論,而新型分布式數(shù)據(jù)庫則并不完全遵從該理論

理論基礎(chǔ) - 分布式CAP理論

  ●一致性(Consistent)

即數(shù)據(jù)的?一致性,簡單的說就是數(shù)據(jù)復(fù)制到N臺機(jī)器,如果有更新,要N臺機(jī)器的數(shù)據(jù)一起更新

●可用性(Availability)

在集群中一部分節(jié)點故障后,集群整體還能響應(yīng)客戶端的讀寫請求

●分區(qū)容錯性(Tolerance)

分區(qū)發(fā)生但不影響整個系統(tǒng)的運(yùn)行:

  基于傳統(tǒng)關(guān)系型模型數(shù)據(jù)庫更關(guān)注CA,新型NoSQL數(shù)據(jù)庫更關(guān)心CP,AP

◎數(shù)據(jù)庫分類與對比分析

根據(jù)體系架構(gòu)來分類

從數(shù)據(jù)庫的體系架構(gòu)來看,可以將數(shù)據(jù)庫分為:

●SMP Database

這類數(shù)據(jù)大多指代的是基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫模型的數(shù)據(jù)庫,比如IBM的DB2,Postgres,MySQL等

●MPP Database

基于MPP體系架構(gòu)的數(shù)據(jù)庫,例如Teradata, Greenplum, Netezza等

●Distribute Database

嚴(yán)格來講MPP也應(yīng)該屬于分布式數(shù)據(jù)庫,但這里更多指的是新型NoSQL和NewSQL數(shù)據(jù)庫,例如Hbase, Cassandra, Hive, mongoDB等

根據(jù)SQL支持來分類

根據(jù)數(shù)據(jù)庫對SQL的支持情況,可以將數(shù)據(jù)庫分為:

●SQL Database

而SQL數(shù)據(jù)又可以細(xì)分為:

?Old SQL傳統(tǒng)SQL數(shù)據(jù)庫

?New SQL新型SQL數(shù)據(jù)庫

?MPP

?SQL on Hadoop

●NoSQL Database

而NoSQL數(shù)據(jù)庫本身又是非常寬泛的,其又可以分為多種類型:

?Key-Value Database

?Document Database

?Column family Stores

?Graph Database

SQL,NewSQL and NoSQL

無論是「OldSQL」,「NewSQL」還是「NoSQL」,都是大數(shù)據(jù)解決方案中經(jīng)常提及的名詞。那么面對傳統(tǒng)的SQL數(shù)據(jù)庫, NoSQL數(shù)據(jù)存儲以及NewSQL數(shù)據(jù)該如何進(jìn)行選擇呢?其實,沒有任何一款可以應(yīng)對所有的應(yīng)用場景,應(yīng)該根據(jù)應(yīng)用場景選擇對的數(shù)據(jù)庫。

對于傳統(tǒng)的SQL數(shù)據(jù)庫來說,它已經(jīng)被使用了多年,成為了很多應(yīng)用服務(wù)過程中依賴的核心組件。如果對于自身的應(yīng)用來說它的運(yùn)行和性能表現(xiàn)是可接受的,那么其實是不需要考慮替換的。沒有必要的替換或更新只會引入更多的工作量,更大的風(fēng)險。對于傳統(tǒng)SQL數(shù)據(jù)庫而言,其優(yōu)勢主要體現(xiàn)在:

●提供了系統(tǒng)運(yùn)行多年的穩(wěn)定性和可靠性,對標(biāo)準(zhǔn)SQL的支持能力

●與ORM的兼容度

●擁有更加豐富的事務(wù)處理功能

●即席查詢的能力

●成熟而穩(wěn)定的商業(yè)生態(tài)

傳統(tǒng)SQL在過去一直處于市場的壟斷地位,但是隨著存儲,處理和分析的數(shù)據(jù)量指數(shù)倍的快速增長,對傳統(tǒng)SQL數(shù)據(jù)庫形成了非常大的挑戰(zhàn),其劣勢主要體現(xiàn)在:

●設(shè)計架構(gòu)決定了很難進(jìn)行擴(kuò)展,性能瓶頸往往局限在單機(jī)的處理能力上

●傳統(tǒng)SQL數(shù)據(jù)庫系統(tǒng)設(shè)計遵循的往往是通?用標(biāo)準(zhǔn)"one size fits all",因此在很多專用場景下也不是最優(yōu)的

●復(fù)雜的性能調(diào)優(yōu)參數(shù),需要在性能,數(shù)據(jù)安全,資源使用等多方面平衡,調(diào)優(yōu)成本非常高

對于NoSQL數(shù)據(jù)庫來說,它在目前的大數(shù)據(jù)生態(tài)和真實應(yīng)用場景中已經(jīng)越來越多的被廣泛的應(yīng)用。對非結(jié)構(gòu),半結(jié)構(gòu)化數(shù)據(jù)的支持使得在很多特定場景下的開發(fā)非常簡單,對于對SQL弱依賴的業(yè)務(wù),NoSQL的引入不但降低了本身的成本而且增加了系統(tǒng)的擴(kuò)展性和性能。其優(yōu)勢主要體現(xiàn)在:

●大多NoSQL設(shè)計遵從最終一致性,因此具有更高的可用性

●同時基于最終一致性的系統(tǒng)相比于傳統(tǒng)的OLAP關(guān)系型數(shù)據(jù)庫具有更好的負(fù)載擴(kuò)展性,支持更大的數(shù)據(jù)集

●很多NoSQL系統(tǒng)對于非關(guān)系性數(shù)據(jù),例如log messages, XML and JSON documents進(jìn)行了更多的優(yōu)化

盡管NoSQL數(shù)據(jù)庫技術(shù)目前發(fā)展非常迅速,應(yīng)用也越來越廣,但是其還是有自身的局限性:

●NoSQL數(shù)據(jù)庫基本上不支持事務(wù),也不遵從ACID。因此對于嚴(yán)格依賴ACID的應(yīng)用并不適用

●對OLAP-style的查詢并不能直接進(jìn)行很好的支持,需要更多應(yīng)用開發(fā)量

NewSQL也是目前比較流行的術(shù)語,與NoSQL相比還比較新。NewSQL系統(tǒng)基本上是基于關(guān)系數(shù)據(jù)庫模型的,對SQL的支持非常好,與此同時嘗試解決傳統(tǒng)SQL數(shù)據(jù)庫面臨的問題。NewSQL數(shù)據(jù)庫的設(shè)計目的不僅具有NoSQL對海量數(shù)據(jù)的存儲能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL等特征。NewSQL的主要優(yōu)勢是:

●減少了應(yīng)用研發(fā)和設(shè)計的復(fù)雜度,提供了強(qiáng)一致性和全事務(wù)支持

●對SQL的支持以及相應(yīng)的標(biāo)準(zhǔn)工具

●豐富的數(shù)據(jù)分析SQL支持和擴(kuò)展

●無需應(yīng)用層面大的改進(jìn)便可以在數(shù)據(jù)和查詢模型的基礎(chǔ)上提供類似NoSQLstyle集群方案的擴(kuò)展性和性能

于此同時,NewSQL也存在其自身的劣勢:

目前還沒有NewSQL系統(tǒng)具備像傳統(tǒng)SQL數(shù)據(jù)庫系統(tǒng)那樣的通用性

●由于NewSQL自身in-memory的系統(tǒng)架構(gòu)設(shè)計,在海量數(shù)據(jù)的支持上還是面臨很多技術(shù)和成本的挑戰(zhàn)

下表對OldSQL,NoSQL和NewSQL:

  MPP and Hadoop

對于MPP和Hadoop而言,很多人都會把兩者放在一起進(jìn)行比較,可實際上這兩者本身應(yīng)該不太具有可比性,因為并不完全是同類的產(chǎn)品,之所以會比較,可能是因為在特定的應(yīng)用場景下,我們不知道也不清楚該如何從他們之中進(jìn)行選擇。

無論是MPP數(shù)據(jù)庫還是Hadoop,其基礎(chǔ)架構(gòu)都是以分布式為基礎(chǔ)的。MPP數(shù)據(jù)庫本質(zhì)上是分布式并行關(guān)系型數(shù)據(jù)庫系統(tǒng),而Hadoop并不是一個簡單的單一系統(tǒng)或技術(shù),而是一個生態(tài)系統(tǒng),由多個組件和不同的功能構(gòu)建起來。

MPP數(shù)據(jù)庫的主要架構(gòu)特點是:

●分布式,基于網(wǎng)格計算技術(shù)

●Shared-nothing

●DAS(direct-attached storage)存儲特質(zhì)

●數(shù)據(jù)分區(qū)以及本地處理

●數(shù)據(jù)壓縮

●高性能網(wǎng)絡(luò)鏈接

對于MPP數(shù)據(jù)庫,它比較擅長的是:

●關(guān)系型數(shù)據(jù)

●批處理

●即席數(shù)據(jù)查詢分析

●低并發(fā)場景

●ANSI SQL支持度高

而與之不同的是,Hadoop?比較擅長的是:

●一次寫多次度

●100+以上節(jié)點集群規(guī)模

●支持關(guān)系型和非關(guān)系型數(shù)據(jù)

●具有非常高的并發(fā)性

批處理和分析負(fù)載

具有非常好的擴(kuò)展性

下表對MPP和Hadoop進(jìn)行了對比分析:

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號