容器技術,以及與容器技術緊密相關的DevOps、微服務等技術非常流行,被許多人認為是繼虛擬化技術之后,IT基礎設施領域的又一大創(chuàng)新,對于企業(yè)敏態(tài)業(yè)務發(fā)展至關重要,圍繞容器技術需要企業(yè)IT架構作出調整,對于數(shù)據庫的需求也有很大改變。
王濤提到,很多企業(yè)都在從基于傳統(tǒng)數(shù)據庫的煙囪式開發(fā)向微服務架構轉型,微服務體系架構中,每個微服務都需要提供數(shù)據持久化能力,用戶希望每個微服務所應對的數(shù)據量能夠無限彈性擴張。
支撐微服務的話,是用集中式數(shù)據庫還是分布式數(shù)據庫呢?
王濤介紹說,如果使用傳統(tǒng)集中式數(shù)據庫,那么對于應用程序的改造相對比較小,對DBA運維人員的成本比較低,但由于數(shù)據緊耦合,既無法彈性擴張,又可能存在的單點故障的隱患。
另一種做法是每個微服務對應一個獨立的小數(shù)據庫,比如使用MySQL或PostgreSQL,這樣能夠解決集中式存儲的問題,但因為每個微服務都使用獨立的數(shù)據庫,會使原本集中的數(shù)據分散到很多不同的設備中,會造成數(shù)據極度碎片化,數(shù)據在微服務之間無法共享,而且運維成本極其高昂。
碎片化帶來什么難題呢?
王濤介紹說,一些互聯(lián)網公司生產系統(tǒng)中維護著兩三萬套MySQL數(shù)據庫,這樣的架構下想要進行企業(yè)內部的數(shù)據整合視圖是極為困難的事兒。數(shù)字化轉型時代,數(shù)據是企業(yè)的核心資產,在大數(shù)據以及基于數(shù)據的人工智能技術在企業(yè)逐步落地和發(fā)展的過程中,這樣的數(shù)據架構顯然是有很大問題的。
巨杉數(shù)據庫的分布式數(shù)據庫能很好地解決這一問題。一方面,分布式數(shù)據庫解決數(shù)據的彈性擴張的問題,使每個微服務可以不受底層數(shù)據存儲限制進行擴容。另一方面,可以解決微服務應用架構中數(shù)據嚴重碎片化的問題。
巨杉分布式數(shù)據庫如何解決這一問題的呢?
巨杉分布式數(shù)據庫的做法是用統(tǒng)一的分布式數(shù)據庫做底座,上層可以創(chuàng)建成百上千個數(shù)據庫實例,同時,應用無需感知每個數(shù)據庫實例底下對應的資源。
對單個應用來說,這樣的數(shù)據庫與傳統(tǒng)標準數(shù)據庫完全一致,但是又能做到彈性伸縮。管理方面,所有的物理設備從邏輯上進行統(tǒng)一管理,降低管理成本。數(shù)據共享方面,不同實例里的數(shù)據可以進行共享。
這樣的分布式數(shù)據庫既兼容了傳統(tǒng)數(shù)據庫技術,同時又是面向未來的。
在兼容傳統(tǒng)數(shù)據庫方面,作為金融級數(shù)據庫,巨杉數(shù)據庫有完整的ACID支持,事務和一致性保證,而且,巨杉數(shù)據庫完整支持SQL語句,與傳統(tǒng)數(shù)據庫如MySQL/PostgreSQL的語法完全兼容,用戶和管理員可以像以往一樣用數(shù)據庫,應用程序也無需做什么改動。
完整的ACID支持意味著能同時支持一致性和安全性,王濤強調“絕對不能為了上分布式犧牲數(shù)據的一致性和安全性”,他認為,新型面向聯(lián)機交易的分布式數(shù)據庫必須對傳統(tǒng)ACID有完美的支持,與傳統(tǒng)Oracle DB2的數(shù)據安全性一致性保持兼容。
在面向未來的新特性方面,巨杉數(shù)據庫有三點創(chuàng)新:
第一個是分布式與擴展性,這其實是分布式數(shù)據庫的核心價值,它可以根據數(shù)據量的變化,實現(xiàn)存儲層和計算層的彈性擴展,能在數(shù)據庫的層面以服務資源池的形式提供數(shù)據庫訪問能力。
第二個在于多模式訪問接口,其實主要就是因為如今的服務類型、應用需求等多樣化,對數(shù)據庫接口類型的要求也日益多樣化,所以,分布式數(shù)據庫要支持多類型數(shù)據管理和多種模式的訪問接口。這點與分布式存儲也非常類似,面對多樣化的應用,存儲也需要多元化的接口類型。
第三個方面其實考量共享架構的資源隔離問題,當一個數(shù)據庫同時處理HTAP交易和分析混合處理業(yè)務時候,如何不影響聯(lián)機交易業(yè)務的性能表現(xiàn)?巨杉分布式數(shù)據庫的資源池內可對交易與分析業(yè)務進行物理資源隔離實現(xiàn)數(shù)據的物理隔離,性能方面互不干擾。
作為一款金融級的關系型數(shù)據庫,巨杉數(shù)據庫在數(shù)據安全和容災方面也頗有造詣。巨杉數(shù)據庫原生支持數(shù)據庫內核級別的高可用以及跨數(shù)據中心災備能力,目前已經實現(xiàn)異地容災備份,可滿足“三地五中心”的容災支持。同時,巨杉數(shù)據庫在異地容災基礎上,實現(xiàn)了數(shù)據異地多活,目前已經實現(xiàn)雙中心同時讀寫,中心切換RPO為0和RTO達到秒級,提供了“超金融級”的數(shù)據安全保障。
分布式數(shù)據庫的演進
分布式的概念已有很多年,分布式存儲,分布式數(shù)據庫都是如此,分布式數(shù)據庫在歷經多年的發(fā)展當中不斷迭代,分布式數(shù)據庫技術發(fā)展體系可分為三類:垂直分庫、分庫分表和原生分布式數(shù)據庫。
王濤介紹說,最傳統(tǒng)的是垂直分庫,通過定義好的應用規(guī)則,按照規(guī)則找到數(shù)據庫實例,然后再直接獲取連接進行查詢。這種方式的缺點在于,跨數(shù)據庫的事務難以實現(xiàn),需要非常多的定制化開發(fā)。
還有一種方式是分庫分表。做法是在應用程序和數(shù)據庫之間構建一個SQL解析服務,將SQL翻譯成底層每個數(shù)據庫所看得懂的子查詢,把查詢下發(fā)給底層的傳統(tǒng)數(shù)據庫。這種機制是從集中式架構到分布式架構的過渡狀態(tài),同時,由于對于應用無法做到完全透明,一般來說需要在應用拼裝SQL的時候指定很多參數(shù)或比較獨特的語法。
最后一種則是通常所說的原生分布式數(shù)據庫,常見的有巨杉和螞蟻金服的OceanBase分布式數(shù)據庫。原生分布式數(shù)據庫是底層完全從零開始研發(fā),完全拋棄小型機體系,基于PC服務器硬件架構設計的分布式數(shù)據庫,將高可用、容災、分布式等機制天然融入到數(shù)據存儲體系的方方面面。
以巨杉數(shù)據庫為例,能夠保證在與MySQL 100%兼容的前提下實現(xiàn)對應用完全透明的分布式能力。開發(fā)者不需要關注一個表存了幾億還是十幾億記錄,只要在建表的時候配置好容量和橫跨多少臺物理設備,數(shù)據即可自動在庫內進行均衡,從應用來看就像訪問標準的表一樣直接進行讀寫請求。
SequoiaDB v3.2版本在分布式存儲層和數(shù)據庫實例層均增加了許多新特性。底層的分布式存儲層作為資源池,負責數(shù)據存儲、分布式事務控制等,數(shù)據庫實例層則提供對上層應用程序的SQL服務,用戶可創(chuàng)建結構化實例,也可以創(chuàng)建非結構化實例,可應用在包括聯(lián)機交易、數(shù)據中臺以及內容管理三大場景下。
作為一款開源分布式數(shù)據庫,在巨杉數(shù)據庫的官網上已經提供了開放下載服務,感興趣的朋友可以即可去下載安裝體驗。