「分散式技術專題」去中心化服務與中心化服務的優劣

Hubble資料庫發表於2023-02-14

在雲端計算、大資料等新技術的帶動下,越來越多的企業需要對結構化的資料進行查詢、分析、處理和更新。同時,隨著創新業務的不斷增加,業務的複雜及龐大的體量必然會產生錯綜複雜且規模巨大的結構化資料,這些都必然迫使企業對資料庫的需求指向大規模、高可靠、高擴充套件及高效能。

什麼是資料去中心化?

資料去中心化過程也就是資料拆分的過程。依據服務劃分資料,將資料從主體資料剝離出來。

為什麼需要資料去中心化?

規範化資料模型是傳統關係型資料庫設計的核心,即透過三大正規化實現資料的有效儲存,併為開發人員提供一整套對資料的操作方式。規範化資料模型有利有弊,它為如何管理關係型資料提供了最佳的設計理念,但同時也限制了資料查詢的靈活性和高效性,特別是當查詢涉及多關聯場景時,會導致查詢效能嚴重低下。

規範化資料模型的另一個問題在於中心化思想,即把資料統一儲存在一箇中央資料庫中。當大量資料存在於同一個資料庫時會容易造成資料庫訪問瓶頸,從而影響資料訪問效能,併為系統可用性埋下隱患。資料去中心化場景、跨表查詢場景、單庫跨表查詢相對於來說場景比較簡單,不同業務共享幾張資料表,透過關聯查詢獲取需要是資料。應對這種查詢是將關聯查詢拆分為多個單表查詢,然後將結果資料進行動態重組,從而形成業務所需要的資料。

跨庫查詢場景

跨庫查詢說明不同資料庫之間的表也存在著連線查詢操作。針對該場景,基本的解決思路有兩種: ## 靜態資料 針對一些修改頻率不高、相對靜態的資料而言,可以採取資料複製的方式達到同一份資料在兩個資料庫中同時存在的效果,從而將跨庫查詢轉變為同一庫中的表查詢。

動態資料

對實時性要求比較高的資料,可以透過開放介面的方式實現兩個資料庫之間的資料整合效果。

技術耦合場景

技術耦合場景表現在使用了特定某種資料儲存容器相關的技術體系。對於關係型資料庫而言,儲存過程、觸發器等就是典型的資料庫工具級別的特有技術。由於每種資料儲存容器對這些具體技術的實現和支援方式都有所不同,所以在原則上我們的業務功能都不應該使用這些技術進行資料處理。如果有,那就堅決去掉。採用的方式也是將這些儲存過程、觸發器中所涉及的業務邏輯全部用程式碼重新實現一遍即可。

資料去中心化流程

資料去中心化的步驟:

程式碼分離

想要對資料庫進行拆分,首先要把運算元據庫的程式碼拆分出來。即把原本在單塊系統中的程式碼拆分成幾個組成部分。

重複資料庫模式

程式碼拆分完之後,對資料的訪問會形成兩種模式。一種是資料能夠隨著程式碼完成拆分,即這些資料不存在多個系統共同訪問的情況,那簡單把資料遷移出去供單個系統訪問即可。但是很多情況下,程式碼中充斥著跨表查詢,跨庫查詢和技術耦合場景,不能簡單進行資料拆分,所以作為一個過渡環節,我們可以把幾個系統公用的資料進行冗餘處理。

遷移資料讀寫操作

完成資料冗餘之後,將針對資料庫寫入和讀取操作做單獨抽離。一般寫入操作比較好抽離,因為插入只涉及單表。難度最大的為讀取的抽離,在沒有專門的資料拆分之前,同一份資料可能透過各種方式被很多業務所共享,會出現大量跨表查詢、跨庫查詢和技術耦合場景。

抽取服務化介面

在完成資料讀寫操作的遷移、去除資料定時同步機制之後,我們就可以對單塊系統中的程式碼進行拆分,從而實現服務化。所有的資料訪問透過服務化的介面進行。

 

以上為去中心化服務與中心化服務的優劣, 「分散式技術專題」是國產資料庫 hubble 團隊精心整編,專題會持續更新,歡迎大家保持關注。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026685/viewspace-2935105/,如需轉載,請註明出處,否則將追究法律責任。

相關文章