“Database Plus”,是近期比較火熱的一個理念,其最早是由我前同事、現SphereEx公司CEO張亮率先提出的,并通過開源項目 ShardingSphere(下文簡稱SS) 做了工程化實現。作為一名數據庫領域從業者,對這一理念有著自己的一些解讀。
1、對 Database Plus 的解讀
作為數字基礎設施的核心,數據庫扮演著愈發重要的作用。從數據庫承擔的最為樸素的職能來看,可大致分為兩個部分即存儲和計算。作為數據的主要載體,數據庫的一大職能是完成數據的存儲,保證數據安全可用;第二大職能為數據計算,即在存儲基礎上提供數據的上層計算。這里所說的計算具有非常寬泛范疇,既包括對數據簡單的CRUD,也包括對數據的高階分析、挖掘及更為廣闊的其他計算場景。隨著近些年數字化轉型深化,數據被提到更高層面得到重視,數據種類、規模迅速膨脹,同時企業對數據使用呈現多樣化特點且針對特性能力提出更高要求。相應的也對數據底層基礎設施之一的數據庫提出了相應的要求。這里可集中表現在實時性、敏捷性、安全性、可用性、經濟性、智能化、高性能、強管控、自主化、開放性、融合化及創新性等諸多方面。這部分可參考之前文章數字化轉型下數據庫面臨的12個挑戰
而Database Plus 理念的核心定位,正是基于上述現狀,創造性地提出在底層數據庫不變的情況下,通過在其上層構建增強計算引擎,突破原有數據庫功能局限,提升數據基礎設施整體功能上限。通過對 Database Plus 理念產品 ShardingSphere功能研讀,其對數據計算做了三層劃分。一是原生數據庫的計算能力,根據數據庫的不同,其原生計算能力各有差異。SS 實現與底層數據庫的解耦,可靈活對接多種數據源,充分復用原生數據庫提供的基礎能力。二是基礎計算的增強能力,這部分主要是指對數據庫自有核心能力的增強。受限于宿主數據庫的功能缺失,可通過此方式增強其能力。比較典型的能力如數據分片、分布式事務、分布式查詢優化等。三是數據應用計算的增強能力,數據最終是要參與到應用中才能發揮價值,在這一過程中需要對數據產生大量業務計算。很多原生數據庫是不具備或不擅長處理這種應用類計算。可通過這一模式擴展增強計算。比較典型的能力如數據加密、數據脫敏、數據壓測、訪問審計等。
過去針對這三類需求,通常有兩種路徑。一種路徑是通過不斷增強數據庫內核,不斷疊加功能滿足一、二類訴求,很多功能強大的數據庫產品不斷涌現,但也不可避免面臨內核的復雜、龐大及臃腫,同時也大幅抬高工程化實現難度和復雜度。第二種路徑是構建很多垂直的數據應用滿足第三類訴求。這種方式不在數據庫自身實現,而是通過完全獨立的應用系統完成。當然在企業中就會面臨運維繁多技術產品和大量豎井式的應用而無法整合的窘境。我們從 SS 的實現上看,其提出可插拔理念及上層插件化應用,可用一種形象的比喻來概括就是“雙擎動力+渦輪增壓“。這一從汽車領域衍生過來的概念,可很好地詮釋其實現理念。原生的數據庫提供的基礎算力引擎,如傳統的汽油發動機;SS提供的基礎計算增強可比喻為渦輪增壓部分,其在原生數據庫計算引擎之上,增強其能力;第三部分應用計算的增強則可理解為第二引擎,如新興的電力引擎。通過這種混合動力+渦輪增壓的配置,可大幅提升原有動力系統,滿足用戶更好的動力要求。但同時有一點不可忽視,就是無論怎么增強對用戶是無感的,用戶可見的只是動力增強了。還原到真實場景下,就是用戶依然會使用數據庫,依然通過SQL語句計算數據和管理數據庫,但對應數據庫自身已經是一個“Super Database”了。
除此之外,Database Plus 理念還有一點不容忽視。這里談到的plus的概念,是非常多元的,可以在其上疊加大量的功能。這些功能是靈活的、發散的,甚至是個性化。而作為傳統數據庫的定位是標準的、統一的基礎軟件,很難滿足上述要求。而作為 Database Plus 理念實踐產品 SS,率先提出了“插件化、可插拔”思想,可滿足對靈活多變的計算支持,同時借助平臺層提供的統一標準的訪問方式,旨在打造數據庫上層應用、管理的標準。用戶及生態合作伙伴,完全可根據自身場景需求豐富插件能力,提升產品功能外延。打造出屬于自己的“DIY DB”或“組件化DB”的產品。SS 本身也是希望能吸引到更多的共享者,打造完整的數據庫使用生態。
2、外部挑戰及Db Plus解決之道
上文談到了數字化轉型深化中對數據庫提出的若干挑戰,這里我們就若干挑戰內容稍微展開說明并談談作為Database Plus理念的實踐者 SS 是如何解決這些問題的。
- 大規模
數據規模爆炸式增長是目前面臨的痛點問題之一。為解決這一問題,比較常規的就是數據分片,即通過數據的打散降低單體數據處理規模,因而可承載更大的數據量。目前分布式數據庫的處理思路基本都是這種。這其中的難點問題在于數據分片的規則是什么?一種方式是采用內置的分片策略,用戶無需感知。這種方式的用戶體驗很好,用戶可完全按照一個“BIG DB”來使用它。很多在數據分片下的能力,完全可以系統內置。很多原生分布式數據庫產品就是這種策略,它的功能上限很高,比較符合使用者對數據庫的定位。但這一方式有不可回避的問題在于,分布式架構的引入所造成穩定性、高性能及其他功能缺失。第二種方式是開放分片策略,用戶可根據業務需求干預分片的位置。這種方式對用戶有一定浸入性,但也做到更好掌控。很多基于中間件演進的分布式數據庫產品基于此類。這類產品穩定性相對更好,可滿足高性能要求等。ShardingSphere 的策略與第二種方式類似,只是做的更為極致,其原生提供了更為豐富和強大的分片能力的同時,還提供給用戶充分的自主權,可完成精細粒度的用戶定制工作。
- 實時性
實時性對企業數字化轉型尤為重要,實時鮮活的數據對企業尤為重要。傳統單機/集中式數據庫通過存儲結構優化、緩存的引入、執行計劃優化、軟硬件結合等方面很好地滿足了實時性要求。但在分布式條件下,上述優化手段不再有效。此外,分布式架構下數據庫需要跨組件參與計算也拖慢數據實時性反饋。如何復用單機/集中式數據庫的能力,在分布式場景下滿足需求成為關鍵。SS提供的Driver模式,給人眼前一亮的感覺。其將增強計算能力上移到應用側,縮短訪問鏈路,提升整體性能,滿足對數據實時性的要求。當然,這一方式有天然缺陷,僅限于Java應用可使用。
- 安全性
數據安全,是近些年來的熱門話題。從監管方的頻頻出臺各項政策,可見一斑。作為承載數據的主體,數據庫首當其沖將更為重視安全問題。從數據存儲、數據訪問、數據傳輸、數據應用等多角度解決數據安全問題。傳統的處理方式是通過數據庫與安全系統配合來完成上述要求,用戶需要依賴引入外部安全應用軟件并去適配多種數據庫來完成。SS 的插件化理念,可通過引入多種安全插件能力來完成,并且對外提供標準數據庫接口。針對多數據庫棧的問題,也可通過靈活的適配能力來解決,甚至在上層提供統一的數據視角,完成高階的數據安全治理行為。
- 可用性
可用性,是數據庫需提供的基本保障。之前單機架構或集中式架構,一般是通過高可用硬件+軟件來解決;對于新興的分布式架構來說,其組件更多也更為復雜,且對于硬件也無較多要求,這就要求軟件本身提供更高要求。SS 的處理思想是利用底層數據庫原生高可用能力,并打通與后者的感知能力。充分利用成熟數據庫的自身能力完成。當然,這種方式存在局限,針對全局的可用性是無法解決的,目前只能在單體層面解決。
- 經濟性
隨著數據存儲規模越來越大,對數據計算要求越來越高,整體數據存儲和計算的成本也整體提高。特別是在現有分布式架構下,對資源消耗尤為明顯。上述都造成用戶較高的經濟成本。SS 走了另一條道路,它通過計算邏輯上移,將計算資源和應用合并部署,減少對底層資源新的需求,可提高經濟性。當然這里需要考慮資源沖突問題,它的最新版本似乎解決了這個問題。
- 簡化融合
數字化深化帶來的技術需求的多元化,與之對應的產品方案也呈現同樣的態勢,對于數據庫方面尤為明顯。雖然可以通過統一管理角度去簡化管理,但對于用戶而言仍然不得不去面對復雜的使用問題。如果通過統一接口提供能力,無疑對用戶非常有吸引力,這就是簡化融合訴求的來源。Database Plus 倡導的在數據庫上層構建統一、標準、開放的生態,正契合這一訴求。未來對數據庫的使用,完全可根據上層統一標準來實施。針對如數據安全、訪問審計、訪問控制等訴求,都可考慮在上層解決。當然這里面難點不少,如何抽象屏蔽下層復雜細節值得深思。
- 自主可控
對基礎軟件來說,自主可控非常關鍵。作為數字化的載體,數據庫的自主可控能力尤為重要。近些年國產化訴求日益高漲,也有著這方面的考慮。這其中值得關注的一點是關于開源的使用。SS 作為Apache開源的頂級項目,在這里無疑是有優勢的。通過頂級、權威開源基金會的扶植,會使得開源項目更加健康發展。
3、對 Database Plus 的發展暢想
Database Plus,作為一種新的數據使用思想,還處在相對早期階段。但通過這一理念落地的成果-SS,已展示出不錯的發展態勢。在底層成熟的數字基礎設施之上,以開放、標準、可插拔為指導原則,構建面向增值能力的數據應用基礎平臺。幫助用戶快速提升數據應用水平,構建標準的數字化基礎設施,其前景未來可期!
作者介紹
韓鋒,51CTO社區編輯,CCIA(中國計算機協會)常務理事,前Oracle ACE,騰訊TVP,阿里云MVP,dbaplus等多家社群創始人或專家團成員。有著豐富的一線數據庫架構、軟件研發、產品設計、團隊管理經驗。曾擔任多家公司首席DBA、數據庫架構師等職。在云、電商、金融、互聯網等行業均有涉獵,精通多種關系型數據庫,對NoSQL及大數據相關技術也有涉足,實踐經驗豐富。曾著有數據庫相關著作《SQL優化最佳實踐》、《數據庫高效優化》。