趙紅巖
摘 要:文章介紹了低成本數(shù)據(jù)庫(kù)冗余陣列的基本模型和體系結(jié)構(gòu),并重點(diǎn)分析了使用低成本數(shù)據(jù)庫(kù)冗余陣列實(shí)現(xiàn)Clustered JDBC的基本原理。
關(guān)鍵詞:數(shù)據(jù)庫(kù);集群;JDBC
1 引言
通過高速網(wǎng)絡(luò)連接起來(lái)的工作站集群系統(tǒng)為用戶提供了積累的處理能力和巨大的數(shù)據(jù)存儲(chǔ)空間,并且以其高性價(jià)比和良好的可擴(kuò)展性越來(lái)越多的應(yīng)用于高性能科學(xué)計(jì)算和事務(wù)處理中,但目前只有web服務(wù)和應(yīng)用服務(wù)應(yīng)用于集群,而數(shù)據(jù)庫(kù)仍然被保留在大型的專用對(duì)稱多處理機(jī)上,因此其應(yīng)用程序的性能往往被數(shù)據(jù)庫(kù)的性能所限制。因此,如何在低成本的情況下提高性能,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的可擴(kuò)展性和高實(shí)用性,從而適用于各種事務(wù)處理是一個(gè)有待解決的問題。RAIDb的目標(biāo)就是提供比單一數(shù)據(jù)庫(kù)更好的性能和容錯(cuò),并且可以將不同的數(shù)據(jù)庫(kù)融合到一個(gè)數(shù)據(jù)庫(kù)隊(duì)列中去,它的主要目標(biāo)是低成本的軟件和硬件。
2 低成本數(shù)據(jù)庫(kù)冗余陣列(RAIDb)體系結(jié)構(gòu)
低成本數(shù)據(jù)庫(kù)冗余陣列體系結(jié)構(gòu)如圖1所示??蛻舳税l(fā)送請(qǐng)求到RAIDb控制器端,RAIDb控制器端再將這些請(qǐng)求分發(fā)在一批關(guān)系類型數(shù)據(jù)庫(kù)管理系統(tǒng)后端,對(duì)于客戶端來(lái)說(shuō)就類似于操作一個(gè)單一的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)一樣。
RAIDb控制器能夠提供不同程度的服務(wù),控制器必須確定數(shù)據(jù)庫(kù)表在每個(gè)關(guān)系類型數(shù)據(jù)庫(kù)的后節(jié)點(diǎn)上是可用的,以至于所有的請(qǐng)求通過分析SQL的聲明能夠被發(fā)送到正確的節(jié)點(diǎn)上。
3 實(shí)現(xiàn)Clustered JDBC的基本原理
3.1 基本RAIDb分級(jí)
3.1.1 RAIDb-0完全分割
RAIDb-0與RAID-0相似,RAIDb-0將所有的數(shù)據(jù)庫(kù)表分割到所有節(jié)點(diǎn)之中。如圖2所示,給出了一個(gè)將N個(gè)數(shù)據(jù)庫(kù)表分割到5個(gè)節(jié)點(diǎn)上的例子。RAIDb-0要使用至少2個(gè)數(shù)據(jù)庫(kù)后節(jié)點(diǎn),但由于它沒有表的副本,因此導(dǎo)致其沒有容錯(cuò)的功能。
3.1.2 RAIDb-1完全復(fù)制
RAIDb-1和RAID-1相似,RAIDb-1將數(shù)據(jù)庫(kù)完全復(fù)制到每個(gè)節(jié)點(diǎn)上,RAIDb-1需要每個(gè)后節(jié)點(diǎn)都有足夠大的存儲(chǔ)空間以用來(lái)保存所有的數(shù)據(jù)庫(kù)數(shù)據(jù),基本結(jié)構(gòu)如圖3所示。RAIDb-1最少的節(jié)點(diǎn)數(shù)量為2個(gè)節(jié)點(diǎn),當(dāng)一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí)其它的節(jié)點(diǎn)依然能夠正常工作,因此RAIDb-1提供了更好的容錯(cuò)能力。
3.1.3 RAIDb-2部分復(fù)制
RAIDb-2是在綜合了RAIDb-0和RAIDb-1兩者的優(yōu)點(diǎn)的基礎(chǔ)上提出的一種新的解決方案,RAIDb-2不需要每個(gè)節(jié)點(diǎn)都存放一個(gè)完整的數(shù)據(jù)庫(kù)備份。RAIDb-2至少需要提供3個(gè)節(jié)點(diǎn),一個(gè)是數(shù)據(jù)庫(kù)的完全備份,其它的節(jié)點(diǎn)對(duì)應(yīng)一個(gè)或多個(gè)數(shù)據(jù)表的備份,工作原理如圖4所示。例如一個(gè)數(shù)據(jù)庫(kù)文件包含3張數(shù)據(jù)表:tablex,tabley,tablez;第一個(gè)數(shù)據(jù)庫(kù)后的節(jié)點(diǎn)包含了完整數(shù)據(jù)庫(kù)的備份,其它的節(jié)點(diǎn)上包含一個(gè)兩個(gè)數(shù)據(jù)表,對(duì)于tablex和tabley共有3個(gè)備份,tablez有2個(gè)備份,無(wú)論那個(gè)節(jié)點(diǎn)出現(xiàn)故障,都能從別的節(jié)點(diǎn)上成功找到數(shù)據(jù)。
3.2 RAIDb基本級(jí)別的組合
由于一個(gè)RAIDb控制器的數(shù)據(jù)庫(kù)后端的連接節(jié)點(diǎn)的數(shù)量是有限的,因此將多個(gè)RAIDb控制器組合在一起就可以建立更多數(shù)據(jù)量的數(shù)據(jù)庫(kù)管理系統(tǒng)。如圖5所示,顯示了兩個(gè)RAIDb級(jí)別的組合情況,第一個(gè)等級(jí)是RAIDb-1控制器,它被當(dāng)作3個(gè)完整數(shù)據(jù)庫(kù)的后端,在第2個(gè)等級(jí)中,每個(gè)完整的數(shù)據(jù)庫(kù)由一個(gè)包含不同配置的RAIDb-0來(lái)實(shí)現(xiàn),這種組合可以被表示為RAIDb-1-0。
如圖6所示,給出了一個(gè)RAIDb-0-1的組合,利用RAIDb-1控制器將數(shù)據(jù)庫(kù)分割成3個(gè)部分,在上端的RAIDb-0中平衡3個(gè)下端的RAIDb-1控制器上的請(qǐng)求。
理論上來(lái)講,對(duì)于RAIDb組合的深度沒有限制,也可以用相同的RAIDb控制器等級(jí)來(lái)進(jìn)行組合。例如,一個(gè)RAIDb-1-1組合可以被看作一個(gè)大數(shù)量的鏡像數(shù)據(jù)庫(kù)的解決方案,這種樹型的體系結(jié)構(gòu)通常是大型數(shù)據(jù)庫(kù)集群的解決方案。
4 Clustered JDBC的實(shí)現(xiàn)
Clustered是緊密連接的一組計(jì)算機(jī),用來(lái)持續(xù)性地提供高性能的計(jì)算服務(wù),把一組計(jì)算機(jī)連在一起并非難事,但要讓他們獲得很高的性能就不那么容易了。Cluster的初衷在于以沒有單點(diǎn)故障的體系結(jié)構(gòu)來(lái)達(dá)到系統(tǒng)的高可用性和可伸縮性,而且要求采用通用標(biāo)準(zhǔn)的計(jì)算機(jī),而不是特殊專用的計(jì)算機(jī)部件,從而能以較低的成本獲得較好的可伸縮性。Cluster中的計(jì)算機(jī)應(yīng)當(dāng)具有非常好的協(xié)同性。如果一臺(tái)計(jì)算機(jī)的性能不足以完成某項(xiàng)任務(wù),其它的系統(tǒng)成員就會(huì)加入進(jìn)來(lái),共同執(zhí)行這項(xiàng)任務(wù)。應(yīng)用實(shí)踐證明,由通用的計(jì)算機(jī)部件協(xié)同工作,完全可能使其運(yùn)算能力超過大型主機(jī)、超級(jí)計(jì)算機(jī)和容錯(cuò)系統(tǒng),而且具有更低的成本。
JDBC(Java DataBase Connectivity)是Java與數(shù)據(jù)庫(kù)的接口規(guī)范,JDBC定義了一個(gè)支持標(biāo)準(zhǔn)SQL功能的通用低層的API,它由Java語(yǔ)言編寫的類和接口組成,旨在讓各數(shù)據(jù)庫(kù)開發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)API。
本文設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)RAIDb的應(yīng)用,該應(yīng)用是一個(gè)以JDBC為基礎(chǔ)的JAVA中間件,它能夠建立所有的RAIDb配置,該軟件提供了一個(gè)JDBC驅(qū)動(dòng)器,并可以工作在任何現(xiàn)有的商業(yè)的或開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)上。
5 結(jié)語(yǔ)
文章先對(duì)低成本數(shù)據(jù)庫(kù)冗余陣列(RAIDb)進(jìn)行了簡(jiǎn)單介紹,然后通過對(duì)基本模型、體系結(jié)構(gòu)以及實(shí)現(xiàn)方法的討論分析了Clustered JDBC的原理。
[參考文獻(xiàn)]
[1]Christiana Amaz,Alan L.Cox.Willy zwaenepoel-conflict-aware scheduling for dynamic content applications[C]. Proceedings of USITS 2003,March 2003.
[2]Enhydra octopus[EB/OL].http://octopus.enhydra.org.
[3]Bettina Kemme.Database replication for clusters of workstations[D].ph.D.thesis nr.13864,Swiss Federal Institute of Technology Zurich.2000.