由于數(shù)據(jù)量和并發(fā)訪問量的急劇增加,數(shù)據(jù)庫的連接遇到瓶頸,大數(shù)據(jù)量的訪問速度慢、效率低的問題日益突出。對于海量數(shù)據(jù)的處理,非關(guān)系型數(shù)據(jù)庫使用日益增多,如何部署分布式數(shù)據(jù)庫,解決關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫的共同使用以及大數(shù)據(jù)量的表訪問效率低的問題已成為重中之重,通過把數(shù)據(jù)拆分到不同的數(shù)據(jù)庫,在應用層對不同數(shù)據(jù)源整合的方案,是解決數(shù)據(jù)層性能問題的關(guān)鍵。
1 、數(shù)據(jù)拆分
隨著網(wǎng)絡(luò)流量爆發(fā)式的增長,業(yè)務(wù)拆分勢在必行。拆分的業(yè)務(wù)形成一個個獨立的子系統(tǒng),RS10系統(tǒng)包括生產(chǎn)、物流、財務(wù)等子系統(tǒng),每個子系統(tǒng)之間耦合度低,功能模塊劃分清晰,數(shù)據(jù)易于拆分。把生產(chǎn)、物流、財務(wù)等子系統(tǒng)的數(shù)據(jù)從存放在一個數(shù)據(jù)庫服務(wù)器上拆分成存放在不同的數(shù)據(jù)庫服務(wù)器上,通過中間數(shù)據(jù)層框架進行數(shù)據(jù)整合,使得業(yè)務(wù)層訪問數(shù)據(jù)仍像訪問單個數(shù)據(jù)庫一樣,不造成任何影響。業(yè)務(wù)分級與關(guān)聯(lián)是業(yè)務(wù)劃分、信息共享和資源整合的過程,使用數(shù)據(jù)層框架解決分布式數(shù)據(jù)庫對業(yè)務(wù)分級和關(guān)聯(lián)帶來的影響。通過分庫分表、讀寫分離,數(shù)據(jù)庫的性能問題也迎刃而解。
數(shù)據(jù)拆分就是通過某種特定的條件,將我們存放在同一個數(shù)據(jù)庫中的數(shù)據(jù)分散存放到多個數(shù)據(jù)庫(主機)上面,以達到分散單臺設(shè)備負載的效果。數(shù)據(jù)拆分同時還可以提高系統(tǒng)的總體可用性,即使單臺設(shè)備崩潰之后,只是總體數(shù)據(jù)的某部分不可用,而不是所有數(shù)據(jù)。
數(shù)據(jù)拆分根據(jù)其拆分規(guī)則,可以分為兩種拆分模式。一種是按照不同的表拆分到不同的數(shù)據(jù)庫(主機)之上,這種拆分稱之為數(shù)據(jù)的垂直拆分;另外一種則是根據(jù)表中的數(shù)據(jù)的邏輯關(guān)系,將同一個表中的數(shù)據(jù)按照某種條件拆分到多臺數(shù)據(jù)庫(主機)上面,這種拆分稱之為數(shù)據(jù)的水平拆分。
1.1 垂直拆分
數(shù)據(jù)的垂直拆分,也稱縱向拆分,數(shù)據(jù)庫是由很多個數(shù)據(jù)塊組成,我們垂直的將這些數(shù)據(jù)塊拆開,將他們分散到多臺數(shù)據(jù)庫主機上面。
一個架構(gòu)設(shè)計較好的應用系統(tǒng)是由多個功能模塊所組成的,而每一個功能模塊所需要的數(shù)據(jù)對應到數(shù)據(jù)庫中就是一個或者多個表,不同功能模塊的數(shù)據(jù)存放于不同的數(shù)據(jù)庫主機,可以有效避免跨數(shù)據(jù)庫的連接存在。
垂直拆分的架構(gòu),如圖1所示:
圖1 垂直拆分架構(gòu)圖
垂直拆分的優(yōu)點表現(xiàn)在:
1、數(shù)據(jù)庫的拆分簡單明了,拆分規(guī)則明確;
2、應用程序模塊清晰明確,容易整合;
3、數(shù)據(jù)維護方便易行,容易定位。
垂直拆分的缺點則表現(xiàn)在:
1、部分表關(guān)聯(lián)無法在數(shù)據(jù)庫級別完成,需要在程序中完成;
2、頻繁訪問超大數(shù)據(jù)量的表時會存在性能瓶頸;
3、事務(wù)處理更加復雜。
1.2 水平拆分
水平拆分是將訪問頻繁的大數(shù)據(jù)量的表,按照某種規(guī)則拆分到多個表中,每個表只包含一部分數(shù)據(jù)。
數(shù)據(jù)的水平拆分是按照數(shù)據(jù)行的拆分,將表中的某些行拆分到一個數(shù)據(jù)庫,而另外的某些行拆分到其他的數(shù)據(jù)庫中,且拆分時需按照特定的規(guī)則來進行,如根據(jù)公司號或者用戶編碼等進行拆分;谟脩舻木幋a進行數(shù)據(jù)水平拆分,如圖2所示:
圖2 水平拆分架構(gòu)圖
水平拆分的優(yōu)點表現(xiàn)在:
1、表關(guān)聯(lián)能夠在數(shù)據(jù)庫端全部完成;
2、不存在超大型數(shù)據(jù)量和高負載的表;
3、事務(wù)處理相對簡單;
水平拆分的缺點則表現(xiàn)在:
1、切分規(guī)則較復雜,很難抽象出一個滿足能整個數(shù)據(jù)庫的切分規(guī)則;
2、后期數(shù)據(jù)的維護難度有所增加,人為手工定位數(shù)據(jù)更困難;
3、應用系統(tǒng)各模塊的耦合度較高,對數(shù)據(jù)的遷移拆分造成一定的困難。
1.3 聯(lián)合拆分
在實際的應用場景中,系統(tǒng)的業(yè)務(wù)邏輯比較復雜,系統(tǒng)負載比較大,無法通過單獨的一種數(shù)據(jù)拆分方式來實現(xiàn),需要兩種拆分方法結(jié)合使用,分布式數(shù)據(jù)庫應采用垂直拆分與水平拆分聯(lián)合的方式,如圖3所示:
圖3 聯(lián)合拆分架構(gòu)圖
聯(lián)合拆分的優(yōu)點:
1、可以充分利用垂直拆分和水平拆分各自的優(yōu)勢而避免各自的缺陷;
2、系統(tǒng)擴展性得到最大化的提升。
聯(lián)合拆分的缺點:
1、數(shù)據(jù)庫系統(tǒng)架構(gòu)比較復雜,維護難度更大;
2、應用程序架構(gòu)相對更復雜。
2、數(shù)據(jù)整合
數(shù)據(jù)庫在經(jīng)過垂直和(或)水平拆分被存放在不同的數(shù)據(jù)庫之后,RS10系統(tǒng)最大的問題是訪問業(yè)務(wù)數(shù)據(jù),讓業(yè)務(wù)數(shù)據(jù)得到較好的整合,因此,存在兩種解決方案:
第一種方案,在每個子系統(tǒng)中配置和管理需要的數(shù)據(jù)源,直接訪問各個數(shù)據(jù)庫,在每個子系統(tǒng)內(nèi)完成數(shù)據(jù)的整合;
第二種方案,使用數(shù)據(jù)層框架來統(tǒng)一管理所有的數(shù)據(jù)源,數(shù)據(jù)庫集群對每個子系統(tǒng)透明。針對RS10,我們采用第二種解決方案來實現(xiàn)數(shù)據(jù)的整合。
3、分布式數(shù)據(jù)庫層架構(gòu)
在選擇通過數(shù)據(jù)庫的中間代理層來解決數(shù)據(jù)的拆分和整合方案之后,我們選取開源的Amoeba框架,在它基礎(chǔ)上開發(fā)出適合RS10的數(shù)據(jù)拆分和整合方案。
Amoeba是一個基于java開發(fā)的,專注于解決分布式數(shù)據(jù)庫數(shù)據(jù)源整合的開源框架,可用來監(jiān)視、分析或者傳輸他們之間的通訊信息,實現(xiàn)連接路由、Query分析、Query過濾和修改、負載均衡以及基本的HA機制等。所有客戶端請求都是通過這個中間層,然后經(jīng)由中間層進行相應的分析,判斷出是讀操作還是寫操作,然后分發(fā)到相應的數(shù)據(jù)庫服務(wù)器上,我們基于這個框架來實現(xiàn)和部署RS10的分布式數(shù)據(jù)庫,架構(gòu)圖如圖4所示:
圖4 分布式數(shù)據(jù)庫層架構(gòu)
Amoeba能解決RS10以下問題:
1、RS10分庫分表以及拆分之后數(shù)據(jù)的整合;
2、提供了數(shù)據(jù)拆分規(guī)則,降低拆分規(guī)則給數(shù)據(jù)庫帶來的影響;
3、減少了數(shù)據(jù)庫與客戶端的連接數(shù),用戶只訪問自己需要的數(shù)據(jù);
4、通過中間層代理,實現(xiàn)讀寫分離。
基于這個開源框架我們能開發(fā)出同時連接不同的數(shù)據(jù)庫的數(shù)據(jù)源為前端應用程序提供服務(wù),我們通過Amoeba框架分析Query語句,根據(jù)Query語句中所請求的數(shù)據(jù)來自動識別Query語句的數(shù)據(jù)源是什么類型數(shù)據(jù)庫在哪個物理主機上面,然后選擇特定的JDBC驅(qū)動和相應協(xié)議連接后臺數(shù)據(jù)庫。
通過數(shù)據(jù)的垂直和水平拆分,增強數(shù)據(jù)庫的整體服務(wù)能力,通過數(shù)據(jù)層框架解決數(shù)據(jù)拆分和整合,使數(shù)據(jù)庫很容易擴展,只需要增加廉價的PC服務(wù)器,即可線性增加數(shù)據(jù)庫集群的整體服務(wù)能力,從而實現(xiàn)分布式數(shù)據(jù)庫的部署和擴展。
4、結(jié)束語
目前,關(guān)于分布式數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)處理的研究很多,針對RS10大數(shù)據(jù)量的性能以及并發(fā)訪問效率低的問題,基于Amoeba框架,對大數(shù)據(jù)量的表進行拆分,對集中式部署的數(shù)據(jù)庫采用分布式部署,有效的解決數(shù)據(jù)量大、并發(fā)訪問效率低的問題。分布式數(shù)據(jù)庫對數(shù)據(jù)的拆分和整合是最關(guān)鍵的環(huán)節(jié),只有充分解決這個問題,分布式數(shù)據(jù)庫才能得到有效地使用。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:基于分布式數(shù)據(jù)庫數(shù)據(jù)處理的研究
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1083938217.html