1、OcceanBase是什麼redis
如下是oschina的介紹:sql
OceanBase是一個支持海量數據的高性能分佈式數據庫系統,實現了數千億條記錄、數百TB數據上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發等部門共同完成。在設計和實現OceanBase的時候暫時摒棄了不緊急的DBMS的功能,例如臨時表,視圖(view),研發團隊把有限的資源集中到關鍵點上,當前 OceanBase主要解決數據更新一致性、高性能的跨表讀事務、範圍查詢、join、數據全量及增量dump、批量數據導入。
OcceanBase是淘寶開源的一個分佈式關係數據庫,如下是其官方地址:https://oceanbase.alipay.com/緩存
2、OcceanBase的開發背景服務器
咱們來大概瞭解下淘寶爲何要開發這個數據庫,在去IOE以後,淘寶核心場景都使用了Mysql,Mysql的好處是免費,而且能夠運行在普通PC機上,但Mysql的擴展性是個大問題,雖然能夠經過分庫分表等中間件來作,但這些中間件多多少少有以下問題:架構
一、運維複雜
由於引入新的中間件,因此係統鏈路會延長,而且運維的工做量增長,須要對Mysql中間件作好監控,配置等操做。 運維
二、擴容麻煩分佈式
現有Mysql中間件擴容都比較複雜,即若是某個表原來分紅8張子表,如今業務量增大,須要再增長即擴充成16張表,總體過程操做比較複雜,須要運維、開發一塊兒配合,而且可能有很多手工操做,整個過程工做量大而且容易出錯,對於淘寶前幾年業務量增加迅猛的狀況下確定就不適合了。性能
固然還有其餘緣由,但主要是以上2點。 優化
3、OcceanBase功能介紹
咱們看下Occeanbase有哪些功能:
一、兼容MySQL 協議
兼容MySQL 5.6 版本大部分功能;
由於現有業務大量使用Mysql,若是業務升級還要改代碼,則升級就會有很多阻力,因此設計的時候就採起兼容的方案,這樣業務方只改改配置就能夠快速上線了。
二、分佈式,可水平擴展
注意:擴容時不停機這個功能,這個主要就是解決上面說的問題2的。
三、高可用
基於 Paxos 協議,少數派故障,數據不丟,服務不停;
這個是趨勢,Mysql官方8.0也有這個功能了。
四、強一致
五、高性能
4、總體架構分析
接下來咱們分析Occeanbase的架構設計,是如何作到這麼高性能,又強一致的。
先看下總體架構
RootServer:管理集羣中全部服務器,及數據分佈和副本管理,即元數據服務器;
UpdateServer:存儲OcceanBase增量更新數據;
ChunkSerrver:存儲基線數據,即不會變的數據;
MergeServer:接入用戶請求,作完詞法分析、查詢優化等工做後轉發給ChunkServer或UpdateServer;
能夠看到,整個OcceanBase的計算和存儲是分離的,MergeServer負責計算,ChunkServer和UpdateServer負責存儲。
另外元數據是中心化的,這個也是目前分佈式系統設計的趨勢,只要元數據不要參與每一次請求,經過客戶端緩存、增量更新等措施能夠大大減小元數據服務器的壓力。
OcceanBase獨特的設計在於將增量更新數據全放到UpdateServer上 。
這個設計也決定了OcceanBase使用場景爲一段時間更新不是特別多,像電商主要是寫少讀多,特別適合這樣的場景。
這個設計有好有壞,好處有:
一、完美地支持分佈式事務
由於修改只在一次,就不存在數據同步和一致性的問題,事務就能夠很好地支持,這樣的設計也是爲了淘寶這樣的場景:一段時間內寫入很少,但又要求強一致性
二、大大簡化系統設計
由於淘寶的場景是讀多寫少,在總體OcceanBase架構裏寫是單點,但讀是可充的,即一段時間內沒有修改,直接從ChunkServer返回,根本不用走到UpdateServer,而ChunkServer是能夠水平擴充的,這樣就能夠在支持業務的條件下簡化系統的設計,不用作數據同步,面對分佈式鎖等複雜問題。
固然這麼設計的弊端也很明顯,最大的問題就是單點,即總體系統寫入都必須通過UpdateServer,但UpdateServer又沒法水平擴容,固然OcceanBase作了不少設計來減小UpdateServer的負擔,像讀寫分離,按期整理基線數據,這個後面慢慢分析。