容器技術(shù),以及與容器技術(shù)緊密相關(guān)的DevOps、微服務(wù)等技術(shù)非常流行,被許多人認(rèn)為是繼虛擬化技術(shù)之后,IT基礎(chǔ)設(shè)施領(lǐng)域的又一大創(chuàng)新,對于企業(yè)敏態(tài)業(yè)務(wù)發(fā)展至關(guān)重要,圍繞容器技術(shù)需要企業(yè)IT架構(gòu)作出調(diào)整,對于數(shù)據(jù)庫的需求也有很大改變。

王濤提到,很多企業(yè)都在從基于傳統(tǒng)數(shù)據(jù)庫的煙囪式開發(fā)向微服務(wù)架構(gòu)轉(zhuǎn)型,微服務(wù)體系架構(gòu)中,每個微服務(wù)都需要提供數(shù)據(jù)持久化能力,用戶希望每個微服務(wù)所應(yīng)對的數(shù)據(jù)量能夠無限彈性擴(kuò)張。

支撐微服務(wù)的話,是用集中式數(shù)據(jù)庫還是分布式數(shù)據(jù)庫呢?

王濤介紹說,如果使用傳統(tǒng)集中式數(shù)據(jù)庫,那么對于應(yīng)用程序的改造相對比較小,對DBA運(yùn)維人員的成本比較低,但由于數(shù)據(jù)緊耦合,既無法彈性擴(kuò)張,又可能存在的單點(diǎn)故障的隱患。

另一種做法是每個微服務(wù)對應(yīng)一個獨(dú)立的小數(shù)據(jù)庫,比如使用MySQL或PostgreSQL,這樣能夠解決集中式存儲的問題,但因?yàn)槊總€微服務(wù)都使用獨(dú)立的數(shù)據(jù)庫,會使原本集中的數(shù)據(jù)分散到很多不同的設(shè)備中,會造成數(shù)據(jù)極度碎片化,數(shù)據(jù)在微服務(wù)之間無法共享,而且運(yùn)維成本極其高昂。

碎片化帶來什么難題呢?

王濤介紹說,一些互聯(lián)網(wǎng)公司生產(chǎn)系統(tǒng)中維護(hù)著兩三萬套MySQL數(shù)據(jù)庫,這樣的架構(gòu)下想要進(jìn)行企業(yè)內(nèi)部的數(shù)據(jù)整合視圖是極為困難的事兒。數(shù)字化轉(zhuǎn)型時代,數(shù)據(jù)是企業(yè)的核心資產(chǎn),在大數(shù)據(jù)以及基于數(shù)據(jù)的人工智能技術(shù)在企業(yè)逐步落地和發(fā)展的過程中,這樣的數(shù)據(jù)架構(gòu)顯然是有很大問題的。

巨杉數(shù)據(jù)庫的分布式數(shù)據(jù)庫能很好地解決這一問題。一方面,分布式數(shù)據(jù)庫解決數(shù)據(jù)的彈性擴(kuò)張的問題,使每個微服務(wù)可以不受底層數(shù)據(jù)存儲限制進(jìn)行擴(kuò)容。另一方面,可以解決微服務(wù)應(yīng)用架構(gòu)中數(shù)據(jù)嚴(yán)重碎片化的問題。

巨杉分布式數(shù)據(jù)庫如何解決這一問題的呢?

巨杉分布式數(shù)據(jù)庫的做法是用統(tǒng)一的分布式數(shù)據(jù)庫做底座,上層可以創(chuàng)建成百上千個數(shù)據(jù)庫實(shí)例,同時,應(yīng)用無需感知每個數(shù)據(jù)庫實(shí)例底下對應(yīng)的資源。

對單個應(yīng)用來說,這樣的數(shù)據(jù)庫與傳統(tǒng)標(biāo)準(zhǔn)數(shù)據(jù)庫完全一致,但是又能做到彈性伸縮。管理方面,所有的物理設(shè)備從邏輯上進(jìn)行統(tǒng)一管理,降低管理成本。數(shù)據(jù)共享方面,不同實(shí)例里的數(shù)據(jù)可以進(jìn)行共享。

這樣的分布式數(shù)據(jù)庫既兼容了傳統(tǒng)數(shù)據(jù)庫技術(shù),同時又是面向未來的。

在兼容傳統(tǒng)數(shù)據(jù)庫方面,作為金融級數(shù)據(jù)庫,巨杉數(shù)據(jù)庫有完整的ACID支持,事務(wù)和一致性保證,而且,巨杉數(shù)據(jù)庫完整支持SQL語句,與傳統(tǒng)數(shù)據(jù)庫如MySQL/PostgreSQL的語法完全兼容,用戶和管理員可以像以往一樣用數(shù)據(jù)庫,應(yīng)用程序也無需做什么改動。

完整的ACID支持意味著能同時支持一致性和安全性,王濤強(qiáng)調(diào)“絕對不能為了上分布式犧牲數(shù)據(jù)的一致性和安全性”,他認(rèn)為,新型面向聯(lián)機(jī)交易的分布式數(shù)據(jù)庫必須對傳統(tǒng)ACID有完美的支持,與傳統(tǒng)Oracle DB2的數(shù)據(jù)安全性一致性保持兼容。

在面向未來的新特性方面,巨杉數(shù)據(jù)庫有三點(diǎn)創(chuàng)新:

第一個是分布式與擴(kuò)展性,這其實(shí)是分布式數(shù)據(jù)庫的核心價值,它可以根據(jù)數(shù)據(jù)量的變化,實(shí)現(xiàn)存儲層和計(jì)算層的彈性擴(kuò)展,能在數(shù)據(jù)庫的層面以服務(wù)資源池的形式提供數(shù)據(jù)庫訪問能力。

