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