官术网_书友最值得收藏!

2.4 使用Database Plus解決數據庫痛點

ShardingSphere遵循的核心設計理念是Database Plus。在過去幾年,數據庫行業在快速擴展,新解決方案層出不窮,它們致力于填補因互聯網相關行業發展而帶來的日益龐大的空白。

一些著名的例子有MongoDB、PostgreSQL、Hive和Presto。這些解決方案深受歡迎,這表明在數據庫領域,碎片化是個日益嚴重的問題,而最近風險資本的涌入進一步深化了這種趨勢。在DB-Engines的數據庫排名榜上,榜上有名的數據庫超過350個,還有很多數據庫沒有進入榜單。在卡內基梅隆大學的Database of Databases榜單上,當前列出了792個值得關注的DBMS。

如此多的DBMS充分說明了企業對DBMS的需求方向有多廣泛。然而,凡事都有兩面性,數據庫這樣的繁榮帶來了如下問題。

應用高層需要使用不同的數據庫方言來與不同類型的數據庫通信,需要在保留既有連接池的同時添加新的連接池。

需要聚合來自不同數據庫的分布式數據。

需要滿足碎片化數據庫的相同需求,如加密。

在生產環境中,需要運維不同類型的數據庫,這可能帶來嚴重的效率問題,加重DBA的負擔。

我們推出了Database Plus,在碎片化數據庫之上添加一個標準化的層和生態,以提供統一的操作服務,將數據庫之間的差異隱藏起來。在這樣的環境中,應用只需與標準化的服務通信。另外,在應用和數據庫之間可添加額外的功能。這種機制讓這層(ShardingSphere)能夠攔截流量、分析所有的請求、修改內容并將查詢重新路由到目標數據庫。

基于Database Plus這種簡單而重要的理念,ShardingSphere能夠提供分片、數據加密、數據庫網關和影子庫等。在第1章介紹過,Database Plus理念的核心特性連接、增強和可插拔,這里再簡要回顧一下。

連接意味著將應用連接到數據庫。在有些情況下,應用不需要知道數據庫的變化情況,即便在架構底部添加或刪除了特定類型的數據庫,應用也無須做相應的調整,因為它們的通信對象自始至終都是ShardingSphere。

增強意味著通過ShardingSphere改善數據庫功能。用戶為什么要通過ShardingSphere而不是原始數據庫進行交互呢?坦率地說,僅靠連接理念不足以說服用戶去考慮使用ShardingSphere,因此對ShardingSphere來說,增強理念是不可或缺的,這樣ShardingSphere才能夠在將應用連接到數據庫的同時,向用戶提供額外的寶貴功能,如分片、加密和身份認證。

支持可插拔是由于用戶的需求和面臨的問題各異,用戶希望ShardingSphere能夠考慮自己的需求,這意味著必須支持用戶定義(定制的)規則和配置,然而產品銷售方(或產品廠商)的立場完全相反,他們更愿意提供標準化的產品,這樣可避免額外的勞動、開發和定制開銷,因此必須尋找解開這個“死結”的答案。ShardingSphere社區經過努力,讓ShardingSphere提供了與大多數功能相關的API。大致而言,ShardingSphere通過與這些API交互來執行核心工作流程,因此不管具體的實現是什么樣的,ShardingSphere都能夠很好地工作。對于每項功能,ShardingSphere都提供了正式實現和默認實現以支持開箱即用,同時提供了無限的定制空間。

這些功能都是可插拔的,如果不想實現分片功能,可省略其插件配置,只提供一個數據加密設置文件,讓數據庫是加密的;如果要同時使用分片和加密功能,只需將這種要求告知ShardingSphere,它就會封裝這兩項配置,為你打造一個加密的分片數據庫。

前文提到,數據庫的繁榮導致了市場的碎片化,無法滿足眾多新開發的應用的各種服務需求。新的行業需求導致應用和碎片化數據庫之間出現縫隙,圖2.4對此做了概述。

Database Plus的好處可總結為如下幾點:

使用標準化層隱藏了不同數據庫在用法方面的差異;

極大地減少了為替換數據庫而需要投入的精力;

通過提供增強功能解決了眾多惱人的問題;

根據具體情況組裝不同的功能插件;

大多數內核層都允許用戶自定義實現功能代碼。

這種更新理念始于ShardingSphere 5.x。以前,ShardingSphere的定位是分片中間件層,旨在幫助用戶對數據庫進行分片。那時ShardingSphere只是一個輕量級驅動程序,與現在的定位完全不同。用戶直言不諱地表達了期望,希望除分片功能外,ShardingSphere還能支持其他更有價值的功能。為滿足社區的期望,我們將其他卓越功能納入開發計劃。

圖2.4 新的行業需求導致應用和碎片化數據庫之間出現的縫隙

然而,如果只是簡單地組合各種功能,架構將難以維護,同時很難以可持續的方式緊跟發展潮流。為滿足這些需求并消除ShardingSphere項目最初的混亂狀況,我們做出了艱苦努力,最終推出了支持前述3種特性的Database Plus。

這個迭代過程讓ShardingSphere有別于其他類似的分片產品。坦率地說,Citus和Vitess深受歡迎,它們在擴展PostgreSQL和MySQL方面表現非常出色。當前,Citus和Vitess專注于分片和其他相關功能,類似于舊版本的ShardingSphere,ShardingSphere采取的是一條全新的路徑。

主站蜘蛛池模板: 潼南县| 桃源县| 禄劝| 永清县| 旬邑县| 仙桃市| 洛浦县| 常州市| 修文县| 建湖县| 林芝县| 桂平市| 赤城县| 含山县| 扎囊县| 客服| 周口市| 双柏县| 阳原县| 荃湾区| 呼玛县| 鹤山市| 北碚区| 香格里拉县| 嘉荫县| 花莲县| 新疆| 融水| 鄂伦春自治旗| 尤溪县| 鄢陵县| 凭祥市| 宁陵县| 临邑县| 明水县| 个旧市| 北流市| 澳门| 南漳县| 梧州市| 衡阳县|