◎大數(shù)據(jù)生態(tài)
說起大數(shù)據(jù)生態(tài),不得不提大數(shù)據(jù)生態(tài)系統(tǒng)圖,而大數(shù)據(jù)行業(yè)卻不斷的發(fā)生著巨變,目前的這張圖應(yīng)該還算比較新了。
創(chuàng)業(yè)者們蜂擁至這個(gè)行業(yè),這個(gè)行業(yè)正變得越來(lái)越擁擠。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)域變得異?;钴S,數(shù)據(jù)應(yīng)用領(lǐng)域正如預(yù)測(cè)一樣逐漸成為重心。一些類別如數(shù)據(jù)庫(kù)無(wú)論是NoSQL還是NewSQL和社交數(shù)據(jù)分析正日趨成熟。
今天就先讓我們從眾多內(nèi)容當(dāng)中,先挑選一塊和大家探討探討,先從數(shù)據(jù)庫(kù)說起吧。
◎數(shù)據(jù)庫(kù)技術(shù) 傳統(tǒng)vs新型
從大的角度講,可以簡(jiǎn)單的將數(shù)據(jù)庫(kù)分為兩類:
●傳統(tǒng)SMP架構(gòu)的數(shù)據(jù)庫(kù),主要指代的是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),例如DB2、Postgrel,MySQL等。
●新型數(shù)據(jù)庫(kù),主要指代為支持大規(guī)模數(shù)量集,高并發(fā)要求,高可擴(kuò)展性等孕育而生的新型數(shù)據(jù)庫(kù)。包括目前大數(shù)據(jù)生態(tài)當(dāng)中主流MPP,NoSQL,NewSQL數(shù)據(jù)庫(kù)等。
傳統(tǒng)數(shù)據(jù)庫(kù)和新型數(shù)據(jù)庫(kù)的一個(gè)主要區(qū)別是SMP架構(gòu)VS分布式/并行。
◎數(shù)據(jù)庫(kù)理論基礎(chǔ)
理論基礎(chǔ) - 服務(wù)器系統(tǒng)架構(gòu)
●SMP(Symmetric Multi-Processor)
SMP是對(duì)稱多處理器結(jié)構(gòu)的簡(jiǎn)稱,指代多個(gè)CPU對(duì)稱工作,無(wú)主次或從屬關(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ù),從用戶的角度來(lái)看是一個(gè)服務(wù)器系統(tǒng)。
SMP和NUMA都主要指向單一的計(jì)算機(jī)系統(tǒng),而MPP則有點(diǎn)集群的意思了
理論基礎(chǔ) - ACID基本理論
●原子性(Atomic)
整個(gè)事務(wù)要么成功,要么失敗,杜絕部分成功
●一致性(Consistent)
事務(wù)的運(yùn)行并不改變數(shù)據(jù)庫(kù)中數(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ù)庫(kù)做的更改便是持久的保存在數(shù)據(jù)庫(kù)之中,不會(huì)無(wú)緣無(wú)故的回滾
傳統(tǒng)基于關(guān)系模型的數(shù)據(jù)庫(kù)遵從ACID基本理論,而新型分布式數(shù)據(jù)庫(kù)則并不完全遵從該理論
理論基礎(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ù)庫(kù)更關(guān)注CA,新型NoSQL數(shù)據(jù)庫(kù)更關(guān)心CP,AP
◎數(shù)據(jù)庫(kù)分類與對(duì)比分析
根據(jù)體系架構(gòu)來(lái)分類
從數(shù)據(jù)庫(kù)的體系架構(gòu)來(lái)看,可以將數(shù)據(jù)庫(kù)分為:
●SMP Database
這類數(shù)據(jù)大多指代的是基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)模型的數(shù)據(jù)庫(kù),比如IBM的DB2,Postgres,MySQL等
●MPP Database
基于MPP體系架構(gòu)的數(shù)據(jù)庫(kù),例如Teradata, Greenplum, Netezza等
●Distribute Database
嚴(yán)格來(lái)講MPP也應(yīng)該屬于分布式數(shù)據(jù)庫(kù),但這里更多指的是新型NoSQL和NewSQL數(shù)據(jù)庫(kù),例如Hbase, Cassandra, Hive, mongoDB等
根據(jù)SQL支持來(lái)分類
根據(jù)數(shù)據(jù)庫(kù)對(duì)SQL的支持情況,可以將數(shù)據(jù)庫(kù)分為:
●SQL Database
而SQL數(shù)據(jù)又可以細(xì)分為:
?Old SQL傳統(tǒng)SQL數(shù)據(jù)庫(kù)
?New SQL新型SQL數(shù)據(jù)庫(kù)
?MPP
?SQL>