第二個在于多模式訪問接口,其實(shí)主要就是因?yàn)槿缃竦姆?wù)類型、應(yīng)用需求等多樣化,對數(shù)據(jù)庫接口類型的要求也日益多樣化,所以,分布式數(shù)據(jù)庫要支持多類型數(shù)據(jù)管理和多種模式的訪問接口。這點(diǎn)與分布式存儲也非常類似,面對多樣化的應(yīng)用,存儲也需要多元化的接口類型。

第三個方面其實(shí)考量共享架構(gòu)的資源隔離問題,當(dāng)一個數(shù)據(jù)庫同時處理HTAP交易和分析混合處理業(yè)務(wù)時候,如何不影響聯(lián)機(jī)交易業(yè)務(wù)的性能表現(xiàn)?巨杉分布式數(shù)據(jù)庫的資源池內(nèi)可對交易與分析業(yè)務(wù)進(jìn)行物理資源隔離實(shí)現(xiàn)數(shù)據(jù)的物理隔離,性能方面互不干擾。

作為一款金融級的關(guān)系型數(shù)據(jù)庫,巨杉數(shù)據(jù)庫在數(shù)據(jù)安全和容災(zāi)方面也頗有造詣。巨杉數(shù)據(jù)庫原生支持?jǐn)?shù)據(jù)庫內(nèi)核級別的高可用以及跨數(shù)據(jù)中心災(zāi)備能力,目前已經(jīng)實(shí)現(xiàn)異地容災(zāi)備份,可滿足“三地五中心”的容災(zāi)支持。同時,巨杉數(shù)據(jù)庫在異地容災(zāi)基礎(chǔ)上,實(shí)現(xiàn)了數(shù)據(jù)異地多活,目前已經(jīng)實(shí)現(xiàn)雙中心同時讀寫,中心切換RPO為0和RTO達(dá)到秒級,提供了“超金融級”的數(shù)據(jù)安全保障。

分布式數(shù)據(jù)庫的演進(jìn)

分布式的概念已有很多年,分布式存儲,分布式數(shù)據(jù)庫都是如此,分布式數(shù)據(jù)庫在歷經(jīng)多年的發(fā)展當(dāng)中不斷迭代,分布式數(shù)據(jù)庫技術(shù)發(fā)展體系可分為三類:垂直分庫、分庫分表和原生分布式數(shù)據(jù)庫。

王濤介紹說,最傳統(tǒng)的是垂直分庫,通過定義好的應(yīng)用規(guī)則,按照規(guī)則找到數(shù)據(jù)庫實(shí)例,然后再直接獲取連接進(jìn)行查詢。這種方式的缺點(diǎn)在于,跨數(shù)據(jù)庫的事務(wù)難以實(shí)現(xiàn),需要非常多的定制化開發(fā)。

還有一種方式是分庫分表。做法是在應(yīng)用程序和數(shù)據(jù)庫之間構(gòu)建一個SQL解析服務(wù),將SQL翻譯成底層每個數(shù)據(jù)庫所看得懂的子查詢,把查詢下發(fā)給底層的傳統(tǒng)數(shù)據(jù)庫。這種機(jī)制是從集中式架構(gòu)到分布式架構(gòu)的過渡狀態(tài),同時,由于對于應(yīng)用無法做到完全透明,一般來說需要在應(yīng)用拼裝SQL的時候指定很多參數(shù)或比較獨(dú)特的語法。

最后一種則是通常所說的原生分布式數(shù)據(jù)庫,常見的有巨杉和螞蟻金服的OceanBase分布式數(shù)據(jù)庫。原生分布式數(shù)據(jù)庫是底層完全從零開始研發(fā),完全拋棄小型機(jī)體系,基于PC服務(wù)器硬件架構(gòu)設(shè)計(jì)的分布式數(shù)據(jù)庫,將高可用、容災(zāi)、分布式等機(jī)制天然融入到數(shù)據(jù)存儲體系的方方面面。

以巨杉數(shù)據(jù)庫為例,能夠保證在與MySQL 100%兼容的前提下實(shí)現(xiàn)對應(yīng)用完全透明的分布式能力。開發(fā)者不需要關(guān)注一個表存了幾億還是十幾億記錄,只要在建表的時候配置好容量和橫跨多少臺物理設(shè)備,數(shù)據(jù)即可自動在庫內(nèi)進(jìn)行均衡,從應(yīng)用來看就像訪問標(biāo)準(zhǔn)的表一樣直接進(jìn)行讀寫請求。

SequoiaDB v3.2版本在分布式存儲層和數(shù)據(jù)庫實(shí)例層均增加了許多新特性。底層的分布式存儲層作為資源池,負(fù)責(zé)數(shù)據(jù)存儲、分布式事務(wù)控制等,數(shù)據(jù)庫實(shí)例層則提供對上層應(yīng)用程序的SQL服務(wù),用戶可創(chuàng)建結(jié)構(gòu)化實(shí)例,也可以創(chuàng)建非結(jié)構(gòu)化實(shí)例,可應(yīng)用在包括聯(lián)機(jī)交易、數(shù)據(jù)中臺以及內(nèi)容管理三大場景下。

作為一款開源分布式數(shù)據(jù)庫,在巨杉數(shù)據(jù)庫的官網(wǎng)上已經(jīng)提供了開放下載服務(wù),感興趣的朋友可以即可去下載安裝體驗(yàn)。

分享到

zhupb

相關(guān)推薦