OceanBase是阿里開發(fā)的
分布式關(guān)系型數(shù)據(jù)庫(SQL)。它的目標(biāo)是支持?jǐn)?shù)百萬億字節(jié)的數(shù)據(jù)和數(shù)十萬TPS以及數(shù)百萬次QPS訪問。無論是數(shù)據(jù)量還是訪問量,即使是非常昂貴的小型機(jī)甚至大型機(jī),也買不起一個單獨的關(guān)系數(shù)據(jù)庫系統(tǒng)。
案例:OceanBase分布式關(guān)系型數(shù)據(jù)庫度過了一個成功的雙十一:已經(jīng)支持了支付寶的核心交易、支付、會員、賬戶,并刷新了紀(jì)錄:每秒17.5萬筆交易,每秒12萬筆交易,全天累計支付10.5億筆。
1、高可擴(kuò)展性
傳統(tǒng)的分布式關(guān)系型數(shù)據(jù)庫,如Oracle或MySQL,功能完善,但數(shù)據(jù)庫本身無法擴(kuò)展。隨著數(shù)據(jù)量的增加和業(yè)務(wù)內(nèi)容的豐富,需要對數(shù)據(jù)庫和表進(jìn)行反匯編,然后將相應(yīng)的SQL訪問和路由到指定的數(shù)據(jù)庫。數(shù)據(jù)庫運維人員需要花費大量的時間對數(shù)據(jù)庫進(jìn)行擴(kuò)展,包括讀寫分離、垂直拆分、水平拆分等等。
分布式關(guān)系型數(shù)據(jù)庫使用分布式技術(shù)和無共享架構(gòu)。來自業(yè)務(wù)的訪問將自動分配給多個數(shù)據(jù)庫主機(jī)。在相關(guān)技術(shù)的支持下,OceanBase還可以使用廉價的PC服務(wù)器作為其數(shù)據(jù)庫主機(jī)。通過這兩個變化,運維人員可以高高興興地通過增加服務(wù)器的數(shù)量來提高系統(tǒng)的容量和性能。
2、成本低
傳統(tǒng)商業(yè)
企業(yè)采用的“IOE”系統(tǒng)實際上代表了一種高成本、高維護(hù)、非高并發(fā)的商業(yè)數(shù)據(jù)庫系統(tǒng)。尤其是隨著數(shù)據(jù)越來越多,硬件升級和維護(hù)的成本會越來越驚人。阿里巴巴采用了數(shù)據(jù)分段的策略,將一些海量數(shù)據(jù)應(yīng)用從集中式的Oracle切換到分布式集群,從縱向擴(kuò)展到橫向,解決了數(shù)據(jù)庫的可擴(kuò)展性問題,用PC服務(wù)器替代了小型機(jī)。
由此帶來的一個重要變化就是成本的大幅降低。與分布式關(guān)系型數(shù)據(jù)庫 company的傳統(tǒng)產(chǎn)品相比,OceanBase的升級和維護(hù)不需要昂貴的共享存儲、高可靠的服務(wù)器和數(shù)據(jù)庫軟件的許可費,可以將商用數(shù)據(jù)庫的成本降低到一半以下。
3、高可靠性
分布式關(guān)系型數(shù)據(jù)庫系統(tǒng)通常由數(shù)據(jù)庫軟件、運行數(shù)據(jù)庫軟件的數(shù)據(jù)庫服務(wù)器硬件和用于存儲數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)庫存儲硬件(即共享存儲)組成。數(shù)據(jù)庫的穩(wěn)定性和可靠性也取決于這三個部分。使用PC服務(wù)器可以帶來高可擴(kuò)展性,降低成本,但其硬件的可靠性相應(yīng)降低。
如何保證系統(tǒng)的可靠性?
分布式關(guān)系型數(shù)據(jù)庫的一個基本假設(shè)是硬件(服務(wù)器、存儲、網(wǎng)絡(luò)等。)不靠譜。因此,OceanBase必須確保少量硬件(服務(wù)器、存儲、網(wǎng)絡(luò)等。)任何時候發(fā)生的異常都不會影響業(yè)務(wù)。
為此,OceanBase分布式關(guān)系型數(shù)據(jù)庫推出了Paxos協(xié)議。每一個事務(wù),在主庫執(zhí)行之后,都必須同步到一半以上的庫(包括主庫本身),比如三個庫中的兩個或者五個庫中的三個,事務(wù)才算成功。這樣在少數(shù)庫(比如3個中的1個庫或者5個中的2個庫)出現(xiàn)異常后,業(yè)務(wù)不會受到影響。
Paxos是一種分布式事務(wù)一致性協(xié)議,主要用于保證分布式系統(tǒng)中數(shù)據(jù)的可靠性。當(dāng)多數(shù)已經(jīng)成功的機(jī)器,只要壞了的機(jī)器是少數(shù),少數(shù)就是三分之一,多數(shù)就是二分之一。三臺機(jī)器有兩臺是成功的,你可以告訴用戶這個數(shù)據(jù)不會丟失。此時,這臺機(jī)器可能會損壞,但如果任何一臺機(jī)器損壞,至少會有另一臺機(jī)器恢復(fù)。這是系統(tǒng)內(nèi)的自動災(zāi)難恢復(fù)。如果哪個機(jī)器壞了,或者有一個機(jī)器掉隊了,比如其中三個成功后,把另外兩個拖過來,數(shù)據(jù)就補(bǔ)上了,肯定能保證另外兩個沒問題,最后三個也沒問題,所以一個機(jī)器壞了也不會有問題。
在軟件層面,OceanBase區(qū)別于傳統(tǒng)分布式關(guān)系型數(shù)據(jù)庫的一個關(guān)鍵特點是軟件版本的灰度升級。
主備模式的傳統(tǒng)數(shù)據(jù)庫是“單活”的,只有主數(shù)據(jù)庫可以進(jìn)行寫事務(wù),雖然在維護(hù)和升級時可以先操作備份數(shù)據(jù)庫。操作完成后,備份數(shù)據(jù)庫成為主數(shù)據(jù)庫,接受用戶訪問,業(yè)務(wù)一步到位就會受到影響。如果新版本有問題:
傳統(tǒng)數(shù)據(jù)庫:升級后,所有讀寫流量只能引入一次。
OceanBase是“多活”設(shè)計,即多個庫(3、5等。)都可以有部分讀寫流量。升級時,先切斷待升級庫的讀寫流量,對比升級后的數(shù)據(jù),正常后再逐步引入讀寫流量。一切正常并運行一段時間后,升級其他庫:
基于硬件不可靠,可以容忍少數(shù)服務(wù)器故障的假設(shè),OceanBase使用相對便宜的PC服務(wù)器,而不是高可靠性的服務(wù)器,不再使用昂貴的共享存儲,因此不僅提供了比使用高可靠性服務(wù)器和共享存儲低得多的成本,而且容忍少數(shù)服務(wù)器甚至少數(shù)集群的故障也意味著比傳統(tǒng)數(shù)據(jù)庫更高的可靠性。
通過灰度升級,OceanBase避免了傳統(tǒng)數(shù)據(jù)庫的升級,大大降低了分布式關(guān)系型數(shù)據(jù)庫維護(hù)升級的風(fēng)險。
4、數(shù)據(jù)的準(zhǔn)確性
許多互聯(lián)網(wǎng)服務(wù)可以允許一定的數(shù)據(jù)錯誤,但電子商務(wù)(如交易、金融領(lǐng)域等。)不同于一般的互聯(lián)網(wǎng)公司,對數(shù)據(jù)的一致性要求非常高。比如要保證錢的流入流出匹配,不能丟失任何支付數(shù)據(jù)(阿里巴巴用OceanBase做支付寶系統(tǒng))。
分布式關(guān)系型數(shù)據(jù)庫的設(shè)計不同于經(jīng)典的關(guān)系數(shù)據(jù)庫,讀事務(wù)基本上是分布式并發(fā)執(zhí)行的,而寫事務(wù)目前是集中式串行的,也就是可序列化的,任何寫事務(wù)在提交前對其他讀寫事務(wù)都是不可見的,所以O(shè)ceanBase是強(qiáng)一致的。這樣,在設(shè)計方案中就可以保證沒有數(shù)據(jù)丟失。