剛才我就給大家講了一下我們整體的大數(shù)據(jù)推動IT架構變革的整個情況。下面給大家重點介紹一下MPP數(shù)據(jù)庫的主流技術??赡艽蠹矣行┤诉€不太明白,MPP究竟是什么意思?它就是大規(guī)模并行處理系統(tǒng),系統(tǒng)有許多松偶合處理單元組成,每個單元內(nèi)的CPU都有自己私有的資源,如總線、內(nèi)存、硬盤等。在每個單元內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫的實例副本,這種結構最大的特點在于不共享資源。MPP這個架構,對應有一個SMP,那個架構它的CPU是共享內(nèi)存,所以它不容易擴展,因為每個CPU都要共享內(nèi)存,MPP是在這個單元內(nèi)的CPU不占內(nèi)存,而彼此之間,每個單元之間是松偶合的,基本上我們認為每個單元就是一個獨立的服務器,就是多個服務器的節(jié)點,把它組合起來進行并行處理。
對于MPP的數(shù)據(jù)庫,它應該具有Shared Nothing架構,任務并行執(zhí)行,數(shù)據(jù)分布式存儲,分布式計算,橫向擴展,這個橫向擴展非常重要。MPP的架構它像我們新型的NoSQL的產(chǎn)品,它選用MPP架構,Hadoop產(chǎn)品也是MPP的架構。我們這里給大家講的MPP數(shù)據(jù)庫是指NewSQL這個陣營里的產(chǎn)品。
我們一般大數(shù)據(jù)的平臺分為四層,分為基礎設施層、采集和預處理層,還有數(shù)據(jù)處理平臺,以及上層的應用平臺。我們MPP數(shù)據(jù)庫就是在處理平臺上,它跟傳統(tǒng)的事務型數(shù)據(jù)庫,以及Hadoop它們一起都是做數(shù)據(jù)處理的。我們知道MPP技術不是說現(xiàn)在才提出來的,它是很早,在我們80年代的時候,大機時代學術界就已經(jīng)提出它是解決數(shù)據(jù)的一種方式。但是,確實有這么多數(shù)據(jù)的時候,新一代的數(shù)據(jù)處理技術都要選擇MPP這個架構呢?主要是來自于它支撐它的軟硬件的發(fā)展。首先,是Internet推動了網(wǎng)絡技術的發(fā)展,并且性價比不斷的提升。我們知道現(xiàn)在的網(wǎng)絡,千兆支持到萬兆,甚至支持到四萬兆的網(wǎng)絡,相對來說交換機、網(wǎng)卡的價格確實在下滑的。另外,對于支撐我們數(shù)據(jù)庫的服務器它也是在不斷的發(fā)展,它現(xiàn)在基本上都能支持多核、多CPU的這種技術,而且支持大內(nèi)存,現(xiàn)在有120G、256G的。所以,這塊PC服務器價格本來就便宜,但是它的性能不斷的提升,能達到類似小型機的性能,而且支持數(shù)據(jù)庫產(chǎn)品的操作系統(tǒng),Linux系統(tǒng)也是不斷的成熟。這些都推動了MPP的技術有了可靠的基礎。大數(shù)據(jù)它的數(shù)據(jù)爆炸式的增長,以前單個SMP系統(tǒng)已經(jīng)無法應付數(shù)據(jù)增長帶來的壓力。所以,我們必須要有新的技術了。所以,基于的大數(shù)據(jù)平臺技術一般都是訓練MPP的架構。
MPP的數(shù)據(jù)庫我們認為它要維持關系型的模型。SQL就像是我們在數(shù)據(jù)庫的行業(yè)里頭大家說的普通話,經(jīng)過這么多年的發(fā)展,SQL已經(jīng)成為大家做英文開發(fā)的一種標準的語言,如果新的數(shù)據(jù)庫產(chǎn)品不支持,就聽不懂人家說的話了,所以我們認為MPP數(shù)據(jù)庫應該支持SQL92的標準,甚至要做一些擴充,另外它也必須支持存儲過程,因為很多處理都是寫到存儲過程由數(shù)據(jù)庫來完成運算的。所以,雖然是一個新的數(shù)據(jù)庫也必須要支持這個過程。另外,我們也要支持事務,以及ACID的約束,ACID主要指一個事務執(zhí)行的原則性、一致性、隔離性和持久性。分布式的架構自然也要遵守CAP的原則。主要是MPP廠家告訴我的,他們認為C就是一致性,A是可用性,P是分區(qū)容忍性。理論上說這三個在分布式架構里頭不能三個都支持,只能三選二。我們作為一個分布式數(shù)據(jù)庫,當你出現(xiàn)異常的情況,就要選你是支持C,還是支持。MPP數(shù)據(jù)庫一般會選擇C,就是一致性,當出現(xiàn)故障的時候,會有意識把一些功能讓它減弱,然后用同步機制修復這個節(jié)點,等節(jié)點恢復以后它再正式的運行。我們知道傳統(tǒng)的關系型數(shù)據(jù)庫其實它支持的是CA,是一致性和可用性的。
數(shù)據(jù)庫架構的發(fā)展趨勢,就是從單機到分布式,最早是單機分布式,特點是計算集中、存儲集中。后來要提升性能,出現(xiàn)了Shared DIS(音譯)數(shù)據(jù)庫,最單行的就是Oracle數(shù)據(jù)庫,這個也能滿足一定的大數(shù)據(jù)的需求,但是它有一個問題的,上層的節(jié)點數(shù)增加,都要到統(tǒng)一的磁盤上來取,瓶頸就會在共享數(shù)據(jù)這個磁盤上。另外,這種也無法避免單點故障,萬一數(shù)據(jù)壞了,上層的節(jié)點數(shù)也多沒有用。數(shù)據(jù)體量再大的情況下已經(jīng)超出了你這樣架構的限制了,已經(jīng)存不下了,我們再發(fā)展就是MPP+Shared Nothing架構的。單臺服務器的處理性能是有限的,我們的數(shù)據(jù)也是有限的,這樣就是我正好數(shù)據(jù)也小,正好普通的PC服務器就能處理有限的數(shù)量的數(shù)據(jù),我這個架構好處在于我可以擴展好多個節(jié)點,通過這些節(jié)點并行運算得出最終的結果。像Hadoop也是這種架構。從用戶的角度來說,共享架構一般是采用小型機,硬件成本都是上千萬的級別。我們現(xiàn)在用Shared Nothing和MPP架構可以用普通的低成本的X86 PC服務器就可以滿足。后續(xù)數(shù)據(jù)量再大的時候還可以投入橫向擴展,有擴展能力。所以,現(xiàn)在MPP數(shù)據(jù)庫也成為大數(shù)據(jù)的選型之一。