分布式數(shù)據(jù)庫(kù)在校園一卡通中的應(yīng)用
文章出處:http://www.mjagi.com 作者: 人氣: 發(fā)表時(shí)間:2011年12月11日
摘要:論文首先分析了分布式數(shù)據(jù)庫(kù)的概念,然后給出了校園一卡通中數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)了分布式的流程。最后探索了系統(tǒng)應(yīng)用的關(guān)鍵點(diǎn),該論文可以作為有關(guān)人員有益的參考。
現(xiàn)代化的學(xué)校少不了現(xiàn)代化管理設(shè)施、設(shè)備的武裝。管理信息化水平正在成為衡量學(xué)??傮w水平的重要因素之一,也是學(xué)校管理能否達(dá)到現(xiàn)代化標(biāo)準(zhǔn)的重要標(biāo)志。校園一卡通系統(tǒng)是數(shù)字化校園的基礎(chǔ)工程,是數(shù)字化校園中有機(jī)的和重要的組成部分。應(yīng)用一卡通,主要是結(jié)合這校園網(wǎng),與校園網(wǎng)數(shù)據(jù)庫(kù)相連,采用一個(gè)統(tǒng)一的軟件進(jìn)行管理,完成有關(guān)的查詢。消費(fèi)等等一系列功能。達(dá)到 “一卡在手,走遍校園 ”必將滿足學(xué)校數(shù)字化校園建設(shè)和金融服務(wù)的需求及目的。
1分布式數(shù)據(jù)庫(kù)淺析
1.1分布式數(shù)據(jù)庫(kù)的概念
要開(kāi)發(fā)一個(gè)基于數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng),其中最關(guān)鍵的一步就是整個(gè)系統(tǒng)所依據(jù)的數(shù)據(jù)庫(kù)的建模設(shè)計(jì),從邏輯的到物理的,一個(gè)環(huán)節(jié)疏于設(shè)計(jì),整個(gè)的應(yīng)用系統(tǒng)便似建立在危房之上,隨著開(kāi)發(fā)過(guò)程的不斷深入,它要隨時(shí)面臨著各種難以預(yù)料的風(fēng)險(xiǎn),開(kāi)發(fā)者要為修改或重新設(shè)計(jì)沒(méi)有設(shè)計(jì)好的數(shù)據(jù)庫(kù)系統(tǒng)而付出難以預(yù)料的代價(jià)。所以,一個(gè)良好的數(shù)據(jù)庫(kù)設(shè)計(jì)是高效率的系統(tǒng)所需要的重要基礎(chǔ)。而分布式數(shù)據(jù)庫(kù)就是本系統(tǒng)所依托的核心。
所謂分布式數(shù)據(jù)庫(kù)(簡(jiǎn)稱 DDB)可以定義為物理上分布而邏輯上集中的共享數(shù)據(jù)的集合。分布式數(shù)據(jù)庫(kù)跟集中式數(shù)據(jù)庫(kù)有共同點(diǎn)也有不同之處。對(duì)于分布式數(shù)據(jù)庫(kù)來(lái)講,它也包含著兩個(gè)重要的組成部分:首先是對(duì)于數(shù)據(jù)的集合,它們是物理上硬件存在的數(shù)據(jù)庫(kù),是分布式數(shù)據(jù)庫(kù)最關(guān)鍵的組成部分。另外的一個(gè)組成部分,是隸屬于數(shù)據(jù)結(jié)構(gòu)方面,它實(shí)現(xiàn)了對(duì)數(shù)據(jù)段的分片、分布描述。
1.2分布式數(shù)據(jù)庫(kù)的策略
在分布式數(shù)據(jù)庫(kù)系統(tǒng),數(shù)據(jù)分割和分布是兩個(gè)重要的概念。事實(shí)上 ,大部分的問(wèn)題是分布式數(shù)據(jù)庫(kù)數(shù)據(jù)分割和分布 ,導(dǎo)致整個(gè)系統(tǒng)的可用性和可靠性以及效率方面的影響。數(shù)據(jù)分割發(fā)揮著重要的作用,它采用某種方式使得全局?jǐn)?shù)據(jù)庫(kù)按照一定的層次、邏輯關(guān)系進(jìn)行整合,從而實(shí)現(xiàn)得到不同的局部數(shù)據(jù)庫(kù);數(shù)據(jù)分布通常描述了數(shù)據(jù)庫(kù)的分布特點(diǎn)。以為對(duì)于分布式數(shù)據(jù)庫(kù)來(lái)說(shuō),所有的數(shù)據(jù)沒(méi)有保存在一個(gè)統(tǒng)一的地方,它們以邏輯段方式分布到了很多網(wǎng)絡(luò)節(jié)點(diǎn)上。一般來(lái)說(shuō),分布式數(shù)據(jù)庫(kù)的數(shù)據(jù)分布策略是多種多樣的,下面進(jìn)行分析:
1)所有的數(shù)據(jù)段集中于同一地點(diǎn)。這樣的策略保證系統(tǒng)的數(shù)據(jù)都存儲(chǔ)在同一地點(diǎn) ,使得對(duì)其控制和管理非常之容易,也可以使得數(shù)據(jù)一致性和完整性得到保證。這里需要注意,由于檢索和修改數(shù)據(jù)通過(guò)這個(gè)平臺(tái)的時(shí)候,會(huì)使得現(xiàn)場(chǎng)負(fù)擔(dān)加重。特別是如果這個(gè)網(wǎng)站存在著瓶頸,那么很容易導(dǎo)致整個(gè)系統(tǒng)癱瘓,總之系統(tǒng)的可靠性得不到保證。
2)分割式所有數(shù)據(jù)只有一份,它被分割成若干個(gè)邏輯片段,每個(gè)分成幾塊分配在了不同地點(diǎn)。這樣的策略能夠允許充分利用各種現(xiàn)場(chǎng)倉(cāng)儲(chǔ)設(shè)備來(lái)進(jìn)行數(shù)據(jù)存儲(chǔ),存儲(chǔ)的數(shù)據(jù)在不同的地點(diǎn)可以修改數(shù)據(jù),并發(fā)揮操作系統(tǒng)的并行處理能力。同時(shí) ,由于數(shù)據(jù)分布在多個(gè)地點(diǎn) ,當(dāng)一些網(wǎng)站出現(xiàn)故障時(shí),系統(tǒng)還可以運(yùn)行,提高了系統(tǒng)的可靠性。
3)復(fù)制式。對(duì)于總體數(shù)據(jù)存在著多個(gè)復(fù)制備份,而且每一個(gè)網(wǎng)站都是完全的拷貝數(shù)據(jù)。通過(guò)這個(gè)策略,會(huì)使得數(shù)據(jù)庫(kù)可靠性高、響應(yīng)速度快,而且回收數(shù)據(jù)容易得多。但是需要使得每個(gè)站點(diǎn)數(shù)據(jù)同步,這往往付出高昂的代價(jià)。而且當(dāng)整個(gè)系統(tǒng)的數(shù)據(jù)冗余比較嚴(yán)重時(shí),數(shù)據(jù)庫(kù)存儲(chǔ)通常也會(huì)受到較大影響。
4)混合數(shù)據(jù)分為幾個(gè)子集,每個(gè)不同子集的網(wǎng)站,但沒(méi)有任何地點(diǎn)保存所有的數(shù)據(jù)。這樣的策略,具有復(fù)制式和分割式的雙重特點(diǎn),可以提高系統(tǒng)效率,但是也保有了二者的復(fù)雜性。
2基于 XML的數(shù)據(jù)庫(kù)交互
2.1基本思想
在整個(gè)校園一卡通分布式數(shù)據(jù)庫(kù)及數(shù)據(jù)分布方案中,把各個(gè)子系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)為如圖 1所示。
圖1 數(shù)據(jù)庫(kù)互聯(lián)
由于一卡通的實(shí)現(xiàn),實(shí)際上是對(duì)原有校園各個(gè)子系統(tǒng)的二次開(kāi)發(fā)、改造與結(jié)合,那么整個(gè)一卡通系統(tǒng)的實(shí)現(xiàn)就需要需要借助于 XML技術(shù)。 XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)是一種界定文本數(shù)據(jù)簡(jiǎn)便而標(biāo)準(zhǔn)的方法,得到工業(yè)界廣泛支持,具有自描述和數(shù)據(jù)結(jié)構(gòu)化表示的特點(diǎn)。 1998年 2月,XML1.0成為 W3C的推薦標(biāo)準(zhǔn),它的數(shù)據(jù)描述機(jī)制使它成為 Internet/Intranet上共享數(shù)據(jù)信息的一種有效方式,能夠在不同的用戶和程序之間交換數(shù)據(jù)而不論其平臺(tái)如何;文檔類型定義 (Document Type Definition DTD)則使 XML文檔不僅遵循 XML的語(yǔ)法規(guī)則,而且受所創(chuàng)建的詞匯表規(guī)則約束,成為有效的 XML文檔。
本文主要是應(yīng)用 XML作為數(shù)據(jù)庫(kù)從分布到中央的交互載體。在相互轉(zhuǎn)換時(shí)需要應(yīng)用某種的規(guī)則從而保證正向變換以及反向變換都是可行的。不僅如此,這種規(guī)則還要使得關(guān)系數(shù)據(jù)庫(kù)里固有的約束關(guān)系得以保存。首先當(dāng)把關(guān)系模式轉(zhuǎn)化為 XML的表達(dá)時(shí),應(yīng)該根據(jù)提取出的關(guān)系模式來(lái)生成關(guān)系模式,這個(gè)過(guò)程是通過(guò)數(shù)據(jù)樹(shù)來(lái)實(shí)現(xiàn)的;然后需要利用這個(gè)關(guān)系數(shù)據(jù)樹(shù)逆向生成表跟表之間所具有的嵌套關(guān)系,從而得到結(jié)構(gòu)樹(shù)。把映射結(jié)構(gòu)樹(shù)以及關(guān)系樹(shù)結(jié)合起來(lái),就得到了 XML模式的 XML Schema文件。當(dāng)把 XML模式轉(zhuǎn)換為關(guān)系模式的時(shí)候,這里需要調(diào)用解析工具來(lái)分析 Schema,然后用形式化的語(yǔ)句給出它里面所蘊(yùn)含的相關(guān)結(jié)構(gòu)和信息。再一步,就是根據(jù)形式化的結(jié)果生成元素樹(shù)。而這就獲得了 XML Schema描述的結(jié)構(gòu)。
2.2關(guān)系模式映射為 XML模式
對(duì)于關(guān)系模式變換為 XML來(lái)說(shuō),需要應(yīng)用有關(guān)的程序接口來(lái)讀取數(shù)據(jù)庫(kù)相關(guān)數(shù)據(jù),同時(shí)得到所蘊(yùn)含的模式關(guān)系。進(jìn)一步應(yīng)用集合,來(lái)對(duì)關(guān)系模式進(jìn)行表達(dá)。
當(dāng)映射結(jié)構(gòu)把關(guān)系轉(zhuǎn)過(guò)以后,就會(huì)得到表表之間,以及列列的相互關(guān)系。這個(gè)轉(zhuǎn)化包含了兩步,其一是關(guān)系模式的表、列到 XML下元素、屬性的映射。這一步的關(guān)鍵是,數(shù)的生成以及 XML-Schema文檔的建立。具體的過(guò)程是這樣的,通過(guò)建立結(jié)構(gòu)樹(shù),然后采用深度遍歷的方式,把嵌入的上層元素反映到文檔中,然后將下層元素也反映過(guò)去。
2.3 XML模式到關(guān)系模式的映射
映射轉(zhuǎn)化需要很多步才能完成。首先是依托 XML,然后把樹(shù)作為輔助性的工具,把素有向樹(shù)中某些節(jié)點(diǎn)化為表,某些化為列,而根元素這里就取名為原來(lái)的是數(shù)據(jù)庫(kù),里面的屬性把數(shù)據(jù)庫(kù)的關(guān)系進(jìn)行了表達(dá);緊接著是對(duì)應(yīng)關(guān)系模式 R中 P的映射,這里主要是把 XML Schema中的普通元素定義和屬性轉(zhuǎn)化為列的關(guān)系;再次是主關(guān)鍵字的約束轉(zhuǎn)化。在此基礎(chǔ)上,生成 SQL語(yǔ)言:1)合成創(chuàng)建表語(yǔ)句,涉及關(guān)系模式各列的數(shù)據(jù)類型、默認(rèn)值、是否可以為空等條件。 2)根據(jù)關(guān)系模式 R(PK)合成主鍵語(yǔ)句,保證關(guān)系模式的實(shí)體完整性。 3)根據(jù)關(guān)系模式 R(FK)合成外鍵語(yǔ)句,保證關(guān)系模式的參照完整完性。 4)根據(jù)關(guān)系模式 R(UI)合成唯一鍵,根據(jù) P中的分量合成檢查語(yǔ)句,保證關(guān)系模式的用戶定義完整性。
當(dāng)這些步驟都完成以后,就需要解析 XML數(shù)據(jù)文檔了。這里需要依照 Schema的轉(zhuǎn)化結(jié)果,把數(shù)據(jù)合成 SQL語(yǔ)言,從而生成數(shù)據(jù)庫(kù)。
3并發(fā)時(shí)的一致性保證
在整個(gè)校園一卡通分布式數(shù)據(jù)庫(kù)及數(shù)據(jù)分布方案中,把各個(gè)子系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)為各用戶使用,即允許多個(gè)用戶同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)。在這種情況下,經(jīng)常會(huì)出現(xiàn)這樣的問(wèn)題:那就是許多用戶一起并發(fā)對(duì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、修改的操作時(shí),會(huì)產(chǎn)生一定的沖突。如果沒(méi)有某種保障措施,很有可能出現(xiàn)錯(cuò)誤的結(jié)果。比如,如果同時(shí)有兩個(gè)人都在訪問(wèn)相同的表格、行和列,那么就很有可能導(dǎo)致數(shù)據(jù)的訪問(wèn)沖突。這種保障措施主要是為了協(xié)調(diào)這種對(duì)數(shù)據(jù)訪問(wèn)的一致性,需要在 SQLServer中應(yīng)用鎖機(jī)制,同時(shí)限制、保證最大量的并發(fā)用戶。這里特別需要對(duì)鎖機(jī)制進(jìn)行說(shuō)明,它主要作用就是像一把鎖一樣,當(dāng)某個(gè)動(dòng)作正在修改數(shù)據(jù)庫(kù)時(shí),要防止其它用戶訪問(wèn)到不一致的數(shù)據(jù)。這里當(dāng)某個(gè)事務(wù)向系統(tǒng)發(fā)出要求的動(dòng)作時(shí),就會(huì)對(duì)被操作的數(shù)據(jù)加鎖(LOCK),其它事務(wù)必須等到此事務(wù)解鎖之后才能訪問(wèn)該數(shù)據(jù),從而,在多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí)確保不互相干擾。
參考文獻(xiàn):
[1]裴沛 一卡通在數(shù)字化校園整合中的關(guān)鍵技術(shù)研究[J].2008(7):20-21.
[2]佩英 分布式數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用[M].北京:科學(xué)出版社 ,2008.
[3]郭品 SQLServer2000系統(tǒng)管理 [M].北京:電子工業(yè)出版社,2008.
【稿件聲明】:如需轉(zhuǎn)載,必須注明來(lái)源和作者,保留文中圖片和內(nèi)容的完整性,違者將依法追究。