圖1 垂直拆分架構圖

垂直拆分的優點表現在:

1、數據庫的拆分簡單明了,拆分規則明確;

2、應用程序模塊清晰明確,容易整合;

3、數據維護方便易行,容易定位。

垂直拆分的缺點則表現在:

1、部分表關聯無法在數據庫級別完成,需要在程序中完成;

2、頻繁訪問超大數據量的表時會存在性能瓶頸;

3、事務處理更加復雜。

1.2 水平拆分

水平拆分是將訪問頻繁的大數據量的表,按照某種規則拆分到多個表中,每個表只包含一部分數據。

數據的水平拆分是按照數據行的拆分,將表中的某些行拆分到一個數據庫,而另外的某些行拆分到其他的數據庫中,且拆分時需按照特定的規則來進行,如根據公司號或者用戶編碼等進行拆分?;谟脩舻木幋a進行數據水平拆分,如圖2所示:

圖2 水平拆分架構圖

水平拆分的優點表現在:

1、表關聯能夠在數據庫端全部完成;

2、不存在超大型數據量和高負載的表;

3、事務處理相對簡單;

水平拆分的缺點則表現在:

1、切分規則較復雜,很難抽象出一個滿足能整個數據庫的切分規則;

2、后期數據的維護難度有所增加,人為手工定位數據更困難;

3、應用系統各模塊的耦合度較高,對數據的遷移拆分造成一定的困難。

1.3 聯合拆分

在實際的應用場景中,系統的業務邏輯比較復雜,系統負載比較大,無法通過單獨的一種數據拆分方式來實現,需要兩種拆分方法結合使用,分布式數據庫應采用垂直拆分與水平拆分聯合的方式,如圖3所示:

圖3 聯合拆分架構圖

聯合拆分的優點:

1、可以充分利用垂直拆分和水平拆分各自的優勢而避免各自的缺陷;

2、系統擴展性得到最大化的提升。

聯合拆分的缺點:

1、數據庫系統架構比較復雜,維護難度更大;

2、應用程序架構相對更復雜。

2 、數據整合

數據庫在經過垂直和(或)水平拆分被存放在不同的數據庫之后,RS10系統最大的問題是訪問業務數據,讓業務數據得到較好的整合,因此,存在兩種解決方案:

第一種方案,在每個子系統中配置和管理需要的數據源,直接訪問各個數據庫,在每個子系統內完成數據的整合;

第二種方案,使用數據層框架來統一管理所有的數據源,數據庫集群對每個子系統透明。針對RS10,我們采用第二種解決方案來實現數據的整合。

3、分布式數據庫層架構

在選擇通過數據庫的中間代理層來解決數據的拆分和整合方案之后,我們選取開源的Amoeba框架,在它基礎上開發出適合RS10的數據拆分和整合方案。

Amoeba 是一個基于java開發的,專注于解決分布式數據庫數據源整合的開源框架,可用來監視、分析或者傳輸他們之間的通訊信息,實現連接路由、Query分析、 Query過濾和修改、負載均衡以及基本的HA機制等。所有客戶端請求都是通過這個中間層,然后經由中間層進行相應的分析,判斷出是讀操作還是寫操作,然后分發到相應的數據庫服務器上,我們基于這個框架來實現和部署RS10的分布式數據庫,架構圖如圖4所示:

圖4 分布式數據庫層架構

Amoeba能解決RS10以下問題:

1、RS10分庫分表以及拆分之后數據的整合;

2、提供了數據拆分規則,降低拆分規則給數據庫帶來的影響;

3、減少了數據庫與客戶端的連接數,用戶只訪問自己需要的數據;

4、通過中間層代理,實現讀寫分離。

基于這個開源框架我們能開發出同時連接不同的數據庫的數據源為前端應用程序提供服務,我們通過Amoeba框架分析Query語句,根據Query 語句中所請求的數據來自動識別Query語句的數據源是什么類型數據庫在哪個物理主機上面,然后選擇特定的JDBC驅動和相應協議連接后臺數據庫。

通過數據的垂直和水平拆分,增強數據庫的整體服務能力,通過數據層框架解決數據拆分和整合,使數據庫很容易擴展,只需要增加廉價的PC服務器,即可線性增加數據庫集群的整體服務能力,從而實現分布式數據庫的部署和擴展。

4、結束語

目前,關于分布式數據庫系統數據處理的研究很多,針對RS10大數據量的性能以及并發訪問效率低的問題,基于Amoeba框架,對大數據量的表進行 拆分,對集中式部署的數據庫采用分布式部署,有效的解決數據量大、并發訪問效率低的問題。分布式數據庫對數據的拆分和整合是最關鍵的環節,只有充分解決這 個問題,分布式數據庫才能得到有效地使用。

未經允許不得轉載:存儲在線-存儲專業媒體 » 基于分布式數據庫數據處理的研究
分享到

huanghui

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走