原生分散式資料庫與子資料庫子表中介軟體的區別

hongwei2021發表於2022-11-28


無論是分庫分表中介軟體還是原生分散式資料庫,目的都是為了解決資料容量問題,但實際上兩種方式有本質區別。那麼,具體來說, 有什麼區別,它們的優缺點是什麼?下面我們具體談一談。

區別一:是否依賴中介軟體

資料庫和表分離的中介軟體大多采用中介軟體來補充分散式能力,也就是說在每個資料庫節點上構建一個事務處理和查詢最佳化的中間層。在這個系統中,所有的資料庫可以是相同的配置,也可以是異構的。把所有資料庫組合在一起是一種松耦合的方式,會暴露出很多問題,比如事務處理能力,高可用性限制等等。

原生分散式資料庫,它由所有配置相同的資料庫組成,每個資料庫節點天然具有分佈的能力,它是一個緊密耦合的系統,不需要額外中介軟體的幫助和使用者對叢集實現細節的關注。可見原生分散式資料庫的能力有很大的發展空間,但其發展也有難度。

區別二:是否依賴子分庫分表

彈性擴容是檢驗分散式資料庫在面對流量高峰或極端場景下能否持續穩定執行的重要因素。比如一個交易場景,高峰時段每秒可以產生一百萬筆訂單,每筆訂單對於資料庫來說都是一筆業務,需要資料庫進行擴充套件。關鍵在於是否採用分庫分表的方法,這極大地制約了容量的擴充套件。

資料庫和分表中介軟體的分片規則是基於演算法提供的,下層計算節點之間沒有資料互動,下層計算節點無法按需擴充套件。原機器按子資料庫、子表分成 100 份,每臺機器處理一筆業務。但是,如果你想把它們進一步拆分成 1000 份和 10000 份,就很難做到了。這個過程還是需要關閉,開發者手動反彙編庫,效率低,靈活性有限,但好在對資料庫的依賴也低。

原生分散式資料庫有分割槽表的功能,可以拆分一百份中介軟體,然後再各拆分一百份,總共一萬份,每份至少可以在一臺機器上處理。在這個過程中,系統自動按需擴充套件,不受數量和規模限制,不需要人工干預。

資料庫和分表中介軟體的核心思想是讓多個伺服器協同工作,完成單個伺服器無法處理的任務,尤其是高併發或資料量大的任務。而原生的分散式高可用性設計,可以在普通伺服器上實現無限的橫向擴充套件,透過新增低成本的伺服器來擴充套件計算能力,從而提高資料庫叢集的整體效能。

區別三:是否實現強資料一致性

資料庫分離和表分離的中介軟體由於其架構特點,本質上會對單個資料庫進行兩次處理,在資料一致性、全域性事務能力、全域性 MVCC 、副本控制和高可用性等方面存在不足,需要有針對性的增強。

大多數原生分散式資料庫在分散式 KV 的基礎上開發了 SQL 計算引擎,將分散式儲存、事務和計算有機地結合在一起。資料被系統自動分散,並儲存了多個副本。一致性協議保證了多個副本和事務日誌的一致性,為分散式事務和全域性 MVCC 提供了更全面的支援。

區別四:能否實現平滑的業務遷移

眾所周知,資料庫是企事業單位的心臟,尤其是在金融、能源、社保、政務等行業。當資料庫已經達到容量上限或者不足以滿足企業需求的時候,企業也會考慮 換心 來保持活力。這個時候,資料能否順利遷移到新的資料庫,保證資料的正確性不丟失,保證業務不受影響,是一個重要的考慮因素。

由於資料庫部門和表部門的中介軟體不具備分散式能力,在遷移資料時需要進行業務轉換。以便資料庫可以正常執行。而且由於每個表只能有一個分片規則,業務建模需要重新規劃,業務程式碼需要相應修改,成本很高。

原生分散式資料庫由於其高度的相容性和透明性,可以在不改變業務程式碼的情況下支援資料遷移,在不損害效能的情況下保證資料庫的正常執行。因為整個分散式結構被包裝在叢集中,所以應用程式無法感知它。相應的,和使用集中式資料庫沒什麼區別,不需要進行分散式改造。此外,由於原生分散式資料庫對硬體的依賴性較小,在雲時代,可以靈活進行混合雲和多雲部署以及跨雲資料管理,為企業提供更多更便捷的服務選擇。

一般來說,資料庫分割槽和表分割槽的中介軟體通常在單機資料庫上構建資料分割槽的特性,並支援擴充套件能力。由於傳統單機資料庫相對穩定,使用者更容易上手。但是,缺點也很明顯。其底層不具備分散式能力,僅在宏觀架構上打補丁,不斷增加機器冗餘和系統複雜度,能力天花板較低。原生分散式資料庫雖然整體效能更好,但也支援底層模型的調整和各種能力的最佳化。但由於技術發展時間相對較短,部分產品解決方案的成熟度有待提高。從目前的行業發展趨勢來看,隨著技術的不斷成熟,原生分散式資料庫正在成為主流,大量的企業和組織已經開始對傳統資料庫進行升級。


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

相關文章