大数据数据库技术简介与分类分析
說起大數(shù)據(jù)生態(tài),不得不提大數(shù)據(jù)生態(tài)系統(tǒng)圖,而大數(shù)據(jù)行業(yè)卻不斷的發(fā)生著巨變,目前的這張圖應(yīng)該還算比較新了。
創(chuàng)業(yè)者們蜂擁至這個(gè)行業(yè),這個(gè)行業(yè)正變得越來越擁擠。Hadoop似乎已經(jīng)奠定了其作為整個(gè)大數(shù)據(jù)生態(tài)系統(tǒng)的關(guān)鍵部分,Spark是另一個(gè)基于內(nèi)存計(jì)算的開源分布式計(jì)算框架,它試圖填補(bǔ)Hadoop的弱項(xiàng),提供更快的數(shù)據(jù)分析和良好的編程接口。
分析工具領(lǐng)域變得異常活躍,數(shù)據(jù)應(yīng)用領(lǐng)域正如預(yù)測(cè)一樣逐漸成為重心。一些類別如數(shù)據(jù)庫無論是NoSQL還是NewSQL和社交數(shù)據(jù)分析正日趨成熟。
今天就先讓我們從眾多內(nèi)容當(dāng)中,先挑選一塊和大家探討探討,先從數(shù)據(jù)庫說起吧。
◎數(shù)據(jù)庫技術(shù) 傳統(tǒng)vs新型
從大的角度講,可以簡(jiǎn)單的將數(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ù)庫的一個(gè)主要區(qū)別是SMP架構(gòu)VS分布式/并行。
◎數(shù)據(jù)庫理論基礎(chǔ)
理論基礎(chǔ) - 服務(wù)器系統(tǒng)架構(gòu)
●SMP(Symmetric Multi-Processor)
SMP是對(duì)稱多處理器結(jié)構(gòu)的簡(jiǎn)稱,指代多個(gè)CPU對(duì)稱工作,無主次或從屬關(guān)系。各個(gè)CPU共享相同的物理內(nèi)存,每個(gè)CPU訪問內(nèi)存中的任何地址的路徑是相同的(訪問的時(shí)間是相同的),因此SMP也被稱為一致存儲(chǔ)器訪問結(jié)構(gòu)(UMA: Uniform Memory Access)。
●NUMA(Non-Uniform Memory Access)
NUMA是非對(duì)稱的多處理結(jié)構(gòu),剛好與SMP相對(duì),多個(gè)CPU工作時(shí),對(duì)內(nèi)存的訪問路徑不同。NUMA架構(gòu)的提出主要是解決SMP架構(gòu)下多CPU擴(kuò)展的問題。
●MPP(Massive Parallel Processing)
和NUMA不同,MPP提供了另一種進(jìn)行系統(tǒng)擴(kuò)展的方式。它由多個(gè)SMP服務(wù)器通過一定的節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,協(xié)同工作,完成相同的任務(wù),從用戶的角度來看是一個(gè)服務(wù)器系統(tǒng)。
SMP和NUMA都主要指向單一的計(jì)算機(jī)系統(tǒng),而MPP則有點(diǎn)集群的意思了
理論基礎(chǔ) - ACID基本理論
●原子性(Atomic)
整個(gè)事務(wù)要么成功,要么失敗,杜絕部分成功
●一致性(Consistent)
事務(wù)的運(yùn)行并不改變數(shù)據(jù)庫中數(shù)據(jù)的一致性。例如,完整約束了a+b=10,一個(gè)事務(wù)改變了a,那么b也應(yīng)該隨之改變
●獨(dú)立性(lsolated)
也稱作隔離性,指兩個(gè)以上的事務(wù)不會(huì)出現(xiàn)交錯(cuò)執(zhí)行的狀態(tài),因?yàn)檫@樣不可能會(huì)導(dǎo)致數(shù)據(jù)不一致
●持久性(Durable)
事務(wù)執(zhí)行成功以后,該事務(wù)所對(duì)數(shù)據(jù)庫做的更改便是持久的保存在數(shù)據(jù)庫之中,不會(huì)無緣無故的回滾
傳統(tǒng)基于關(guān)系模型的數(shù)據(jù)庫遵從ACID基本理論,而新型分布式數(shù)據(jù)庫則并不完全遵從該理論
理論基礎(chǔ) - 分布式CAP理論
●一致性(Consistent)
即數(shù)據(jù)的?一致性,簡(jiǎn)單的說就是數(shù)據(jù)復(fù)制到N臺(tái)機(jī)器,如果有更新,要N臺(tái)機(jī)器的數(shù)據(jù)一起更新
●可用性(Availability)
在集群中一部分節(jié)點(diǎn)故障后,集群整體還能響應(yīng)客戶端的讀寫請(qǐng)求
●分區(qū)容錯(cuò)性(Tolerance)
分區(qū)發(fā)生但不影響整個(gè)系統(tǒng)的運(yùn)行:
基于傳統(tǒng)關(guān)系型模型數(shù)據(jù)庫更關(guān)注CA,新型NoSQL數(shù)據(jù)庫更關(guān)心CP,AP
◎數(shù)據(jù)庫分類與對(duì)比分析
根據(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ù)庫對(duì)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)常提及的名詞。那么面對(duì)傳統(tǒng)的SQL數(shù)據(jù)庫, NoSQL數(shù)據(jù)存儲(chǔ)以及NewSQL數(shù)據(jù)該如何進(jìn)行選擇呢?其實(shí),沒有任何一款可以應(yīng)對(duì)所有的應(yīng)用場(chǎng)景,應(yīng)該根據(jù)應(yīng)用場(chǎng)景選擇對(duì)的數(shù)據(jù)庫。
對(duì)于傳統(tǒng)的SQL數(shù)據(jù)庫來說,它已經(jīng)被使用了多年,成為了很多應(yīng)用服務(wù)過程中依賴的核心組件。如果對(duì)于自身的應(yīng)用來說它的運(yùn)行和性能表現(xiàn)是可接受的,那么其實(shí)是不需要考慮替換的。沒有必要的替換或更新只會(huì)引入更多的工作量,更大的風(fēng)險(xiǎn)。對(duì)于傳統(tǒng)SQL數(shù)據(jù)庫而言,其優(yōu)勢(shì)主要體現(xiàn)在:
●提供了系統(tǒng)運(yùn)行多年的穩(wěn)定性和可靠性,對(duì)標(biāo)準(zhǔn)SQL的支持能力
●與ORM的兼容度
●擁有更加豐富的事務(wù)處理功能
●即席查詢的能力
●成熟而穩(wěn)定的商業(yè)生態(tài)
傳統(tǒng)SQL在過去一直處于市場(chǎng)的壟斷地位,但是隨著存儲(chǔ),處理和分析的數(shù)據(jù)量指數(shù)倍的快速增長(zhǎng),對(duì)傳統(tǒng)SQL數(shù)據(jù)庫形成了非常大的挑戰(zhàn),其劣勢(shì)主要體現(xiàn)在:
●設(shè)計(jì)架構(gòu)決定了很難進(jìn)行擴(kuò)展,性能瓶頸往往局限在單機(jī)的處理能力上
●傳統(tǒng)SQL數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)遵循的往往是通?用標(biāo)準(zhǔn)"one size fits all",因此在很多專用場(chǎng)景下也不是最優(yōu)的
●復(fù)雜的性能調(diào)優(yōu)參數(shù),需要在性能,數(shù)據(jù)安全,資源使用等多方面平衡,調(diào)優(yōu)成本非常高
對(duì)于NoSQL數(shù)據(jù)庫來說,它在目前的大數(shù)據(jù)生態(tài)和真實(shí)應(yīng)用場(chǎng)景中已經(jīng)越來越多的被廣泛的應(yīng)用。對(duì)非結(jié)構(gòu),半結(jié)構(gòu)化數(shù)據(jù)的支持使得在很多特定場(chǎng)景下的開發(fā)非常簡(jiǎn)單,對(duì)于對(duì)SQL弱依賴的業(yè)務(wù),NoSQL的引入不但降低了本身的成本而且增加了系統(tǒng)的擴(kuò)展性和性能。其優(yōu)勢(shì)主要體現(xiàn)在:
●大多NoSQL設(shè)計(jì)遵從最終一致性,因此具有更高的可用性
●同時(shí)基于最終一致性的系統(tǒng)相比于傳統(tǒng)的OLAP關(guān)系型數(shù)據(jù)庫具有更好的負(fù)載擴(kuò)展性,支持更大的數(shù)據(jù)集
●很多NoSQL系統(tǒng)對(duì)于非關(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。因此對(duì)于嚴(yán)格依賴ACID的應(yīng)用并不適用
●對(duì)OLAP-style的查詢并不能直接進(jìn)行很好的支持,需要更多應(yīng)用開發(fā)量
NewSQL也是目前比較流行的術(shù)語,與NoSQL相比還比較新。NewSQL系統(tǒng)基本上是基于關(guān)系數(shù)據(jù)庫模型的,對(duì)SQL的支持非常好,與此同時(shí)嘗試解決傳統(tǒng)SQL數(shù)據(jù)庫面臨的問題。NewSQL數(shù)據(jù)庫的設(shè)計(jì)目的不僅具有NoSQL對(duì)海量數(shù)據(jù)的存儲(chǔ)能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL等特征。NewSQL的主要優(yōu)勢(shì)是:
●減少了應(yīng)用研發(fā)和設(shè)計(jì)的復(fù)雜度,提供了強(qiáng)一致性和全事務(wù)支持
●對(duì)SQL的支持以及相應(yīng)的標(biāo)準(zhǔn)工具
●豐富的數(shù)據(jù)分析SQL支持和擴(kuò)展
●無需應(yīng)用層面大的改進(jìn)便可以在數(shù)據(jù)和查詢模型的基礎(chǔ)上提供類似NoSQLstyle集群方案的擴(kuò)展性和性能
于此同時(shí),NewSQL也存在其自身的劣勢(shì):
目前還沒有NewSQL系統(tǒng)具備像傳統(tǒng)SQL數(shù)據(jù)庫系統(tǒng)那樣的通用性
●由于NewSQL自身in-memory的系統(tǒng)架構(gòu)設(shè)計(jì),在海量數(shù)據(jù)的支持上還是面臨很多技術(shù)和成本的挑戰(zhàn)
下表對(duì)OldSQL,NoSQL和NewSQL:
MPP and Hadoop
對(duì)于MPP和Hadoop而言,很多人都會(huì)把兩者放在一起進(jìn)行比較,可實(shí)際上這兩者本身應(yīng)該不太具有可比性,因?yàn)椴⒉煌耆峭惖漠a(chǎn)品,之所以會(huì)比較,可能是因?yàn)樵谔囟ǖ膽?yīng)用場(chǎng)景下,我們不知道也不清楚該如何從他們之中進(jìn)行選擇。
無論是MPP數(shù)據(jù)庫還是Hadoop,其基礎(chǔ)架構(gòu)都是以分布式為基礎(chǔ)的。MPP數(shù)據(jù)庫本質(zhì)上是分布式并行關(guān)系型數(shù)據(jù)庫系統(tǒng),而Hadoop并不是一個(gè)簡(jiǎn)單的單一系統(tǒng)或技術(shù),而是一個(gè)生態(tài)系統(tǒng),由多個(gè)組件和不同的功能構(gòu)建起來。
MPP數(shù)據(jù)庫的主要架構(gòu)特點(diǎn)是:
●分布式,基于網(wǎng)格計(jì)算技術(shù)
●Shared-nothing
●DAS(direct-attached storage)存儲(chǔ)特質(zhì)
●數(shù)據(jù)分區(qū)以及本地處理
●數(shù)據(jù)壓縮
●高性能網(wǎng)絡(luò)鏈接
對(duì)于MPP數(shù)據(jù)庫,它比較擅長(zhǎng)的是:
●關(guān)系型數(shù)據(jù)
●批處理
●即席數(shù)據(jù)查詢分析
●低并發(fā)場(chǎng)景
●ANSI SQL支持度高
而與之不同的是,Hadoop?比較擅長(zhǎng)的是:
●一次寫多次度
●100+以上節(jié)點(diǎn)集群規(guī)模
●支持關(guān)系型和非關(guān)系型數(shù)據(jù)
●具有非常高的并發(fā)性
批處理和分析負(fù)載
具有非常好的擴(kuò)展性
下表對(duì)MPP和Hadoop進(jìn)行了對(duì)比分析:
本文轉(zhuǎn)自d1net(轉(zhuǎn)載)
總結(jié)
以上是生活随笔為你收集整理的大数据数据库技术简介与分类分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5G有多恐怖?几秒钟可下载整部电影
- 下一篇: 静态自动检查代码缺陷与隐患