作為新一代分布式數(shù)據(jù)庫,SequoiaDB巨杉數(shù)據(jù)庫,其架構(gòu)與功能特性需要保證在與傳統(tǒng)數(shù)據(jù)庫全兼容的基礎(chǔ)上,擁抱微服務(wù)與云計算框架。因此,分布式數(shù)據(jù)庫對于分布式交易與ACID必須保證與傳統(tǒng)技術(shù)完全兼容。同時,在面向微服務(wù)應(yīng)用開發(fā)與云計算基礎(chǔ)架構(gòu)時,新一代分布式數(shù)據(jù)庫必須支持彈性擴(kuò)張、資源隔離、多租戶、可配置一致性、多模式(支持各類SQL協(xié)議)、集群內(nèi)可配置容災(zāi)策略等一系列功能。
傳統(tǒng)單點數(shù)據(jù)庫的容量瓶頸,僅僅是分布式數(shù)據(jù)庫所解決的問題之一。更重要的是在未來微服務(wù)化應(yīng)用開發(fā)以及云化平臺的趨勢下,應(yīng)用不再以“煙囪式”的中間件加數(shù)據(jù)庫模式進(jìn)行構(gòu)建,而是采用數(shù)千甚至上萬的微服務(wù)程序構(gòu)建成的復(fù)雜網(wǎng)狀模型。因此,分布式數(shù)據(jù)庫需要滿足以下能力,才能夠滿足上層應(yīng)用的彈性擴(kuò)展、高并發(fā)、高吞吐量、與靈活敏捷的需求。
在這些技術(shù)需求驅(qū)動下,分布式數(shù)據(jù)庫核心技術(shù)能力分為兩個方面,一方面是對傳統(tǒng)技術(shù)的兼容,包括:
? 完整的ACID支持,事務(wù)和一致性保證;
? SQL的完整支持,傳統(tǒng)數(shù)據(jù)庫如MySQL/PostgreSQL的語法完全兼容。
另一方面,則是技術(shù)創(chuàng)新,包括:
? 分布式與擴(kuò)展性,應(yīng)對數(shù)據(jù)量的變化,實現(xiàn)存儲層和計算層的彈性擴(kuò)展;
? 多模式訪問接口,支持多類型數(shù)據(jù)管理和多種模式的訪問接口;
? HTAP交易/分析混合處理能力,復(fù)雜業(yè)務(wù)需求下,實現(xiàn)數(shù)據(jù)的物理隔離,互不干擾。
作為一款金融級分布式關(guān)系型數(shù)據(jù)庫,SequoiaDB巨杉數(shù)據(jù)庫的分布式數(shù)據(jù)庫架構(gòu)和面向微服務(wù)的云化產(chǎn)品形態(tài),已經(jīng)幫助包括民生銀行、恒豐銀行在內(nèi)的多家大型金融客戶實現(xiàn)了大量業(yè)務(wù)系統(tǒng)的底層數(shù)據(jù)庫云化轉(zhuǎn)型升級。
目前,巨杉數(shù)據(jù)庫在銀行生產(chǎn)系統(tǒng)單機(jī)群最大物理節(jié)點數(shù)達(dá)到135個,單集群最大存儲容量超過2.1 PB,單集群最大管理數(shù)據(jù)條數(shù)1318億條。
SequoiaDB巨杉數(shù)據(jù)庫作為一款金融級的分布式關(guān)系型數(shù)據(jù)庫,在企業(yè)客戶云化架構(gòu)轉(zhuǎn)型過程中,提供了多種重要技術(shù)能力。
數(shù)據(jù)存儲資源池化
SequoiaDB數(shù)據(jù)存儲引擎采用原生分布式架構(gòu),數(shù)據(jù)完全打散在分布式節(jié)點間存儲,自動化數(shù)據(jù)分布和管理,數(shù)據(jù)可以按需靈活擴(kuò)展。
SequoiaDB采用分片技術(shù)為系統(tǒng)提供了橫向擴(kuò)展機(jī)制,其分片過程對于應(yīng)用程序來說完全透明。該機(jī)制解決了單臺服務(wù)器硬件資源(如內(nèi)存、CPU、磁盤 I/O)受限的問題,并不會增加應(yīng)用程序開發(fā)的復(fù)雜性。巨杉數(shù)據(jù)庫通過原生分布式架構(gòu),可以輕松實現(xiàn)PB級別數(shù)據(jù)管理,目前生產(chǎn)環(huán)境最大支持超過1500個節(jié)點集群。
SequoiaDB巨杉數(shù)據(jù)庫存儲引擎也實現(xiàn)了multi-model多模數(shù)據(jù)管理,支持非結(jié)構(gòu)化、結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)全覆蓋并統(tǒng)一管理。SequoiaDB的多模引擎設(shè)計讓數(shù)據(jù)庫平臺場景更多樣,也能符合云數(shù)據(jù)架構(gòu)下對于多樣化業(yè)務(wù)數(shù)據(jù)的統(tǒng)一管理與運維要求。
同時,在一個大型集群中,SequoiaDB提供了多維度、多層級的邏輯與物理隔離能力。在一個典型的數(shù)據(jù)資源池類型基礎(chǔ)數(shù)據(jù)服務(wù)平臺(DBaas,DataBase As A Service)中,SequoiaDB巨杉數(shù)據(jù)庫能夠同時服務(wù)于成百上千個不同SLA服務(wù)級別、優(yōu)先級、業(yè)務(wù)特性、與數(shù)據(jù)量的應(yīng)用程序,并保證應(yīng)用程序之間的數(shù)據(jù)邏輯與物理隔離。
SequoiaDB提供的“數(shù)據(jù)域(Domain)”特性,能夠?qū)⒄麄€集群在物理設(shè)備層面進(jìn)行隔離,確保不同的表、表空間、與數(shù)據(jù)庫實例坐落于獨立的硬件設(shè)備上,保證高優(yōu)先級的聯(lián)機(jī)交易應(yīng)用與后臺統(tǒng)計分析相互隔離互不干擾。
數(shù)據(jù)庫實例化
SequoiaDB巨杉數(shù)據(jù)庫支持?jǐn)?shù)據(jù)庫服務(wù)實例化。
針對微服務(wù)應(yīng)用架構(gòu),用戶可以在同一個集群中創(chuàng)建成百上千個不同的關(guān)系型數(shù)據(jù)庫實例。數(shù)據(jù)庫實例的訪問與使用方式和傳統(tǒng)關(guān)系型數(shù)據(jù)庫100%兼容,同時其底層所使用的數(shù)據(jù)從邏輯上完全獨立,每個實例擁有自己獨立的權(quán)限管理、數(shù)據(jù)管控、甚至可以選擇部署在獨立的硬件環(huán)境或共享設(shè)備中。
目前SequoiaDB巨杉數(shù)據(jù)庫支持用戶創(chuàng)建 MySQL、PostgreSQL 與 SparkSQL 實例,同時還提供了JSON、S3對象存儲以及Posix文件系統(tǒng)實例,充分滿足用戶對于結(jié)構(gòu)化、半結(jié)構(gòu)化、以及非結(jié)構(gòu)化數(shù)據(jù)的需求。
從應(yīng)用程序開發(fā)者與DBA的角度看,SequoiaDB巨杉數(shù)據(jù)庫所提供的關(guān)系型數(shù)據(jù)庫實例,與傳統(tǒng)MySQL、PostgreSQL和SparkSQL保持全兼容。例如,在SequoiaDB巨杉數(shù)據(jù)庫中的MySQL實例中,其所有的增刪改查語法、視圖、觸發(fā)器、事務(wù)、甚至訪問計劃都與傳統(tǒng)MySQL保持一致。
作為分布式數(shù)據(jù)庫,SequoiaDB巨杉數(shù)據(jù)庫的SQL實例用戶不需要關(guān)心底層的數(shù)據(jù)到底被分散在一臺還是多臺設(shè)備中。用戶可以簡單創(chuàng)建一個分區(qū)表,向其中寫入上億條記錄,其數(shù)據(jù)將會被自動分散在不同的物理設(shè)備中,對于應(yīng)用程序根本無需關(guān)注分庫分表,數(shù)據(jù)庫自動提供分布式事務(wù)以及分布式訪問等能力。
雙活容災(zāi)與數(shù)據(jù)安全
雙活容災(zāi)即災(zāi)備系統(tǒng)中使主生產(chǎn)端數(shù)據(jù)庫和備機(jī)端數(shù)據(jù)庫同時在線運行,處于可讀可寫狀態(tài)的技術(shù)。在銀行的交易系統(tǒng)中,雙活容災(zāi)能力不僅保證數(shù)據(jù)不丟失,也保證系統(tǒng)在遭遇事故時能夠短時間內(nèi)重新上線。在正常情況下,雙活架構(gòu)的兩個數(shù)據(jù)中心都能夠同時提供業(yè)務(wù)的讀寫服務(wù),而當(dāng)一個中心宕機(jī)后,所有前端應(yīng)用可以立刻切換至依然存活的數(shù)據(jù)中心繼續(xù)使用。
SequoiaDB巨杉數(shù)據(jù)庫在內(nèi)核層面實現(xiàn)了多種容災(zāi)方式,包括同城雙活、同城雙中心、同城三中心、兩地三中心、與三地五中心等容災(zāi)策略。通過使用SequoiaDB巨杉數(shù)據(jù)庫的容災(zāi)與高可用機(jī)制,數(shù)據(jù)中心內(nèi)的服務(wù)器故障可以保證RTO與RPO均為零,而整個數(shù)據(jù)中心或同城網(wǎng)絡(luò)故障也可以做到秒級RTO、RPO=0。