關(guān)系型數(shù)據(jù)庫范文
時間:2023-03-29 22:07:35
導(dǎo)語:如何才能寫好一篇關(guān)系型數(shù)據(jù)庫,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。
篇1
因特網(wǎng)發(fā)展提出的新挑戰(zhàn)
自20世紀(jì)80年代以來,開發(fā)人員在開發(fā)企業(yè)級應(yīng)用的時候,關(guān)系型數(shù)據(jù)庫已經(jīng)成為主流的選擇,因?yàn)檫@種最初由E. F.Codd博士提出、并由IBM公司作為一種通用數(shù)據(jù)庫而廣泛推行的數(shù)據(jù)庫技術(shù)已經(jīng)相當(dāng)成熟。關(guān)系型數(shù)據(jù)庫可以提供高擴(kuò)展性的高性能事務(wù)處理和多平臺支持,同時還提供一個數(shù)據(jù)建??蚣?,其中很多框架都包括應(yīng)用開發(fā)的腳本語言。
然而,20世紀(jì)90年代的因特網(wǎng)革命,使開發(fā)人員們已經(jīng)開始接受新的數(shù)據(jù)模型和程序范本。一些封裝在面向?qū)ο蟮某绦蚶碚?,如?shù)據(jù)與代碼結(jié)合、信息與方法相結(jié)合等,已成為全新的開發(fā)路線,打破了傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的工作模式。同時,因特網(wǎng)革命產(chǎn)生了更復(fù)雜的數(shù)據(jù)需求。數(shù)字?jǐn)?shù)據(jù)通過因特網(wǎng)提供的大量數(shù)字信息在全球得以輕松傳播,并因此產(chǎn)生了大量的數(shù)據(jù)文件或二進(jìn)制大對象 (BLOBs)――這些都遠(yuǎn)不是傳統(tǒng)的關(guān)系型數(shù)據(jù)模型所能解決的。
面向?qū)ο蟮臄?shù)據(jù)庫技術(shù)
面向?qū)ο笫且环N遠(yuǎn)比傳統(tǒng)的關(guān)系模型強(qiáng)大得多的邏輯結(jié)構(gòu)。一些面向?qū)ο蟮母拍?,如“對象繼承”等,更強(qiáng)調(diào)用一種真實(shí)可行的角度來看待并處理現(xiàn)實(shí)世界的信息。其它概念,如“封裝”和“多態(tài)”等,則提供了更強(qiáng)大的機(jī)制來管理對象,大大提高了可重用性和標(biāo)準(zhǔn)化等編程效率。面向?qū)ο筮€可以很經(jīng)濟(jì)地將代碼、數(shù)據(jù)和BLOBs聯(lián)系在一起,同時為基于因特網(wǎng)的快速應(yīng)用開發(fā)(RAD)提供理想的基礎(chǔ)。
絕大多數(shù)開發(fā)人員已經(jīng)意識到面向?qū)ο罄碚摰膶?shí)用性和重要性,并已開始采用面向?qū)ο蟮某绦蛘Z言。然而,面向?qū)ο蟮睦碚摚诤艽蟪潭壬先匀皇苤朴趥鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫技術(shù)。以網(wǎng)絡(luò)為中心的數(shù)據(jù)庫必須擁有更強(qiáng)大的性能和伸縮性,這些都是存儲信息型的關(guān)系型數(shù)據(jù)庫永遠(yuǎn)不可能做到的。
面向?qū)ο蟮睦碚撆c關(guān)系型數(shù)據(jù)庫技術(shù)的應(yīng)用開發(fā),產(chǎn)生了“抗阻不匹配”現(xiàn)象,即開發(fā)人員的邏輯(對象)結(jié)構(gòu)與物理的二維(關(guān)系的)表不相匹配,而所謂的“對象關(guān)系映射”在許多應(yīng)用開發(fā)項(xiàng)目中會消耗掉40%的成本。抗阻不匹配的現(xiàn)象,大大增加了開發(fā)和平臺的成本,并降低了性能和伸縮性。應(yīng)用越大,面向?qū)ο蟮年P(guān)系型建模就越復(fù)雜,問題就會越嚴(yán)重。
面向?qū)ο蟮暮箨P(guān)系型數(shù)據(jù)庫
多年來令開發(fā)人員工作輕松的關(guān)系模型數(shù)據(jù)庫正令他們越來越頭疼。引導(dǎo)潮流的先驅(qū)們正不斷地去尋求新的數(shù)據(jù)庫管理系統(tǒng)的替代品。
面向?qū)ο蟮暮箨P(guān)系型數(shù)據(jù)庫管理系統(tǒng)也許是一個不錯的選擇。它所采用的靈活的物理結(jié)構(gòu),可以同時根據(jù)關(guān)系和面向?qū)ο髞泶鎯?shù)據(jù)。開發(fā)人員可以在單一的數(shù)據(jù)庫管理系統(tǒng)中選擇最適合應(yīng)用的開發(fā)范本、存儲代碼和BLOBs。表與對象在數(shù)據(jù)庫層之間能夠相互轉(zhuǎn)換,可以作為一種不同系統(tǒng)與不同應(yīng)用之間數(shù)據(jù)共享的通用機(jī)制來支持SQL。后關(guān)系型數(shù)據(jù)庫會帶來更低的軟件和平臺成本、更好的運(yùn)行性能與伸縮性,并且降低用戶跨應(yīng)用、環(huán)境和平臺的數(shù)據(jù)庫管理成本。
篇2
關(guān)鍵詞:非關(guān)系型數(shù)據(jù)庫;無模式;聚合結(jié)構(gòu);實(shí)驗(yàn)教學(xué);云計算
中圖分類號:TP399 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)31-7046-03
云計算是現(xiàn)階段計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展的必然結(jié)果,是當(dāng)今信息領(lǐng)域的重大變革,是解決信息時代大用戶、大數(shù)據(jù)和大系統(tǒng)挑戰(zhàn)的切實(shí)可行的方案[1]。當(dāng)今世界發(fā)達(dá)國家或地區(qū)如美國、歐洲、日本等都是政府牽頭推動云計算的發(fā)展,而中國政府的“十二五”規(guī)劃中將云計算作為重點(diǎn)發(fā)展項(xiàng)目[2],并鼓勵企業(yè)推廣開發(fā)應(yīng)用,目前已獲得了最大的經(jīng)濟(jì)效益和社會影響力。因此云計算是新一代信息技術(shù)的主流,在云計算的基礎(chǔ)上可衍生出云制造、云服務(wù)及云媒體等技術(shù)?,F(xiàn)代企業(yè)的市場競爭日趨激烈,所面對的用戶數(shù)量和業(yè)務(wù)數(shù)據(jù)量與日激增,其業(yè)務(wù)系統(tǒng)日并發(fā)訪問管理、海量數(shù)據(jù)的存儲、復(fù)雜的系統(tǒng)架構(gòu)等問題給企業(yè)帶來了最大的管理壓力,其開發(fā)成本也激烈上升,而物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)快速發(fā)展增加了這一趨勢。在諸多問題中,海量數(shù)據(jù)庫的設(shè)計、存儲和訪問顯得尤為突出。而傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在處理集群環(huán)境下的海量數(shù)據(jù)時已沒有非關(guān)系型數(shù)據(jù)庫那樣優(yōu)勢明顯和靈活,實(shí)際上使用非關(guān)系型數(shù)據(jù)庫能構(gòu)建性能更高、擴(kuò)展性更好及更易編程的web系統(tǒng)。
因此在大數(shù)據(jù)時代下,數(shù)據(jù)庫課程教學(xué)必須引入非關(guān)系型數(shù)據(jù)庫的教學(xué)內(nèi)容,其教學(xué)課時比重應(yīng)與關(guān)系型數(shù)據(jù)庫相當(dāng)(48課時),這是當(dāng)今用戶業(yè)務(wù)系統(tǒng)的迫切需求和云計算技術(shù)發(fā)展對此類信息化人才大量需求的必然結(jié)果,也是目前高校實(shí)施信息化卓越工程師的重點(diǎn)解決方案[3]。
1 大數(shù)據(jù)時代非關(guān)系型數(shù)據(jù)庫課程理論教學(xué)設(shè)計
以解決集群環(huán)境下的海量數(shù)據(jù)庫的設(shè)計、存儲和查詢?yōu)槟康牡姆顷P(guān)系型數(shù)據(jù)庫在教學(xué)時可以參照關(guān)系型數(shù)據(jù)庫的課程體系和教學(xué)方法[4]。以關(guān)系型數(shù)據(jù)庫教學(xué)的主要內(nèi)容包括關(guān)系理論、關(guān)系代數(shù)、規(guī)范化設(shè)計、SQL應(yīng)用、儲存過程、函數(shù)、觸發(fā)器、事務(wù)與并發(fā)性、安全性及高級語言的開發(fā)等。與關(guān)系型數(shù)據(jù)庫相比,非關(guān)系型數(shù)據(jù)庫沒有復(fù)雜的關(guān)系特性和嚴(yán)格的范式設(shè)計,更具靈活性,兩者的比較如表1所示。
從表1可以得出,在大數(shù)據(jù)時代主要解決了數(shù)據(jù)庫的并發(fā)負(fù)載問題、海量數(shù)據(jù)存儲問題、高可擴(kuò)展性與高可用性問題、讀寫實(shí)時性問題以及開發(fā)與維護(hù)成本問題。
由非關(guān)系型數(shù)據(jù)庫的特點(diǎn),設(shè)計的理論教學(xué)內(nèi)容如下:
1)非關(guān)系型數(shù)據(jù)庫的基本概念 主要包括該數(shù)據(jù)庫的組成、分類、特征及作用、邏輯結(jié)構(gòu)、集合、文檔、鍵值對、聚合;課內(nèi)教學(xué)大約占4課時。
2)非關(guān)系型數(shù)據(jù)庫建模 與關(guān)系型數(shù)據(jù)庫的ER模型不同,非關(guān)系型數(shù)據(jù)庫集合之間主要采用聚合結(jié)構(gòu),因?yàn)榫酆鲜沟迷诩褐泄芾頂?shù)據(jù)存儲更為方便,當(dāng)然設(shè)計的聚合模型會因人而異,圖1是某CRM系統(tǒng)銷售模塊的數(shù)據(jù)庫ER模型,而圖2是其對應(yīng)的非關(guān)系型數(shù)據(jù)庫的聚合模型。這部分內(nèi)容是重點(diǎn),課內(nèi)教學(xué)大約占8課時。
5)非關(guān)系型數(shù)據(jù)庫的管理 主要包括用戶的創(chuàng)建、授權(quán)機(jī)制;索引創(chuàng)建與維護(hù);數(shù)據(jù)備份與恢復(fù);事務(wù)及并發(fā)性等,這里的事務(wù)主要指一致性,海量存儲中是靠很多節(jié)點(diǎn)來執(zhí)行數(shù)據(jù)操作的,具有較好的事務(wù)一致性,要做的僅僅是在網(wǎng)絡(luò)延遲與一致性之間取得平衡[5]。課內(nèi)教學(xué)大約占4課時。
6)非關(guān)系型數(shù)據(jù)庫系統(tǒng)網(wǎng)絡(luò)架構(gòu) 主要包括集群環(huán)境下復(fù)制集、分片技術(shù)的原理及由復(fù)制集加分片技術(shù)共同構(gòu)建項(xiàng)目開發(fā)環(huán)境,可實(shí)現(xiàn)數(shù)據(jù)海量存儲和高可用性需求,課內(nèi)教學(xué)大約占4課時。
7)非關(guān)系型數(shù)據(jù)庫的實(shí)例開發(fā) 主要內(nèi)容包括使用Java或C#語言實(shí)現(xiàn)一個非關(guān)系型數(shù)據(jù)庫小型系統(tǒng)的設(shè)計與實(shí)現(xiàn),與開發(fā)關(guān)系型數(shù)據(jù)庫使用JDBC或組件不同,非關(guān)系型數(shù)據(jù)庫的開發(fā)使用專門的API接口,該接口簡單易學(xué)易用。課內(nèi)教學(xué)大約占6課時。
因此該課程的課內(nèi)理論總課時為38,不足的部分學(xué)生可利用課外時間補(bǔ)充與完善所學(xué)知識點(diǎn)。
2 大數(shù)據(jù)時代非關(guān)系型數(shù)據(jù)庫課程實(shí)驗(yàn)項(xiàng)目設(shè)計
該課程的實(shí)驗(yàn)設(shè)計依據(jù)是按照大數(shù)據(jù)時代下的信息系統(tǒng)的開發(fā)應(yīng)用為前提。學(xué)生要能單獨(dú)設(shè)計無模式的數(shù)據(jù)模型,進(jìn)行文檔對象的CRUD操作,掌握集群環(huán)境下的復(fù)制與分片技術(shù),并能通過某種高級語言開發(fā)非關(guān)系型數(shù)據(jù)庫。設(shè)計實(shí)驗(yàn)5個,每個實(shí)驗(yàn)2學(xué)時,共10學(xué)時。如表2所示。
3 結(jié)束語
高校作為先進(jìn)信息技術(shù)研究、教學(xué)的最前端,應(yīng)適應(yīng)當(dāng)今信息技術(shù)的快速發(fā)展,與時俱進(jìn)。與其對應(yīng)的課程應(yīng)做出相應(yīng)的改革和調(diào)整。關(guān)系型數(shù)據(jù)庫作為傳統(tǒng)的數(shù)據(jù)庫課程一直占據(jù)信息化系列課程的主導(dǎo)地位,數(shù)十年沒有動搖。但隨著大數(shù)據(jù)時代的來臨,非關(guān)系型數(shù)據(jù)庫來勢迅猛,大有取代前者的趨勢,但關(guān)系型數(shù)據(jù)庫在實(shí)時聯(lián)機(jī)事務(wù)處理、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、完整性約束等方面具有無可替代的優(yōu)勢,因此這兩種數(shù)據(jù)庫還將在一定時間內(nèi)長期存在,現(xiàn)行系統(tǒng)的數(shù)據(jù)存儲仍是混合式存儲模式結(jié)構(gòu),因此早日引入非關(guān)系型數(shù)據(jù)庫課程的教學(xué)有利于保持高校課程體系的先進(jìn)性,有利于新技術(shù)人才的培養(yǎng),有利于國家推動云計算的進(jìn)展。
參考文獻(xiàn):
[1] 姚宏宇,田舒寧.云計算大數(shù)據(jù)時代的系統(tǒng)工程[M].北京:電子工業(yè)出版社,2013.
[2] 許守東.云計算技術(shù)應(yīng)用與實(shí)踐[M].北京:中國鐵道出版社,2012.
[3] 劉鵬.云計算(第二版)[M].北京:電子工業(yè)出版社,2013.
篇3
【關(guān)鍵詞】 VB6.0 C# SQL SERVER T-SQL 類
【中圖分類號】G42 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2013)05-0243-03
前言
中央廣播電視大學(xué)的數(shù)據(jù)庫應(yīng)用技術(shù)教材是基于VB6.0和SQL SERVER2000實(shí)驗(yàn)環(huán)境下的,這為我們的數(shù)據(jù)庫應(yīng)用技術(shù)教學(xué)實(shí)踐帶來一些困擾和不便,尤其不便于學(xué)生課后更準(zhǔn)確有效地自學(xué)教材。對此問題,筆者借助多年教學(xué)經(jīng)驗(yàn)的積累,將中央電大本門課程的形考任務(wù)“數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)”在VB6.0、和C#多種環(huán)境下的實(shí)現(xiàn)進(jìn)行了思考和實(shí)驗(yàn),對不同環(huán)境下的數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計實(shí)現(xiàn)方法和關(guān)鍵技術(shù)進(jìn)行了比較,能夠有效地指導(dǎo)學(xué)生在不同應(yīng)用程序開發(fā)環(huán)境下,以簡捷的方式、方法,較快地設(shè)計、實(shí)現(xiàn)一個具備增、刪、改、查詢功能的小型數(shù)據(jù)庫應(yīng)用系統(tǒng),同時滿足了學(xué)生接受新事物、新技術(shù)的愿望,激發(fā)了他們搞好畢業(yè)設(shè)計的創(chuàng)作熱情,為學(xué)生們后續(xù)畢業(yè)設(shè)計打下了堅(jiān)實(shí)的基礎(chǔ)。
實(shí)現(xiàn)
本系統(tǒng)是基于 C/S 結(jié)構(gòu)的信息管理系統(tǒng),分別使用 VB6.0、和C#作為開發(fā)語言,前端應(yīng)用程序通過ADO、技術(shù)來與數(shù)據(jù)庫進(jìn)行連接,優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。
該數(shù)據(jù)庫應(yīng)用系統(tǒng)雖然規(guī)模小,但是已經(jīng)具備增加、修改、刪除、查詢等系統(tǒng)功能。下面介紹一下系統(tǒng)開發(fā)的主要方法:
一、進(jìn)行數(shù)據(jù)庫設(shè)計
(一)需求分析
1.業(yè)務(wù)流程分析
“學(xué)生成績管理系統(tǒng)”,主要目的是用以實(shí)現(xiàn)學(xué)生、課程以及成績等多項(xiàng)管理。本系統(tǒng)管理的對象簡單,每個數(shù)據(jù)之間都有較強(qiáng)的關(guān)聯(lián)性,涉及過程并不復(fù)雜。因此,比較適合于數(shù)據(jù)庫管理。
2.數(shù)據(jù)流程分析
圖1學(xué)生成績管理數(shù)據(jù)流程圖
(二)概念結(jié)構(gòu)設(shè)計
根據(jù)需求分析的結(jié)果,進(jìn)行概念結(jié)構(gòu)設(shè)計,依照收集信息標(biāo)識對象(實(shí)體)標(biāo)識每個對象需要存儲的詳細(xì)信息(屬性)標(biāo)識對象之間的關(guān)系的步驟,采用E-R圖工具表示,設(shè)計結(jié)果如圖2所示:
圖2學(xué)生成績管理E-R圖
(三)邏輯結(jié)構(gòu)設(shè)計和物理實(shí)現(xiàn)
邏輯結(jié)構(gòu)設(shè)計的方法與步驟,是將概念結(jié)構(gòu)設(shè)計的結(jié)果E-R圖轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化的過程。具體過程為:
將各實(shí)體轉(zhuǎn)化為對應(yīng)的表,將各屬性轉(zhuǎn)化為各表對應(yīng)的列;標(biāo)識每個表的主鍵列;在表之間體現(xiàn)實(shí)體之間的映射關(guān)系,遵守參照完整性規(guī)則;根據(jù)范式理論,對表進(jìn)行修改,盡量滿足第三范式。
通過規(guī)范化數(shù)據(jù)庫設(shè)計,可以減少存儲的冗余數(shù)據(jù)量,減輕數(shù)據(jù)維護(hù)工作,減少存儲的要求,提高數(shù)據(jù)庫的完整性。
物理實(shí)現(xiàn)階段的主要工作是,把設(shè)計好的數(shù)據(jù)庫全局模式轉(zhuǎn)換為相應(yīng)的內(nèi)模式。在此用以上方法建立一個名稱為“學(xué)生成績管理”的數(shù)據(jù)庫,其中包含3張數(shù)據(jù)表,即學(xué)生情況表、課程情況表、學(xué)生成績表。
二、操縱和訪問數(shù)據(jù)庫的基本SQL語句
SQL是關(guān)系數(shù)據(jù)庫支持的標(biāo)準(zhǔn)查詢語言,也是一種雙重式語言,即用于查詢和更新的交互式數(shù)據(jù)庫語言(Interactive SQL),又是一種應(yīng)用程序進(jìn)行數(shù)據(jù)庫訪問時所采取的編程式數(shù)據(jù)庫語言,即嵌入式SQL(Embedded SQL)[1]。嵌入式SQL是數(shù)據(jù)庫應(yīng)用程序的一種開發(fā)方法。它要將SQL語句直接嵌入到程序的源代碼中,與其他程序設(shè)計語言語句混合使用。
開發(fā)的應(yīng)用程序?qū)⑨槍ι鲜鰯?shù)據(jù)庫進(jìn)行管理,主要有插入(insert)、修改(update)、刪除(delete)、查詢(select)和打?。╬rint)等5種基本的操作。
三、界面設(shè)計
(一)創(chuàng)建項(xiàng)目工程
項(xiàng)目工程名稱為“學(xué)生成績管理”。
(二)創(chuàng)建主窗體
運(yùn)用菜單技術(shù)創(chuàng)建主窗體。
(三)創(chuàng)建增加、刪除、修改、查詢功能窗體
使用標(biāo)簽、文本框、組合框、表格、命令按鈕等控件,添加并創(chuàng)建“查詢記錄”、“增加新記錄”、“修改記錄”、“刪除記錄”等窗體。
四、代碼設(shè)計
.NET框架的一個主要組成部分是類庫,這些類被拆分為命名空間,它是類庫的邏輯分區(qū)。類庫所采用的命名空間是層次結(jié)構(gòu),即命名空間下又可以再分成子命名空間,每個命名空間都包含一組按照功能劃分的相關(guān)的類。
在.NET環(huán)境下,必須指向包含所使用類的命名空間(例如Imports System.Data,Imports System.Data.SqlClient)才能激活相應(yīng)的類;借助于封裝,把常用的數(shù)據(jù)連接、數(shù)據(jù)庫查詢和對數(shù)據(jù)庫操縱的功能模塊定義為公共函數(shù),包括createConn()用于建立數(shù)據(jù)庫連接的函數(shù),sqlUpdate()用于對數(shù)據(jù)庫操縱的函數(shù),sqlfind()用于數(shù)據(jù)庫查詢的函數(shù);使用時調(diào)用即可,避免相同功能模塊的重復(fù)建設(shè)。針對該系統(tǒng),筆者創(chuàng)建了SqlConnection、SqlCommand公共類的實(shí)例和系統(tǒng)常用的公共函數(shù)。
在不同模塊的設(shè)計中都可以調(diào)用這些自定義函數(shù),在此不再贅述。
五、報表設(shè)計
一個功能完整的數(shù)據(jù)庫應(yīng)用系統(tǒng),除了具有數(shù)據(jù)維護(hù)、查詢和顯示功能外,還必須具有報表輸出功能。Visual Studio2005報表體系結(jié)構(gòu)圖],其ReportViewer控件負(fù)責(zé)解釋RDLC報表定義、處理報表參數(shù)并按照各種用戶可選格式提供報表的“報表處理器”。它既可以運(yùn)行于“本地模式”也可以運(yùn)行于“遠(yuǎn)程模式”[2]。由用戶編寫的存儲過程負(fù)責(zé)管理連接或運(yùn)行基于參數(shù)的查詢;報表只駐留以報表為中心的Parameters集合,尋址遠(yuǎn)程報表服務(wù)并呈現(xiàn)給用戶。
六、幾種實(shí)現(xiàn)方法的比較
嵌入式SQL在VB6.0下和在下使用的基本形式和處理過程對比如下:
(一)在VB6.0環(huán)境下的具體實(shí)現(xiàn)
ADO是微軟公司提出的第三種數(shù)據(jù)庫訪問對象,它把OLE DB封裝在一個數(shù)據(jù)對象中,使得VB6.0程序可以方便地實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。ADO對象模型共包含7個對象,即Connection,command,Recordset,Parameter,Property,F(xiàn)ield和Error。
VB6.0應(yīng)用程序中主要用Connection對象建立與數(shù)據(jù)庫的連接,用Recordset和Field對象,對數(shù)據(jù)表進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)表增加、刪除、修改等不返回結(jié)果集的操作,語法參閱文獻(xiàn)[1]。
(二)在環(huán)境下的具體實(shí)現(xiàn)
是微軟.NET Framework框架中針對與數(shù)據(jù)庫進(jìn)行交互的一組對象類的名稱[3]。提供對Microsoft SQL Server、Oracle等數(shù)據(jù)源以及通過 OLEDB和XML公開的數(shù)據(jù)源的一致訪問,也就是提供與數(shù)據(jù)源進(jìn)行交互的相關(guān)的公共方法。應(yīng)用程序可以使用來連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。
比ADO更適用于分布式應(yīng)用環(huán)境,增加了更好的性能;它有更好的可操作性、它可以結(jié)合XML語言來開發(fā)數(shù)據(jù)庫;它有更好的可維護(hù)性、可編程性和可伸縮性。
對象模型中包含五個主要的組件,即是Connection對象、Command對象、 Dataadapter對象、Datareader對象以及Dataset對象。架構(gòu)圖參見[3]。
其中Connection對象、Command對象、 DataAdapter對象和DataReader對象四個組件是負(fù)責(zé)建立聯(lián)機(jī)與數(shù)據(jù)操作部分的,被稱為數(shù)據(jù)提供組件 (Managed Providers)。而Dataset對象是非連接架構(gòu)下把數(shù)據(jù)庫中的數(shù)據(jù)映射到內(nèi)存緩存中所構(gòu)成的數(shù)據(jù)容器,是一個或多個DataTable 對象的集合。DataSet在使用時就像駐留在客戶端計算機(jī)上的一個小型關(guān)系數(shù)據(jù)庫,但又與任何具體的數(shù)據(jù)庫完全無關(guān)。DataAdapter對象在后臺數(shù)據(jù)庫和前臺Dataset對象之間起著橋梁作用。其Fill方法將后臺數(shù)據(jù)庫的數(shù)據(jù)取到前臺客戶端的Dataset對象中來。而其Update方法則按相反方向把前臺對數(shù)據(jù)庫的寫操作寫入數(shù)據(jù)庫中去,它由應(yīng)用程序在Dataset中添加、更改或刪除的行對數(shù)據(jù)庫進(jìn)行更新,在使用DataAdapter時,需要將查出的數(shù)據(jù)起一個表名放到DataSet中。一個Dataset可以存放多個表,而TableAdapter的結(jié)果就是一個表,不能再繼續(xù)添加表。
DataReader實(shí)現(xiàn)數(shù)據(jù)操作以及對數(shù)據(jù)的快速、只進(jìn)、只讀訪問。Connection對象提供與數(shù)據(jù)源的連接。Command對象能夠訪問用于返回數(shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲過程、發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。它需要與數(shù)據(jù)庫保持連接,ExecuteReader()函數(shù)返回一個SqlDataReader對象或OleDbDataReader對象,通過這個對象來檢查查詢結(jié)果,它是一種“單向”流,一次只能提供一行數(shù)據(jù),就像高速傳送帶上的一排箱子,一旦它們被放在帶子上,就無法對它們排序或過濾出選定的箱子,也因此占用內(nèi)存少,執(zhí)行效率高。當(dāng)用戶讀取大量數(shù)據(jù)時,可以使用DataReader來提高性能。
根據(jù)應(yīng)用程序所需功能和性能的要求,來確定是使用DataSet還是DataReader。
嵌入式SQL在環(huán)境下通過SqlCommand.ExecuteNonQuery()方法,對連接執(zhí)行SQL語句,并返回受影響的行數(shù),當(dāng)行數(shù)大于0時,命令執(zhí)行成功,否則說明對數(shù)據(jù)庫沒產(chǎn)生影響。通過使用SqlCommand.ExecuteScalar()方法來執(zhí)行命令對象的SQL語句,從數(shù)據(jù)庫中檢索單個值,當(dāng)值大于0時,命令執(zhí)行成功,否則命令執(zhí)行失敗。該方法不接受任何參數(shù),僅僅返回查詢結(jié)果集中的第一行第一列。
在環(huán)境下通過調(diào)用以上定義的函數(shù),就可以實(shí)現(xiàn)使用各種嵌入式SQL語句來操縱后臺數(shù)據(jù)庫的功能。
(三)C#語言環(huán)境下的設(shè)計實(shí)現(xiàn)
由于C#簡單易學(xué),而且可以跨平臺使用,因此它正在成為程序開發(fā)人員使用的主流編程語言。[4] 它具有如下諸多優(yōu)點(diǎn):
C#遵守通用語言規(guī)范(common language specification,CLS)。
C#具備自動內(nèi)存管理功能:CLR 內(nèi)建垃圾收集器,當(dāng)變量實(shí)例的生命周期結(jié)束時,垃圾收集器負(fù)責(zé)收回不被使用的實(shí)例占用的內(nèi)存空間。
C#具有交叉語言處理能力:由于任何遵守通用語言規(guī)范的程序設(shè)計語言源程序,都可編譯為相同的中間語言代碼,不同語言設(shè)計的組件,可以互相通用,可以從其他語言定義的類派生出語言的新類。
C#更加安全:C#語言不支持指針,一切對內(nèi)存的訪問都必須通過對象的引用變量來實(shí)現(xiàn),只允許訪問內(nèi)存中允許訪問的部分,這就防止病毒程序使用非法指針訪問私有成員,也避免指針的誤操作產(chǎn)生的錯誤。
C#軟件的安裝更加容易:在.NET 中這些組件或動態(tài)連接庫不必在注冊表中注冊,每個程序都可以使用自帶的組件或動態(tài)連接庫,使軟件的安裝更加容易。
C#是完全面向?qū)ο蟮模篊#語言中所有的函數(shù)、變量和常量都必須定義在類中,避免了命名沖突。C#語言不支持多重繼承。
在開發(fā)項(xiàng)目中以類的形式來組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。
本系統(tǒng)中using System.Data.SqlClient命名空間包含有關(guān)專門操作SqlServer數(shù)據(jù)庫的類,如SqlConnection,SqlCommand,SqlDateAdapter等,System.Data命名空間包含數(shù)據(jù)庫操作所需要用到的普通數(shù)據(jù),如數(shù)據(jù)表,數(shù)據(jù)行等;DbHelperSQL類定義了與數(shù)據(jù)庫的連接配置、執(zhí)行SQL語句的公用方法等。調(diào)用并且構(gòu)建這些類的實(shí)例設(shè)計完成系統(tǒng)主窗體和系統(tǒng)的增、刪、改、查詢功能。
七、結(jié)論
(一)在不同高級語言環(huán)境下創(chuàng)建應(yīng)用程序的過程都一樣。
(二)在不同環(huán)境下使用的SQL語句都完全一樣,可以實(shí)現(xiàn)同樣的數(shù)據(jù)庫操縱功能。
(三)在VB6.0環(huán)境下編寫的應(yīng)用程序,搬到.NET環(huán)境下不能使用。
(四)NET開發(fā)平臺具有更加強(qiáng)大的內(nèi)部函數(shù)庫,.NET編程很大程度上依靠程序庫中提供的可重用源代碼,.NET框架提供了2500多個可重用的類。公共語言運(yùn)行時庫(CLR)提供了執(zhí)行程序的服務(wù),實(shí)現(xiàn)了編程語言的統(tǒng)一。.NET程序需要經(jīng)過兩次編譯才能在CPU上運(yùn)行,首先編譯生成與CPU無關(guān)的中間語言(MSIL)程序,在CLR的支持下,中間語言程序被編譯成由本地CPU指令組成的程序,實(shí)現(xiàn)了.NET跨平臺運(yùn)行的目標(biāo)。[5]
(五)NET采用數(shù)據(jù)訪問技術(shù),支持離線的數(shù)據(jù)訪問功能,同時提供了只進(jìn)的、一次只能讀取一條記錄的消耗資源極小的DataReader對象,提高了應(yīng)用程序?qū)?shù)據(jù)庫訪問的性能。更適用于分布式數(shù)據(jù)庫應(yīng)用系統(tǒng)的應(yīng)用。
(六)和C#生成的代碼可以完全通用。VB提供了很多類型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(), CSng(), CStr()等,在C#中只要用(int) , (float), (String)即可; VB支持兩種形式的異常,即.net框架的異常和VB自己的錯誤號碼,而C#只支持第一種。用到VB自己的錯誤號碼的程序幾乎無法移植到C#中。
(七)VB支持模塊,C#不支持。在C#中制造一個abstract類,共享所有成員,就和模塊一樣了。C#不能像VB一樣直接訪問模塊中的成員,需要使用“類名.成員名”的用法。
(八)C#代碼更加簡潔,像一樣簡單,像C++一樣強(qiáng)大, 是第一流的面向組件的語言。C#語言是.NETFrame Work 中新一代的開發(fā)工具,是一種現(xiàn)代的、面向?qū)ο蟮恼Z言,它簡化了C++語言在類、命名空間、方法重載和異常處理等方面的操作,摒棄了 C++的復(fù)雜性,更易使用,更少出錯。它使用組件編程,和VB一樣容易使用。C#語法和 C++、JAVA 語法非常相似。所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫。
參考文獻(xiàn):
[1]劉世峰.數(shù)據(jù)庫應(yīng)用技術(shù)(本科)[M].中央廣播電視大學(xué)出版社,2008,103
[2]顧曉梅.數(shù)據(jù)庫應(yīng)用技術(shù)教程[M],上海電視大學(xué)教材, 2010, 171
[3]呂軍.軟件項(xiàng)目綜合實(shí)訓(xùn)(.NET篇)[M],清華大學(xué)出版社,2010,96~97
篇4
[關(guān)鍵詞]關(guān)系數(shù)據(jù)庫SQL查詢對策
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)1210080-01
在各類大型應(yīng)用軟件的數(shù)據(jù)庫中,都存在大量的數(shù)據(jù)信息和記錄,經(jīng)常要對它們進(jìn)行各種數(shù)據(jù)操作。SQL(Structrued Query Language)作為結(jié)構(gòu)化查詢語言,是大型計算機(jī)操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)查詢語言,同時也廣泛地應(yīng)用到小型計算機(jī)的數(shù)據(jù)庫管理系統(tǒng)中。它是一種高度非過程化的語言,即只要用戶按其語法規(guī)則寫出符合操作要求的語句,而并不需要告訴系統(tǒng)應(yīng)如何執(zhí)行SQL語句,就可得到所要求的結(jié)果。隨著數(shù)據(jù)庫技術(shù)的廣泛應(yīng)用,在數(shù)據(jù)庫程序的開發(fā)過程中,大量的工作是要進(jìn)行數(shù)據(jù)查詢和檢索處理。本文從SQL查詢語句執(zhí)行的過程入手,對其執(zhí)行效率進(jìn)行分析,并給出參考性建議和優(yōu)化策略。
一、SQL語句執(zhí)行過程解析
在平時書寫SQL查詢語句時,雖然每個人的寫法不盡相同,而且有時個別子句順序并不影響操作結(jié)果,但是在各種數(shù)據(jù)庫管理系統(tǒng)中,標(biāo)準(zhǔn)的SQL的解析順序?yàn)?
1.FROM子句,組裝來自不同數(shù)據(jù)源的數(shù)據(jù);
2.WHERE子句,基于指定的條件對記錄進(jìn)行篩選;
3.GROUP BY子句,將數(shù)據(jù)劃分為多個分組;
4.使用聚合函數(shù)進(jìn)行計算;
5.使用HAVING子句篩選分組;
6.計算所有的表達(dá)式;
7.使用ORDER BY對結(jié)果集進(jìn)行排序。
通過以上SQL語句的解析過程,我們可以對SQL查詢語句進(jìn)行優(yōu)化處理。SQL查詢語句的核心結(jié)構(gòu)是SELECT…FROM…WHERE,了解了這個基本結(jié)構(gòu),我們可以從以下幾個方面對其進(jìn)行優(yōu)化處理。
二、效率分析及優(yōu)化對策
(一)從From子句入手
From子句后面接單表或者多表,通常情況下接受來自不同數(shù)據(jù)源的多表。如果是單表,一般情況下對表進(jìn)行快速全表掃描。如果是多表的情況,查詢設(shè)計優(yōu)化器將采取自右向左的順序依次讀取數(shù)據(jù)表。如以下語句:“From table1,table2,table3”,優(yōu)化器將優(yōu)先讀取table3表,然后是table2表,最后是table1表。在進(jìn)行From子句的多表連接時,就需要結(jié)合條件子句WHERE進(jìn)行分析,需要遵循下面的規(guī)則:1. 當(dāng)WHERE后面接的條件能夠一次性過濾某個表的大量記錄時,應(yīng)優(yōu)先處理該表。2. 如果WHERE后面接的條件不能過濾掉大量記錄時應(yīng)該優(yōu)先考慮處理記錄數(shù)最少或者索引關(guān)鍵值最少的表。
(二)從條件子句WHERE入手
WHERE子句后面通常接過濾條件,對表的記錄進(jìn)行篩選,篩選出符合條件的記錄。如果SELECT查詢語句沒有WHERE子句,則無須對表記錄進(jìn)行過濾。若后面接單個表,則通常順序掃描全表。若后接多表或者大量記錄表時,則可以考慮用索引來減少查詢的時間。所以在查詢前可對各個表建立比較的索引。對WHERE子句中出現(xiàn)的條件,可以依據(jù)以下原則首先來驅(qū)動查詢。
(1)建立索引字段的列比沒有建立索引的要快;(2)主索引要比普通索引快;(3)單索引要比符合索引快;(4)有條件約束要比沒有條件約束要快。
此外,WHERE子句通常采用自下而上的順序解析WHERE子句,根據(jù)這個原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾。根據(jù)以上原則,我們可以判斷出以下四個語句中哪個選項(xiàng)語句效率最高。
Select * Frommobilewhere (mobileno='13775637677') andbegINtime>
{^2009-1-308:20:11} andbegintime
B) SELECT*Frommobilewhere(mobileno='13775637677' )andbegINtime
{^2009-1-30 8:20:11} andbegintime>{^2009-1-30 8:20:11}
C) SELECT*Frommobilewherebegintime
{^2009-1-308:20:11}and(mobileno='13775637677' )
很顯然,綜合以上原則C選項(xiàng)效率最高。
(三)從GROUP BY和HAVING子句入手
在SELECT語句中,GROUP BY語句的作用是對記錄進(jìn)行分組(劃分成較小的組),使用聚合函數(shù)返回每一個組的匯總信息,而HAVING子句限制返回的結(jié)果集。在一個SQL語句中可以有WHERE子句和HAVING子句。HAVING與WHERE子句類似,均用于設(shè)置限定條件。WHERE子句的作用是在對查詢結(jié)果進(jìn)行分組前,將不符合WHERE條件的記錄過濾掉,而HAVING子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),但它不能單獨(dú)使用,只能配合GROUP By語句使用,該條件中經(jīng)常包含聚組函數(shù),使用HAVING條件顯示特定的組,也可以使用多個分組標(biāo)準(zhǔn)進(jìn)行分組。雖然HAVING子句可以起到過濾的作用,但是要盡量避免使用HAVING子句,HAVING只會在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾。這個處理需要排序,總計等操作。如果能通過WHERE子句限制記錄的數(shù)目,而且能盡早地把不滿足條件的記錄過濾掉,那就能減少這方面的開銷。
(四)從謂詞等方面入手
在SELECT語句中,由于實(shí)際需要,查詢語句會經(jīng)常出現(xiàn)謂詞。常用的謂詞有EXIST,NOT EXSIT,IN,NOT IN等,巧用謂詞也會提高SQL語句的執(zhí)行效率,可參考以下原則編寫SQL語句。
1.Where子句中盡量不要使用IS NULL或IS NOT NULL的語句,因?yàn)樗鼈儾粫褂盟饕?/p>
2.WHERE子句盡量不要將通配符(%)放在搜尋詞首出現(xiàn),通配符(%)在搜尋詞首出現(xiàn)不會使用索引。
3.用EXISTS代替IN。在許多基于基礎(chǔ)表的查詢中,為了滿足一個條件,往往需要對另一個表進(jìn)行聯(lián)接。在這種情況下,使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。
4.用表連接代替EXISTS。通常來說,采用表連接的方式比EXISTS更有效率。
5.用EXISTS代替DISTINCT。當(dāng)提交一個包含一對多表信息(比如班級表和學(xué)生表)的查詢時,避免在SELECT子句中使用DISTINCT。一般可以考慮用EXIST替換。
6.WHERE子句盡量少使用NOT或是,應(yīng)該成OR來實(shí)行,使用OR時應(yīng)該把結(jié)果集小的條件放在前面。
7.UNION改用UNION ALL,UNION要對合并的結(jié)果進(jìn)行排序,UNION ALL不排序。
8.ORDER BY子句中盡量不要使用非索引列。
三、結(jié)語
通過對SQL查詢語句執(zhí)行過程的分析,可以從以上幾個方面對其進(jìn)行優(yōu)化改進(jìn),從而提高了數(shù)據(jù)庫查詢和檢索的效率。當(dāng)然,具體的查詢語句還要根據(jù)具體需要,并結(jié)合具體的數(shù)據(jù)庫系統(tǒng)而定。只有多總結(jié)多積累才能寫出高質(zhì)量高效率的查詢語句,當(dāng)然這只是提高數(shù)據(jù)檢索的一個方面,在其他方面的設(shè)計也要進(jìn)行優(yōu)化,如對表建立必要的索引,減少表之間的連接,或盡量在索引屬性列上建立連接等??傊?通過以上幾個方面的綜合優(yōu)化,一定會使數(shù)據(jù)庫查詢與檢索效率有很大的提高。
參考文獻(xiàn):
[1]王振輝、吳廣茂,SQL查詢語句優(yōu)化研究[J].計算機(jī)應(yīng)用,2005,25(12).
[2]徐鳳梅,關(guān)系數(shù)據(jù)庫中SQL查詢語言的優(yōu)化策略[J].廣西輕工業(yè),2009,126(5).
[3]鄧文艷,基于關(guān)系數(shù)據(jù)庫的查詢優(yōu)化技術(shù)[J].太原科技,2007(12).
[4]楊克昌,Visual FoxPro程序設(shè)計教程[M].長沙:湖南科學(xué)技術(shù)出版社,2004.
[5]李瑩、代勤,關(guān)系代數(shù)運(yùn)算與SQL查詢的對應(yīng)關(guān)系[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(自然科學(xué)版),2003,24(3).
篇5
【關(guān)鍵詞】Mysql數(shù)據(jù)庫 圖書管理 系統(tǒng)安全 研究
SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言。Mysql可以說是目前最為流行的開源數(shù)據(jù)庫管理系統(tǒng)軟件,是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。Mysql開放源碼,快捷靈活、穩(wěn)定和容易使用等優(yōu)點(diǎn)決定了其在中小型管理系統(tǒng)應(yīng)用的優(yōu)勢。本文以基于Mysql網(wǎng)絡(luò)數(shù)據(jù)庫的圖書管理系統(tǒng)為例,從安全穩(wěn)定性要求和采取的安全策略等方面進(jìn)行分析研究。
1 Mysql在信息管理系統(tǒng)的應(yīng)用與優(yōu)勢
1.1 Mysql的基本特性與應(yīng)用
Mysql與其他大型數(shù)據(jù)庫Oracle、DB2、SQL Server等相比,有自身的不足之處,但是沒有影響到Mysql在信息管理系統(tǒng)的應(yīng)用。在個人或者是中小型的企業(yè),Mysql發(fā)揮了自身的優(yōu)勢與作用。Mysql開放源碼,具有快捷靈活、穩(wěn)定和容易使用等優(yōu)點(diǎn),并有效的提供了PHP、C,C++,JAVA和HTML等主流前端開發(fā)軟件的API接口。支持多種操作系統(tǒng)包括Windows 、Linux 、Solaris、Mas OS等。目前,搭建動態(tài)網(wǎng)站或者服務(wù)器的開源軟件組合有典型的網(wǎng)絡(luò)架構(gòu)LAMP,極大地方便了開發(fā)者。Mysql應(yīng)用非常廣泛,Google、facebook、等使用Mysql作為網(wǎng)絡(luò)數(shù)據(jù)庫。
1.2 Mysql應(yīng)用于圖書管理系統(tǒng)的優(yōu)勢
Mysql應(yīng)用于圖書管理系統(tǒng)的優(yōu)勢主要分為三個方面,一是免費(fèi)開源優(yōu)勢,如果再使用linux操作系統(tǒng),可以減少購買操作系統(tǒng)和數(shù)據(jù)庫的開銷。二是多種平臺支持的優(yōu)勢,Mysql可以與多個平臺進(jìn)行有效的連接,實(shí)現(xiàn)信息資源的共享。三是中小型數(shù)據(jù)庫靈活穩(wěn)定的優(yōu)勢,在設(shè)計Mysql程序的時候,加入了SQL中沒有的一些補(bǔ)充條件,更加的適用于在中小型數(shù)據(jù)庫中使用。圖書管理系統(tǒng)通常要保存用戶信息、圖書信息和借閱信息,以及建立相關(guān)的書籍查詢等,數(shù)據(jù)倉庫并不是很龐大,因此,使用Mysql來管理數(shù)據(jù)非常合適。
2 基于Mysql的圖書管理系統(tǒng)安全穩(wěn)定性分析
高校圖書管理系統(tǒng)是基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)數(shù)據(jù)庫,通常采用B/S的體系結(jié)構(gòu),因此,在瀏覽器層、Web 服務(wù)器層、數(shù)據(jù)庫服務(wù)器層都會存在安全性要求,以及在操作系統(tǒng)、網(wǎng)絡(luò)技術(shù)等方面的安全問題。只有控制好圖書管理系統(tǒng)的安全問題,才能保證信息資源的有效共享。
基于網(wǎng)絡(luò)數(shù)據(jù)庫的圖書管理系統(tǒng)的安全穩(wěn)定性具有以下幾個特點(diǎn):
(1)較高的穩(wěn)定性,包括操作系統(tǒng)的穩(wěn)定性和數(shù)據(jù)庫系統(tǒng)的穩(wěn)定性,要保持Mysql數(shù)據(jù)庫的正常運(yùn)行軌跡。
(2)數(shù)據(jù)的保密性能,對客戶信息、訪問瀏覽量、客戶端等進(jìn)行有效的保密。
(3)運(yùn)行的速度很快,包括瀏覽器端、數(shù)據(jù)庫服務(wù)器端的訪問速度,以保證數(shù)據(jù)信息在查找、修改等方面的快速反應(yīng)。
(4)數(shù)據(jù)的備份與數(shù)據(jù)的恢復(fù)功能。數(shù)據(jù)庫服務(wù)器中,包括圖書信息、借閱圖書記錄、客戶賬號等在內(nèi)的相關(guān)數(shù)據(jù)的安全問題,是保證圖書管理系統(tǒng)正常運(yùn)轉(zhuǎn)的重要因素。要采取嚴(yán)格的防范措施,同時,當(dāng)發(fā)生數(shù)據(jù)故障的時候,要在最短的時間內(nèi)恢復(fù)數(shù)據(jù)與系統(tǒng)。
3 基于Mysql的圖書管理系統(tǒng)安全穩(wěn)定性策略
圖書管理系統(tǒng)通常采用三層B/S結(jié)構(gòu)模式,即用戶層、Wed服務(wù)器層和數(shù)據(jù)庫層。圖書管理系統(tǒng)要注意提高數(shù)據(jù)庫安全、操作系統(tǒng)安全和網(wǎng)絡(luò)安全技術(shù)等方面的安全策略。
3.1 優(yōu)化數(shù)據(jù)庫設(shè)計
比如,在遵循關(guān)系模式規(guī)范化的基礎(chǔ)上,優(yōu)化表設(shè)計適當(dāng)增加中間表或增加冗余字段以減少連接查詢所花的時間,優(yōu)化JOIN操作和子查詢盡量使用全連接避免產(chǎn)生中間表,盡量避免LIKE 關(guān)鍵字和通配符進(jìn)行查詢。另外,還可以修改my.ini文件,對相關(guān)參數(shù)如sort_buffer_size 、read_buffer_size 、query_cache_size、max_connections等,設(shè)置合適的緩沖區(qū)大小和MySQL允許的最大連接進(jìn)程數(shù),以優(yōu)化服務(wù)器提高系統(tǒng)性能,提高保證圖書信息資源查詢效率。
3.2 數(shù)據(jù)容災(zāi)與備份機(jī)制
要定期地進(jìn)行數(shù)據(jù)備份,保護(hù)圖書書目數(shù)據(jù)、流通數(shù)據(jù)、客戶信息等。定期的進(jìn)行數(shù)據(jù)庫的重組工作,增強(qiáng)數(shù)據(jù)庫的使用性能。用好MYSQL的容災(zāi)與備份機(jī)制,比如:建立主從數(shù)據(jù)庫集群,采用 MySQL 復(fù)制;制定數(shù)據(jù)庫備份/恢復(fù)計劃;啟動數(shù)據(jù)庫服務(wù)器的二進(jìn)制變更日志;定期檢查數(shù)據(jù)表;定期對備份文件進(jìn)行備份;把 MySQL 的數(shù)據(jù)目錄和備份文件分別放到兩個不同的驅(qū)動器中,等等。
3.3 帳戶安全策略
可以從賬戶安全檢查、系統(tǒng)內(nèi)部安全措施、哈希加密等方面著手進(jìn)行。比如,檢查用戶表mysql.user是否有匿名空賬號(user=‘’ ),如有應(yīng)將其刪除。使用哈希加密帳戶密碼。加強(qiáng)客戶的登錄認(rèn)證,尤其是服務(wù)器主機(jī)的登錄認(rèn)證。在主數(shù)據(jù)庫創(chuàng)建從數(shù)據(jù)庫操作所用的用戶,并指定使用SLL 認(rèn)證等等。
3.4 網(wǎng)絡(luò)安全和操作系統(tǒng)安全策略
在網(wǎng)絡(luò)安全策略方面,利用NAT技術(shù),有效的防止發(fā)生來自網(wǎng)絡(luò)外部的攻擊現(xiàn)象,將局域網(wǎng)絡(luò)內(nèi)部的計算機(jī)系統(tǒng)進(jìn)行隱蔽。正確設(shè)置計算機(jī)操作系統(tǒng),確??蛻羰褂谜鎸?shí)身份,登錄具有合法性。此外,還可以設(shè)置系統(tǒng)的實(shí)時監(jiān)控,優(yōu)化網(wǎng)絡(luò)防火墻、文件加密以及殺毒軟件技術(shù)的升級,等等。
4 結(jié)語
綜上所述,要確保基于Mysql在圖書館管理系統(tǒng)的安全穩(wěn)定性能,要考慮很多種因素的影響,在數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)容災(zāi)與備份、帳戶安全,以及計算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)等方面進(jìn)行優(yōu)化配置。圖書管理系統(tǒng)的安全與穩(wěn)定性能保證了信息數(shù)據(jù)的安全、穩(wěn)定性與高效,保證了客戶在不同的時間、地點(diǎn)、平臺中有效的使用圖書館的資源信息共享。
參考文獻(xiàn)
[1]晉征.論基于網(wǎng)絡(luò)數(shù)據(jù)庫的圖書館管理系統(tǒng)安全性研究與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(3):27-29.
[2]陽學(xué)軍.基于網(wǎng)絡(luò)和人工智能的圖書館信息管理系統(tǒng)研究[J].岳陽職業(yè)技術(shù)學(xué)院學(xué)報,2005(3):59-61.
[3]林愛鮮.基于神經(jīng)網(wǎng)絡(luò)的圖書館管理系統(tǒng)的構(gòu)建研究[J].電腦與電信,2012(4):48-50.
[4]田華.圖書館分布式數(shù)據(jù)庫安全技術(shù)研究[J].現(xiàn)代情報,2007(4):161-163
篇6
數(shù)據(jù)庫技術(shù)發(fā)展至今已有40多年的歷史,它作為數(shù)據(jù)管理的有效手段,大大促進(jìn)了計算機(jī)應(yīng)用技術(shù)的發(fā)展。從早期的文件系統(tǒng)到層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫,從關(guān)系數(shù)據(jù)庫到面向?qū)ο髷?shù)據(jù)庫,以及面向不同應(yīng)用的時態(tài)數(shù)據(jù)庫、演繹數(shù)據(jù)庫等等,均向人們展示了數(shù)據(jù)庫技術(shù)的廣闊應(yīng)用前景[2]。關(guān)系數(shù)據(jù)庫,顧名思義是建立在關(guān)系數(shù)據(jù)庫模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)、離散數(shù)學(xué)等概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。關(guān)系數(shù)據(jù)庫是一個被組織成一組擁有正規(guī)描述的表格,該形式表格作用的實(shí)質(zhì)是裝載著數(shù)據(jù)項(xiàng)的特殊收集體。這些表格中的數(shù)據(jù)以許多不同的方式被存取或重新召集而不需要重新組織數(shù)據(jù)庫表格[3]。除了相對容易創(chuàng)建和存取之外,關(guān)系數(shù)據(jù)庫具有容易擴(kuò)充的優(yōu)勢。在最初數(shù)據(jù)庫創(chuàng)造之后,一個新的數(shù)據(jù)種類能被添加而不需要修改所有的現(xiàn)有應(yīng)用軟件。目前主流的關(guān)系數(shù)據(jù)庫有Oracle、SQL、Aceess、DB2、MySQL、SQLServer、Sybase等等[4]。根據(jù)本校辦學(xué)規(guī)模和處理信息量,采用ACEESS作為本系統(tǒng)數(shù)據(jù)庫的管理工具。
2數(shù)據(jù)庫模型建立
2.1應(yīng)用需求抽象
根據(jù)學(xué)員信息管理的具體任務(wù),按照管理功能進(jìn)行業(yè)務(wù)劃分和模塊化設(shè)計。按照簡單性、獨(dú)立性及完整性原則,學(xué)員信息管理系統(tǒng)后臺可以分為以下幾個子系統(tǒng):即學(xué)員檔案管理子系統(tǒng)、課程管理子系統(tǒng)、成績管理子系統(tǒng)、中隊(duì)管理子系統(tǒng)、管理統(tǒng)計子系統(tǒng)、系統(tǒng)管理子系統(tǒng)、系統(tǒng)維護(hù)子系統(tǒng)。(1)學(xué)員檔案管理子系統(tǒng)學(xué)員檔案管理主要有學(xué)員管理、批量學(xué)員添加、按中隊(duì)批量學(xué)員添加等功能。(2)課程管理子系統(tǒng)課程管理子系統(tǒng)主要有課程管理、批量課程添加、任課管理、任課添加等功能。(3)成績管理子系統(tǒng)成績管理子系統(tǒng)完成成績管理、批量成績添加、按中隊(duì)成績添加功能。(4)中隊(duì)管理子系統(tǒng)中隊(duì)管理子系統(tǒng)完成中隊(duì)管理、中隊(duì)批量添加兩個子模塊功能。(5)管理統(tǒng)計子系統(tǒng)管理統(tǒng)計子系統(tǒng)顯示學(xué)?;拘畔?包括年級數(shù)、中隊(duì)數(shù)、學(xué)員數(shù)、教師數(shù)、課程數(shù)、用戶瀏覽統(tǒng)計等相關(guān)信息,還可完成學(xué)員統(tǒng)計、排名統(tǒng)計功能。(6)系統(tǒng)管理子系統(tǒng)系統(tǒng)管理子系統(tǒng)包括修改管理員密碼、帳號管理、干部管理、年級管理、學(xué)期管理功能。(7)系統(tǒng)維護(hù)子系統(tǒng)系統(tǒng)維護(hù)子系統(tǒng)主要完成系統(tǒng)的相關(guān)設(shè)置功能,包括站點(diǎn)名稱,站點(diǎn)LOGO設(shè)置,網(wǎng)站主體表格屬性設(shè)置,年級變遷(這里主要是對年級進(jìn)行批量升級操作,也可以在中隊(duì)管理下單個進(jìn)行升級)。
2.2數(shù)據(jù)庫表關(guān)系建立
關(guān)系數(shù)據(jù)庫模式的建立,離不開數(shù)據(jù)表之間關(guān)系的建立,只有建立表之間的關(guān)系,整個數(shù)據(jù)庫才能形成一個系統(tǒng),提供強(qiáng)大的信息存儲、查詢、和處理功能[5]。對比應(yīng)用需求說明和現(xiàn)實(shí)學(xué)校各部門的業(yè)務(wù)流程,設(shè)計數(shù)據(jù)庫表之間的關(guān)系如圖1所示。(1)學(xué)員和評語之間存在一對多的對應(yīng)關(guān)系,即一個學(xué)員可以有多條來自不同老師的評語;學(xué)員和家長存在一對多的對應(yīng)關(guān)系,即一個學(xué)員可以對應(yīng)一個家長,方便家長對學(xué)員相關(guān)信息進(jìn)行查詢。學(xué)員和平時成績存在一對多的對應(yīng)關(guān)系,即一個學(xué)員可以有多種平時成績;同時,學(xué)員還和中隊(duì)有多對一對應(yīng)關(guān)系,即一個中隊(duì)可以有多個學(xué)員。(2)中隊(duì)和成績有一對多的對應(yīng)關(guān)系,即一個中隊(duì)可以有多條成績;中隊(duì)和年級有一對一的對應(yīng)關(guān)系,即一個中隊(duì)屬于一個年級。中隊(duì)和大隊(duì)有一對一的對應(yīng)關(guān)系,即一個中隊(duì)屬于一個大隊(duì),中隊(duì)和任課信息有一對多的對應(yīng)關(guān)系即一個中隊(duì)有多條任課關(guān)系與之對應(yīng)。大隊(duì)和中隊(duì)有一對多的對應(yīng)關(guān)系,即一個大隊(duì)對應(yīng)多個中隊(duì)。(3)任課信息表中的教師ID和教師信息表中ID存在一一對應(yīng)關(guān)系。教師表中ID和任課教師信息表中的ID存在一對多的關(guān)系。即一個教師可以有多個任課關(guān)系。任課教師表中的課程ID和課程表中的課程ID存在一一對應(yīng)關(guān)系。任課信息表中的學(xué)期和學(xué)期ID存在一一對應(yīng)關(guān)系。即一個任課信息對應(yīng)一個學(xué)期。成績表中的課程ID和課程信息表中的ID存在一一對應(yīng)關(guān)系,成績表中的學(xué)期ID和學(xué)期表中的學(xué)期ID存在一一對應(yīng)關(guān)系。
2.3數(shù)據(jù)庫模式設(shè)計
2.3.1關(guān)系數(shù)據(jù)庫設(shè)計中存在問題
(1)數(shù)據(jù)冗余:在一個數(shù)據(jù)集合中重復(fù)的數(shù)據(jù)稱為數(shù)據(jù)冗余。例如在設(shè)計時沒有把教師信息表Teacher和任課信息表tea_sub分開,那么每存儲一條任課信息tea_sub(tsid、ts_tea_user、ts_sub_id、ts_ter_id、ts_cla_id)教師表中的其他信息也要重復(fù)存儲[4]。(2)更新異常:更新異常分為插入異常和刪除異常。插入異常:比如學(xué)員信息表student,如果不知道學(xué)號,那么插入再多的其他信息都是沒有意義的。例如一個剛?cè)肼毜慕處熇硭?dāng)然要在任課信息表中有其相關(guān)數(shù)據(jù),但此時他還沒有任課,即他對應(yīng)的元組是不完全的,只有而沒有,不能將他的信息放到數(shù)據(jù)庫中。因此無法注冊該教師的任課信息,這與實(shí)際需求不符。這樣的操作是不合理的,將這種現(xiàn)象稱為插入異常。刪除異常:例如在沒分解的教師信息表中的任課信息中,相應(yīng)的任課關(guān)系解除。那么刪除整條記錄,該教師的其他信息也被刪除,在查詢的時候無法查閱該教師相關(guān)信息,這也與實(shí)際需求相悖,將這種現(xiàn)象稱為刪除異常。數(shù)據(jù)庫的性能優(yōu)化包括硬件優(yōu)化,查詢優(yōu)化和設(shè)計優(yōu)化三個方面。本文著重介紹設(shè)計優(yōu)化即模式優(yōu)化,模式優(yōu)化重點(diǎn)解決數(shù)據(jù)冗余和更新異常問題。
2.3.2數(shù)據(jù)庫模式的規(guī)范化
在對數(shù)據(jù)庫進(jìn)行模式設(shè)計時,對關(guān)系的分解并不是盲目的,分解的目的在于減少關(guān)系模式的規(guī)模,避免不必要的存儲及操作的冗余和數(shù)據(jù)更新異常。為了清除異常,需要對關(guān)系模式進(jìn)行合理地分解。為此,人們設(shè)計數(shù)據(jù)庫設(shè)計的規(guī)范化理論,以便能夠設(shè)計出異常盡可能少的數(shù)據(jù)庫模式[4]。據(jù)參考文獻(xiàn)[4]所述,數(shù)據(jù)庫模式分為6級,具體的定義見參考書目。分別是1NF:是關(guān)系數(shù)據(jù) 庫對模式的基本要求,即要求屬性的值必須是原子屬性不可再分。2NF:消除了數(shù)據(jù)庫模式中非主屬性對碼的部分依賴。3NF:消除了數(shù)據(jù)庫模式中非主屬性對碼的傳遞依賴。BCNF:消除了數(shù)據(jù)庫模式中一切屬性對碼的傳遞依賴。4NF:消除了數(shù)據(jù)庫模式中非平凡的和非碼所隱患的多值依賴。5NF:消除了數(shù)據(jù)庫模式中非平凡的和非碼所隱患的連接依賴[4]。范式的級別由小到大分別是有1NF到5NF。范式的級別越低,冗余與更新異常就越容易產(chǎn)生[6]。(1)滿足1NF的學(xué)員信息表分解,在學(xué)員信息表中每一個屬性都該是原子屬性,故對部職別進(jìn)行分解。由消防部隊(duì)的編制特點(diǎn),每個省、自治區(qū)、直轄市均有相應(yīng)的消防總隊(duì);每個地級市、自治州、區(qū)都有相應(yīng)的消防支隊(duì)。學(xué)校學(xué)員來自五湖四海,故對學(xué)員信息表中的部職別屬性進(jìn)行分解。由于有的學(xué)員來自總隊(duì)和支隊(duì)機(jī)關(guān),故把部職別分為總隊(duì)和部職別兩個屬性,即分解為,province為province表中的省份ID。總隊(duì)表設(shè)計為province(pid、pname)。在學(xué)員信息表中只要存儲省份ID就行。不用再存儲省份名。最長總隊(duì)名新疆維吾爾族自治區(qū)消防總隊(duì)所占字節(jié)為26Btye,所占ID為2Byte。按新疆總隊(duì)有學(xué)員121名計算,模式分解前學(xué)員原部別信息中存儲總隊(duì)信息需用26Btye×121=3164Byte;而模式分解后存儲ID信息占用2Btye×121=242Byte。(2)滿足BCNF的教師信息表分解,在2.4.1節(jié)數(shù)據(jù)庫設(shè)計存在問題中提到數(shù)據(jù)冗余和刪除異常,在沒分解的教師信息表的任課信息中,相應(yīng)的任課關(guān)系解除。那么刪除整條記錄,該教師的其他信息也被刪除,在查詢的時候無法查閱該教師相關(guān)信息,這也與實(shí)際需求相悖。要解決刪除異常,即把教師信息表Teacher分解為教師基本信息表teacher和任課教師信息表tea_sub(tsid、ts_tea_user、ts_sub_id、ts_ter_id、ts_cla_id)。這樣的分解既解決了數(shù)據(jù)冗余的問題,也解決了刪除異常的問題。分解后Teacher和tea_sub關(guān)系模式都是1NF,且在其中不存在這樣的屬性A,A傳遞依賴與Teacher和tea_sub的碼、由于關(guān)系模式Teacher={R1,R2…,Rn}和tea_sub={R1,R2…,Rn}中Ri(i=1,2,…,n)為BC范式,則關(guān)系模式Teacher和tea_sub也滿足BCNF。數(shù)據(jù)庫的規(guī)范化設(shè)計還有很多,根據(jù)系統(tǒng)應(yīng)用需求的變更和數(shù)據(jù)規(guī)模的遞增,需要設(shè)計相應(yīng)的數(shù)據(jù)模式來優(yōu)化昆明消防指揮學(xué)校學(xué)員綜合信息管理系統(tǒng)的數(shù)據(jù)庫性能,使之滿足應(yīng)用需求,更好地為學(xué)校教師、學(xué)員和管理人員提供便捷的信息化服務(wù)。
篇7
關(guān)鍵詞 分布式異構(gòu)數(shù)據(jù)庫;高校;數(shù)字圖書館
中圖分類號:G258.6 文獻(xiàn)標(biāo)識碼:B
文章編號:1671-489X(2015)11-0078-02
在我國高校數(shù)字圖書館的建設(shè)過程中,由于各個數(shù)字圖書館在建設(shè)的過程中缺乏協(xié)調(diào)性以及統(tǒng)一性,導(dǎo)致不同高校之間的數(shù)字圖書館的資源共享出現(xiàn)嚴(yán)重的阻礙,不利于各高校數(shù)字圖書館之間的數(shù)據(jù)交流。各高校數(shù)字圖書館之間封閉的特性,導(dǎo)致資源的浪費(fèi),也影響了廣大用戶的正常使用。以中間件技術(shù)作為基礎(chǔ)可以建立高校數(shù)字圖書館之間的分布式異構(gòu)數(shù)據(jù)庫檢索模型,能夠?yàn)榻鉀Q當(dāng)前高校數(shù)字圖書館之間的資源共享問題提供可行性的技術(shù)方案。
1 分布式異構(gòu)數(shù)據(jù)庫的概念
分布式數(shù)據(jù)庫技術(shù)是伴隨著信息技術(shù)的發(fā)展而出現(xiàn),是數(shù)據(jù)庫技術(shù)與信息網(wǎng)絡(luò)技術(shù)相互結(jié)合的產(chǎn)物。分布式異構(gòu)數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)了諸多數(shù)據(jù)庫系統(tǒng)的結(jié)合,可以實(shí)現(xiàn)不同數(shù)據(jù)庫之間的資源的共享,同時又不損害任何一個數(shù)據(jù)庫系統(tǒng)的整體性與安全性。在實(shí)現(xiàn)資源共享的同時,每一個數(shù)據(jù)的完整性、獨(dú)立性以及安全性并不會受到人為威脅。異構(gòu)數(shù)據(jù)庫的異構(gòu)性主要體現(xiàn)在三個方面:計算機(jī)結(jié)構(gòu)的異構(gòu)性、DBMS的異構(gòu)性以及操作系統(tǒng)的異構(gòu)性。異構(gòu)數(shù)據(jù)庫所要實(shí)現(xiàn)的最終目標(biāo)是不同數(shù)據(jù)庫之間的信息資源、硬件資源以及人力資源的共享。目前,我國數(shù)字圖書館在建設(shè)的過程中呈現(xiàn)明顯的獨(dú)立性的特點(diǎn),不利于各高校之間信息資源的共享,造成嚴(yán)重的資源浪費(fèi)現(xiàn)象。因此,分布式異構(gòu)數(shù)據(jù)庫信息檢索模型在高校數(shù)字圖書館中的應(yīng)用有利于提高資源的利用率。
2 分布式異構(gòu)數(shù)據(jù)庫的技術(shù)研究
分布式異構(gòu)數(shù)據(jù)庫的主要技術(shù)包含兩種:一種是中間技術(shù),負(fù)責(zé)服務(wù)器與數(shù)據(jù)庫之間的連接;一種是數(shù)據(jù)查詢處理技術(shù),負(fù)責(zé)信息資源的查詢。
1)中間件(Middleware)是計算機(jī)軟件系統(tǒng)與應(yīng)用軟件系統(tǒng)之間實(shí)現(xiàn)連接的軟件系統(tǒng)。中間件的存在,方便了電腦系統(tǒng)各個部分之間的溝通,特別是應(yīng)用軟件對于系統(tǒng)軟件的集中的邏輯,在現(xiàn)代信息技術(shù)應(yīng)用框架(如Web服務(wù)和面向服務(wù)的體系結(jié)構(gòu)等)中應(yīng)用比較廣泛。中間件為實(shí)現(xiàn)服務(wù)器與數(shù)據(jù)庫之間的連接提供服務(wù)。這類服務(wù)系統(tǒng)都有十分標(biāo)準(zhǔn)的程序接口以及網(wǎng)絡(luò)服務(wù)協(xié)議。目前在市場上流通的中間技術(shù)主要有OMG公司所提供的CORBA,本文的主要設(shè)計就是立足于CORBA。
2)數(shù)據(jù)查詢處理技術(shù)。數(shù)據(jù)查詢處理技術(shù)指的是用戶根據(jù)自己的實(shí)際需求在客戶端進(jìn)行搜索并獲得自己所需要的新的技術(shù)。數(shù)據(jù)查詢技術(shù)主要是通過科學(xué)地選擇有效的方法,根據(jù)客戶輸入的條件以獲得滿足條件的信息資源反饋給用戶。就一般情況而言,數(shù)據(jù)庫查詢技術(shù)主要包括四個方面:首先是信息轉(zhuǎn)化,就是將用戶輸入的內(nèi)容轉(zhuǎn)化為內(nèi)部語言;其次,把語法樹轉(zhuǎn)換成標(biāo)準(zhǔn)(優(yōu)化)形式;再次,選擇低層的存取路徑;最后,選擇科學(xué)合理的查詢計劃進(jìn)行查詢,并最后反饋查詢結(jié)果。
3 系統(tǒng)模型的建構(gòu)
CORBA的英文全稱是Common Object Request Broker Architecture,即公共對象請求體系結(jié)構(gòu),構(gòu)成當(dāng)前主要的三大中間技術(shù)之一。在設(shè)計之初,CORBA就被當(dāng)作是遠(yuǎn)程體系結(jié)構(gòu),是為了解決不同地區(qū)之間的計算機(jī)的通信問題。就一般而言,CORBA分為三個不同的主要層次系統(tǒng)。
1)處于最底層的系統(tǒng)是對象請求,構(gòu)成CORBA系統(tǒng)的軟總線,規(guī)定了分布對象的定義以及對語言的映射,得以實(shí)現(xiàn)遠(yuǎn)距離對象之間的通信以及相互操作。
2)公共服務(wù)對象。CORBA的公共服務(wù)對象包含有很多內(nèi)容,如為客戶提供位置服務(wù)、安全服務(wù)等多樣化的服務(wù)。
3)位于最上層的公共設(shè)施,它明確規(guī)定了CORBA的組件結(jié)構(gòu)以及協(xié)作服務(wù)中的有效協(xié)議。
由于目前CORBA為客戶提供多樣化的服務(wù),所以使用范圍十分廣泛,已成為主流的分布式平臺。
分布式異構(gòu)數(shù)據(jù)庫的信息檢索模型 分布式異構(gòu)數(shù)據(jù)庫的信息檢索模型是建立在現(xiàn)代高校數(shù)字化圖書館的基礎(chǔ)之上的,其主要的圖形結(jié)構(gòu)如圖1所示。
該系統(tǒng)模型可以依據(jù)現(xiàn)在學(xué)校的網(wǎng)絡(luò),無需另行設(shè)計,通過互聯(lián)網(wǎng)可以有效地整合各高校數(shù)字圖書館之間的資源為客戶提供服務(wù)。同時,服務(wù)終端和服務(wù)器可以處于不同的網(wǎng)絡(luò)地點(diǎn)和環(huán)境。ORB不再負(fù)責(zé)完成用戶與數(shù)據(jù)庫之間透明的同時,并不會對各高校數(shù)字圖書館的完整性以及安全性造成任何的威脅。
CORBA中間件層次結(jié)構(gòu)體系 把CORBA作為基礎(chǔ)的中間件結(jié)構(gòu),主要分為四個層次分明的結(jié)構(gòu)體系:用戶端與ORB之間主要處理用戶與系統(tǒng)之間的交互,為用戶提供統(tǒng)一的、具體的服務(wù);ORB層主要通過ORB為客戶提供透明的路徑搜索服務(wù);應(yīng)用服務(wù)層主要通過相關(guān)技術(shù)為客戶提供具體的搜索服務(wù);數(shù)據(jù)庫層主要完成對數(shù)據(jù)的存儲以及處理。
4 分布式數(shù)據(jù)庫系統(tǒng)模型在高校數(shù)字圖書館中的實(shí)現(xiàn)
CORBA的應(yīng)用是在Java平臺基礎(chǔ)之上實(shí)現(xiàn)的,原因是Java可以跨越平臺,以及Java技術(shù)本身所具有的可解釋性、可移植性、高性能和面向?qū)ο蟮木幊陶Z言以及運(yùn)行環(huán)境等特性。CORBA是一項(xiàng)集成技術(shù),它為已有高校數(shù)字圖書館提供各種模塊及組成,通過鏈接技術(shù),CORBA間不同的數(shù)字圖書館的信息資源與用戶實(shí)現(xiàn)透明性。在應(yīng)用的過程中,CORBA發(fā)揮的作用不僅僅是對象請求,同時也構(gòu)成一個對象分布式的整體。通過CORBA,Java在各種環(huán)境中的使用得到極大的拓展。Java所創(chuàng)建的可移動的對象,可以通過CORBA的連接作用,與數(shù)據(jù)庫等對象實(shí)現(xiàn)相互集成。
建立在CORBA基礎(chǔ)上的分布式的系統(tǒng)模型,用戶在進(jìn)行使用時,可以使用網(wǎng)絡(luò)上的統(tǒng)一的檢索平臺,從各高校的數(shù)字圖書館中選擇符合自己實(shí)際需要的信息資源。這些服務(wù)的實(shí)現(xiàn)主要是由Java Beans及JSP來完成的。在Web服務(wù)器上選用VisiBroker For Java為該數(shù)據(jù)庫提供安全的、可靠的、健全的ORB通信服務(wù)。Gatekeerper允許向駐留在Web服務(wù)器上的對象發(fā)出操作請求,并可接收對象的回調(diào)。利用Smart Agent搜索并且定位已注冊的CORBA對象, 為客戶端程序和服務(wù)端對象通信建立好連接,并提供CORBA對象負(fù)載平衡和容錯能力。
5 結(jié)語
由于高校在數(shù)字圖書館的建設(shè)過程中缺少溝通,導(dǎo)致各高校數(shù)字圖書館在資源共享方面存在一定阻礙。如何實(shí)現(xiàn)不同高校之間信息資源的跨庫檢索,已經(jīng)成為圖書館管理工作中的一個重點(diǎn)。根據(jù)信息技術(shù)發(fā)展的最新成果,利用分布式數(shù)據(jù)庫技術(shù)可以實(shí)現(xiàn)各高校數(shù)字圖書館之間信息資源的共享,可以有效提高信息資源的利用率。
參考文獻(xiàn)
[1]孔祥疆.軟件開發(fā)方法與建立異構(gòu)數(shù)據(jù)庫使用平臺模型[D].烏魯木齊:中國科學(xué)院新疆理化技術(shù)研究所,2005.
[2]羅林球,孔祥疆,李曉.基于CORBA/數(shù)據(jù)字典/JDBC的異構(gòu)數(shù)據(jù)庫檢索系統(tǒng)實(shí)現(xiàn)[J].計算機(jī)應(yīng)用,2006(6).
[3]朱學(xué)芳.國內(nèi)外異構(gòu)數(shù)據(jù)庫統(tǒng)一檢索系統(tǒng)的比較研究[J].情報檢索,2005(12).
篇8
【關(guān)鍵詞】電網(wǎng)地理信息系統(tǒng);關(guān)系型數(shù)據(jù)庫;圖數(shù)據(jù)庫;拓?fù)浔闅v
隨著中國電力行業(yè)生產(chǎn)管理信息化的不斷推進(jìn),大多數(shù)電網(wǎng)企業(yè)已經(jīng)建立起基于地理信息系統(tǒng)的輸電網(wǎng)絡(luò)、配電網(wǎng)絡(luò)規(guī)劃、營銷、生產(chǎn)、巡檢、搶修、調(diào)度等的系信息化系統(tǒng)。目前常用的地理信息系統(tǒng)對電力設(shè)備的信息存儲管理都是架構(gòu)在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)(RMDBS)之上。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)應(yīng)用模式深入人心,已為廣大系統(tǒng)用戶及軟件開發(fā)廠商所熟悉?;趥鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)可以快速的開發(fā)出能滿足業(yè)務(wù)需求的應(yīng)用系統(tǒng)。
但是,當(dāng)電力企業(yè)對電網(wǎng)的管理粒度越來越細(xì)致、電力企業(yè)業(yè)務(wù)對地理信息系統(tǒng)依賴程度越來越高、地理信息系統(tǒng)存儲的數(shù)據(jù)量越來越大時,傳統(tǒng)的關(guān)系型數(shù)據(jù)逐漸暴露出其先天的局限性,其中的一些局限無法簡單地通過應(yīng)用程序優(yōu)化得到解決。這時,探討另辟蹊徑、使用合適的數(shù)據(jù)存儲系統(tǒng)顯得適時與必要。
1 地理信息系統(tǒng)數(shù)據(jù)庫在電網(wǎng)設(shè)備管理上的應(yīng)用現(xiàn)狀
電網(wǎng)線路及各型設(shè)備整體上具備顯著的地理位置相關(guān)性,在地理信息系統(tǒng)中,電網(wǎng)線路及設(shè)備一般分為三類模型:點(diǎn)模型、線模型、面模型。典型的點(diǎn)模型有桿塔、開關(guān)等;典型的線模型有架空線、電纜等;典型的面模型有配電房、變電站(根據(jù)不同的管理粒度,如不需對變電站內(nèi)設(shè)備進(jìn)行管理,則變電站可以表達(dá)為點(diǎn)模型)等?;诘乩硇畔⑾到y(tǒng)的電網(wǎng)管理系統(tǒng),一般包含對電網(wǎng)設(shè)備模型的屬性信息的管理功能,包括瀏覽、查找、增加、編輯、刪除等操作,系統(tǒng)存儲著管理中需要的設(shè)備屬性信息。其中非常重要的的屬性信息包括:設(shè)備所在地理坐標(biāo),各設(shè)備之間的連接關(guān)系,各設(shè)備之間的從屬關(guān)系,設(shè)備本身的狀態(tài)信息(例如開關(guān)的開合狀態(tài))。所有這些電網(wǎng)設(shè)備屬性以及電網(wǎng)設(shè)備間的關(guān)聯(lián)從屬關(guān)系,均存放在關(guān)系型數(shù)據(jù)庫中,通常,各企業(yè)均采用關(guān)系型數(shù)據(jù)庫(例如Oracle),將這些屬性信息及關(guān)系信息存儲在關(guān)系表中,通過標(biāo)準(zhǔn)的SQL操作對信息進(jìn)行新建、檢索、更新。
1.1 主要應(yīng)用點(diǎn)
地理信息系統(tǒng)通過企業(yè)數(shù)據(jù)總線,與各業(yè)務(wù)系統(tǒng)進(jìn)行了松耦合的服務(wù)集成和交互,為各業(yè)務(wù)應(yīng)用提供各類電網(wǎng)空間信息服務(wù),提供的業(yè)務(wù)支撐包括以下領(lǐng)域:生產(chǎn)管理、營銷管理、調(diào)度管理、搶修管理、綜合停電、電網(wǎng)規(guī)劃等。
生產(chǎn)管理應(yīng)用有:設(shè)備圖形描繪錄入、設(shè)備屬性編輯、設(shè)備連接從屬關(guān)系錄入等。
營銷業(yè)務(wù)應(yīng)用有:設(shè)備查詢定位、電網(wǎng)拓?fù)浞治?、專題圖展示、戶變關(guān)系交互、業(yè)擴(kuò)報裝輔助決策、負(fù)荷遷移輔助決策等。
調(diào)度業(yè)務(wù)應(yīng)用有:專題圖展現(xiàn)、專題圖審核與、電網(wǎng)圖形數(shù)據(jù)交換等。
搶修管理應(yīng)用:應(yīng)急資源查詢定位、電網(wǎng)拓?fù)潢P(guān)系分析、熱點(diǎn)查詢定位、專題圖展示等。
電網(wǎng)規(guī)劃業(yè)務(wù)應(yīng)用:電網(wǎng)規(guī)劃模型管理、規(guī)劃圖管理、電網(wǎng)現(xiàn)狀分析、區(qū)域負(fù)荷分析、變電站選址輔助決策、線路供電廊帶等。
綜合停電業(yè)務(wù)應(yīng)用:為綜合停電提供電網(wǎng)拓?fù)鋽?shù)據(jù)、停電影響用戶數(shù)據(jù)。
可以看出,以上應(yīng)用點(diǎn)可以歸類為三類基本的電網(wǎng)地理信息系統(tǒng)服務(wù):
(1)設(shè)備屬性、圖紙錄入維護(hù);對應(yīng)的業(yè)務(wù)應(yīng)用是:生產(chǎn)管理應(yīng)用。
(2)設(shè)備定位查詢、圖紙查詢;對應(yīng)的業(yè)務(wù)應(yīng)用是:營銷業(yè)務(wù)應(yīng)用、調(diào)度業(yè)務(wù)應(yīng)用、搶修管理應(yīng)用等。
(3)電網(wǎng)拓?fù)溥B接分析。對應(yīng)的業(yè)務(wù)應(yīng)用是:營銷業(yè)務(wù)應(yīng)用、搶修管理應(yīng)用、電網(wǎng)規(guī)劃業(yè)務(wù)應(yīng)、綜合停電業(yè)務(wù)應(yīng)用。
1.2 主要的局限性及傳統(tǒng)應(yīng)對方法
1.2.1 電網(wǎng)設(shè)備大并發(fā)讀寫性能不高
一般關(guān)系型數(shù)據(jù)庫使用關(guān)系表級別的查詢緩存,每次表中的一個記錄被更新,整個表的緩存即告失效,需要重新進(jìn)行加載,這是一種大粒度的緩存。由于日常使用中生產(chǎn)管理系統(tǒng)會頻繁地調(diào)用第一類電網(wǎng)地理信息系統(tǒng)服務(wù)“設(shè)備屬性、圖紙錄入維護(hù)”,直接導(dǎo)致數(shù)據(jù)庫緩存被頻繁更新,造成系統(tǒng)I/O頻繁,影響到第二類和第三類電網(wǎng)地理信息系統(tǒng)服務(wù)。
為應(yīng)對這個局限性,確保大部分第二類和第三類服務(wù)的性能,一般采取對編輯錄入結(jié)果延(例如在凌晨進(jìn)行)的方法,以使緩存更新錯開系統(tǒng)業(yè)務(wù)高峰。
1.2.2 電網(wǎng)模型屬性增減不靈活
關(guān)系型數(shù)據(jù)庫里,由于所有記錄是按行存儲,原則上是假設(shè)記錄的長度(即字段個數(shù)及長度)是固定的,增刪字段會引表的重構(gòu)并導(dǎo)致性能的損失。即使采用字典表的組織形式(如Oracle),也會在日積月累的字段增減使得整個表存儲結(jié)構(gòu)的零碎化,慢慢的導(dǎo)致訪問性能下降。如果生產(chǎn)管理上經(jīng)常對設(shè)備屬性進(jìn)行調(diào)整,這個局限會影響到了前文提到的所有三類服務(wù)。
為了減輕這個局限帶來的影響,地理信息系統(tǒng)一般采取預(yù)先分配字段的方式,建表時先添加多于實(shí)際需要的字段,以應(yīng)付以后的字段增長需求。這樣的設(shè)計能有效抵消屬性字段增減帶來的負(fù)面影響,但是造成存儲空間上額外開銷。
1.2.3 電網(wǎng)拓?fù)浞治鲂阅艿拖?/p>
由于地理信息系統(tǒng)所采用的關(guān)系型數(shù)據(jù)庫的特點(diǎn),每一對電網(wǎng)設(shè)備的連接關(guān)系都被表達(dá)成一個二元組的形式,并被按行存儲在存儲介質(zhì)中。如圖1所示。
圖1 關(guān)系型數(shù)據(jù)庫中設(shè)備邏輯的存儲
關(guān)系型數(shù)據(jù)庫均沒有自帶內(nèi)嵌的節(jié)點(diǎn)物理遍歷存儲過程或方法,當(dāng)要遍歷一次設(shè)備連接鏈時,必然要通過應(yīng)用程序會存儲過程經(jīng)過對每一個設(shè)備節(jié)點(diǎn)進(jìn)行查找才能完成遍歷。假設(shè)該連接表建有索引,對每個節(jié)點(diǎn)的查詢時間復(fù)雜度即為對索引的查詢復(fù)雜度
O(nlogn)(1)
由于這個遍歷過程由應(yīng)用程序執(zhí)行,因此執(zhí)行效率還會受應(yīng)用程序與數(shù)據(jù)庫系統(tǒng)間數(shù)據(jù)傳遞開銷影響。
常見的應(yīng)對方法是嘗試由應(yīng)用程序?qū)⒄麄€連接表導(dǎo)入內(nèi)存中以減少遍歷過程中對數(shù)據(jù)的訪問次數(shù)。理論上這種方法是可行的,但實(shí)際上由于一條設(shè)備連接鏈邏輯節(jié)點(diǎn)會分布在表中的各個位置而不是集中在一起,而且整個數(shù)據(jù)庫的設(shè)備總數(shù)十分大,把整個連接表導(dǎo)入內(nèi)存并不可行。此問題也是關(guān)系型數(shù)據(jù)庫在電網(wǎng)設(shè)備地理信息系統(tǒng)上難以解決的問題,對第三類服務(wù)的執(zhí)行效率造成很大影響。
2 圖數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)上的應(yīng)用前景
前文提到關(guān)系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)上的應(yīng)用局限性,雖然大部分局限性均有辦法通過應(yīng)用程序優(yōu)化進(jìn)行減輕,但由此帶來的應(yīng)用開發(fā)難度提升、軟硬件資源的額外消耗,增加了應(yīng)用系統(tǒng)的建設(shè)成本。并且,這些減輕措施并非真正解決根本問題,當(dāng)遇到極限場合時,這些局限性又會不可控制地爆發(fā)。然而,隨著數(shù)據(jù)庫技術(shù)的不斷發(fā)展,關(guān)系型數(shù)據(jù)庫的這些局限性均可以通過使用新型數(shù)據(jù)庫進(jìn)行有效地解決。
2.1 圖數(shù)據(jù)庫的技術(shù)特點(diǎn)
為了解決的關(guān)系型數(shù)據(jù)庫的種種局限性,業(yè)界研發(fā)了大量能解決這些問題且各自具有鮮明特點(diǎn)的不同技術(shù),它們可以與現(xiàn)有關(guān)系型數(shù)據(jù)庫相互配合或代替關(guān)系型數(shù)據(jù)庫,它們被統(tǒng)稱為NOSQL數(shù)據(jù)庫(Not Only SQL-databases)。其中,圖數(shù)據(jù)庫(Graph Database),是這些NOSQL數(shù)據(jù)庫中基于大型稠密網(wǎng)絡(luò)結(jié)構(gòu)的一種數(shù)據(jù)庫技術(shù),其技術(shù)特點(diǎn),剛好可以切合電網(wǎng)地理信息系統(tǒng)的種種需求。
2.1.1 圖數(shù)據(jù)庫的邏輯結(jié)構(gòu)
圖數(shù)據(jù)庫里的信息建模使用三種構(gòu)造單元:
節(jié)點(diǎn);
邊;
屬性。
以上三種單元以以下規(guī)則進(jìn)行組織:
節(jié)點(diǎn)和邊有可變的屬性列表;
邊具有方向和類型;
兩個節(jié)點(diǎn)間可以存在多條邊。
為更感性的了解這個邏輯結(jié)構(gòu)可以參考圖2。
圖2 圖數(shù)據(jù)庫的邏輯結(jié)構(gòu)
每一個節(jié)點(diǎn)相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一個記錄,節(jié)點(diǎn)中的屬性則對應(yīng)著關(guān)系型數(shù)據(jù)庫中記錄中的字段。由于節(jié)點(diǎn)的屬性表是可變的,應(yīng)用程序隨時可以為一個節(jié)點(diǎn)添加刪減屬性,添加屬性不會影響現(xiàn)有代碼任何邏輯。
另外,圖數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫最大的不同點(diǎn)在于,在關(guān)系型數(shù)據(jù)庫中使用連接表(另一個關(guān)系表)來表達(dá)的連接和從屬關(guān)系,在圖數(shù)據(jù)庫中已經(jīng)作為一個基本單元來進(jìn)行表達(dá)。
2.1.2 圖數(shù)據(jù)庫的物理存儲結(jié)構(gòu)
為了支撐前文提到的邏輯結(jié)構(gòu),開發(fā)者對圖數(shù)據(jù)庫的物理存儲進(jìn)行了針對性的設(shè)計。
節(jié)點(diǎn)是按固定大小的記錄順序存儲在物理介質(zhì)上;
節(jié)點(diǎn)帶有兩個固定指針,分別指向其第一個邊和第一個屬性;
邊記錄包含兩個指針,分別指向邊兩端的兩個節(jié)點(diǎn);
屬性除了屬性值外,還帶有兩個指針,分別指向前同一節(jié)點(diǎn)(或邊)的前一個屬性和后一個屬性。
為簡便起見,圖3對圖2中的設(shè)備1和設(shè)備2在圖數(shù)據(jù)庫中的存儲進(jìn)行了表述,其他設(shè)備只提及被設(shè)備2指向的連接。
圖3 圖數(shù)據(jù)庫的物理存儲結(jié)構(gòu)
由以上結(jié)構(gòu)可知,由于設(shè)備節(jié)點(diǎn)是順序存儲的定常結(jié)構(gòu),節(jié)點(diǎn)到邊以及邊到節(jié)點(diǎn)又是以指針形式存儲,圖數(shù)據(jù)庫對單個節(jié)點(diǎn)或邊的訪問均是直接定位到存儲位置的,不需要進(jìn)行額外的物理存儲讀寫來對節(jié)點(diǎn)或邊進(jìn)行訪問。
2.2 圖數(shù)據(jù)庫的優(yōu)劣勢
2.2.1 優(yōu)勢
由于圖數(shù)據(jù)特殊擁有網(wǎng)絡(luò)化的邏輯結(jié)構(gòu)及物理存儲結(jié)構(gòu),在圖數(shù)據(jù)庫中對節(jié)點(diǎn)根據(jù)連接關(guān)系進(jìn)行遍歷十分迅速,由于連接關(guān)系在數(shù)據(jù)錄入時就已經(jīng)建立完畢并且直接反映到物理存儲結(jié)構(gòu)中,對節(jié)點(diǎn)網(wǎng)絡(luò)的遍歷(無論是深度優(yōu)先遍歷還是廣度優(yōu)先遍歷)時間復(fù)雜度是常數(shù)級的,即
O(n)(2)
同時,由于圖數(shù)據(jù)庫每個節(jié)點(diǎn)均有獨(dú)立的屬性列表,因此,可以在如數(shù)據(jù)庫任意添加或刪除屬性(對應(yīng)與關(guān)系數(shù)據(jù)庫中的字段),而不對整個數(shù)據(jù)庫造成負(fù)面影響,從而實(shí)現(xiàn)良好的伸縮性。
另外,由于圖數(shù)據(jù)庫不存在表,緩存也是針對節(jié)點(diǎn)級別的,因此,數(shù)據(jù)更新對緩存的總體命中率的影響比關(guān)系型數(shù)據(jù)庫在相同場景下要輕微。
這些優(yōu)點(diǎn),恰恰能解決前文提到的關(guān)系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)中應(yīng)用的三個局限性。
2.2.2 劣勢
在眾多優(yōu)點(diǎn)的光環(huán)下,圖數(shù)據(jù)庫依然有其短板。首先,其不存在關(guān)系表,因此數(shù)據(jù)節(jié)點(diǎn)的組織在數(shù)據(jù)庫層面的邏輯聯(lián)系不顯而易見,開發(fā)者往往要閱讀應(yīng)用程序才能完全明白數(shù)據(jù)間的關(guān)系,造成對數(shù)據(jù)理解的額外開銷。其次,由于圖數(shù)據(jù)庫以節(jié)點(diǎn)及邊為基礎(chǔ)的物理存儲方式,真對某一屬性進(jìn)行全量數(shù)據(jù)的分類檢索可能會十分緩慢,不適合用作屬性檢索類的應(yīng)用基礎(chǔ)。因此,圖數(shù)據(jù)庫不能完全替代關(guān)系型數(shù)據(jù)庫,在實(shí)際應(yīng)用場景中,圖數(shù)據(jù)庫應(yīng)與關(guān)系型數(shù)據(jù)庫互補(bǔ)長短,才能發(fā)揮出系統(tǒng)的最大功效。
3 結(jié)論
本文對關(guān)系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)中的應(yīng)用局限進(jìn)行了分析,并針對這些缺陷結(jié)合圖數(shù)據(jù)庫技術(shù)特點(diǎn)探討了應(yīng)用圖數(shù)據(jù)庫的可行性,得出以下結(jié)論:
(1)圖數(shù)據(jù)庫的優(yōu)勢可以有效解決現(xiàn)在電網(wǎng)地理信息系統(tǒng)中由于關(guān)系型數(shù)據(jù)庫局限性遇到的問題。
篇9
【關(guān)鍵詞】智能電網(wǎng);海迅數(shù)據(jù)庫;PI實(shí)時數(shù)據(jù)庫
0.引言
信息化、自動化和互動化是智能電網(wǎng)的三大特征,這其中,信息化是基礎(chǔ),是解決智能電網(wǎng)可觀測,繼而實(shí)現(xiàn)可控與在控的重要途徑。隨著智能電網(wǎng)建設(shè)的不斷深入,越來越多的智能測量裝置遍布整個電網(wǎng),尤其是各網(wǎng)省公司和直屬單位輸變電設(shè)備狀態(tài)監(jiān)測、用電信息采集、配電自動化、發(fā)電集團(tuán)信息化等項(xiàng)目的試點(diǎn)與推廣,產(chǎn)生了大量實(shí)時數(shù)據(jù)。實(shí)時數(shù)據(jù)沉淀生成海量歷史數(shù)據(jù),連同調(diào)度生產(chǎn)控制大區(qū)生成的電網(wǎng)運(yùn)行方式、關(guān)口電量、保護(hù)、雷電等歷史/實(shí)時數(shù)據(jù)一起,這些數(shù)據(jù)是重要財富,是實(shí)現(xiàn)精益化管理的重要基礎(chǔ)。如何高效地采集、處理、存儲、檢索和利用這些海量信息,已經(jīng)成為建設(shè)智能電網(wǎng)所要面臨的首要問題。關(guān)系型數(shù)據(jù)庫和實(shí)時數(shù)據(jù)庫是目前數(shù)據(jù)庫市場上應(yīng)用較為廣泛的兩類數(shù)據(jù)庫,故數(shù)據(jù)的存儲一般采用關(guān)系型數(shù)據(jù)庫或者實(shí)時數(shù)據(jù)庫存儲。本文先介紹這兩個類型數(shù)據(jù)庫的定義及特點(diǎn)。
1.實(shí)時數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫
1.1關(guān)系數(shù)據(jù)庫的介紹
關(guān)系型數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,以關(guān)系模型組織數(shù)據(jù)并借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù),用二維表的形式來表示實(shí)體和實(shí)體間聯(lián)系的數(shù)據(jù)模型。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整性約束三部分組成,具有數(shù)據(jù)結(jié)構(gòu)簡單、查詢與處理方便、數(shù)據(jù)獨(dú)立性高、理論基礎(chǔ)堅(jiān)實(shí)等特點(diǎn)。關(guān)系模型也是目前技術(shù)最成熟、應(yīng)用最廣泛的數(shù)據(jù)庫技術(shù),設(shè)計和實(shí)現(xiàn)風(fēng)險較低,但由于關(guān)系模型提供了較高的數(shù)據(jù)獨(dú)立性和非過程化的查詢功能,系統(tǒng)的查詢速度和查詢效率較低,但其仍是數(shù)據(jù)存儲的傳統(tǒng)標(biāo)準(zhǔn)。
1.1.1關(guān)系型數(shù)據(jù)庫組件
關(guān)系型數(shù)據(jù)庫通常包含下列組件:
(1)客戶端應(yīng)用程序( Client )。
(2)數(shù)據(jù)庫服務(wù)器( Server)。
(3)數(shù)據(jù)庫( Database)。
1.1.2關(guān)系型數(shù)據(jù)庫優(yōu)缺點(diǎn)分析(相比實(shí)時數(shù)據(jù)庫)
關(guān)系型數(shù)據(jù)庫相比實(shí)時數(shù)據(jù)庫而言,有著以下優(yōu)點(diǎn):
(1)容易理解。二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上,數(shù)據(jù)結(jié)構(gòu)簡單、清晰。因此,關(guān)系模型相對其他模型來說更容易理解。
(2)使用方便。通用的SQL語言易學(xué)易懂,程序員、數(shù)據(jù)管理員可以方便地在邏輯層面操作數(shù)據(jù)庫,而完全不必理解其底層實(shí)現(xiàn)。其提供的諸如視圖、存儲過程、觸發(fā)器、索引等對象使數(shù)據(jù)訪問趨于便利。
(3)易于維護(hù)。豐富的完整性大大降低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率。
(4)安全性高。登錄身份驗(yàn)證功能完善,提高安全性。
1.2實(shí)時數(shù)據(jù)庫的介紹
實(shí)時數(shù)據(jù)庫是數(shù)據(jù)庫系統(tǒng)發(fā)展的一個分支,是一種專用的處理海量實(shí)時信息的基于測點(diǎn)模型的數(shù)據(jù)庫,針對實(shí)時采集的具有時序特征的海量數(shù)據(jù)具有極高的事務(wù)處理能力、數(shù)據(jù)壓縮比和查詢檢索速度。實(shí)時數(shù)據(jù)庫是基于先進(jìn)控制和優(yōu)化控制而出現(xiàn)的,對數(shù)據(jù)的實(shí)時性要求比較高,因而實(shí)時、高效、穩(wěn)定是實(shí)時數(shù)據(jù)庫最關(guān)鍵的指標(biāo)。
1.2.1實(shí)時數(shù)據(jù)庫的邏輯結(jié)構(gòu)
實(shí)時數(shù)據(jù)庫邏輯上包含實(shí)時數(shù)據(jù)庫、歷史數(shù)據(jù)庫和測點(diǎn)數(shù)據(jù)庫三部分。實(shí)時數(shù)據(jù)庫維護(hù)實(shí)時數(shù)據(jù),實(shí)時數(shù)據(jù)是每個測點(diǎn)時間戳最大的量測值(也就是當(dāng)前值);歷史數(shù)據(jù)庫維護(hù)歷史數(shù)據(jù),歷史數(shù)據(jù)由實(shí)時數(shù)據(jù)不斷歸檔沉淀后產(chǎn)生,實(shí)時數(shù)據(jù)庫中往往采用壓縮的方式存儲歷史數(shù)據(jù);測點(diǎn)數(shù)據(jù)庫則維護(hù)所有測點(diǎn)的各種信息。
1.2.2實(shí)時數(shù)據(jù)庫在處理實(shí)時數(shù)據(jù)上的優(yōu)勢
實(shí)時數(shù)據(jù)庫具有實(shí)時數(shù)據(jù)寫入和訪問速度快、歷史數(shù)據(jù)歸檔和訪問速度快、歷史數(shù)據(jù)高效壓縮、數(shù)據(jù)以及接口符合測點(diǎn)模型等優(yōu)點(diǎn)。但實(shí)時數(shù)據(jù)庫對測點(diǎn)數(shù)有限制,而且往往按測點(diǎn)數(shù)收費(fèi),導(dǎo)致等量數(shù)據(jù)的管理成本相對關(guān)系型數(shù)據(jù)庫偏高。
實(shí)時數(shù)據(jù)庫在數(shù)據(jù)通信、數(shù)據(jù)組織、數(shù)據(jù)存儲、數(shù)據(jù)檢索、數(shù)據(jù)訪問、數(shù)據(jù)處理、數(shù)據(jù)展現(xiàn)等方面的專業(yè)化及產(chǎn)品化,為構(gòu)建基于大容量實(shí)時歷史數(shù)據(jù)之上的分析應(yīng)用提供了便捷穩(wěn)定的數(shù)據(jù)支撐,使應(yīng)用系統(tǒng)可以從更高更深層次充分利用寶貴的生產(chǎn)實(shí)時歷史數(shù)據(jù)。
1.3實(shí)時數(shù)據(jù)庫的和關(guān)系數(shù)據(jù)庫的對比
從下表對關(guān)系型數(shù)據(jù)庫和實(shí)時數(shù)據(jù)庫在數(shù)據(jù)組織方式、訪問方式、壓縮方式、應(yīng)用領(lǐng)域等的比較結(jié)果可見,實(shí)時數(shù)據(jù)庫產(chǎn)品更適合供電企業(yè)生產(chǎn)的需要。這是因?yàn)殡娏ιa(chǎn)具有生產(chǎn)、傳輸和使用同時完成的特點(diǎn),生產(chǎn)過程中產(chǎn)生大量的時序數(shù)據(jù),應(yīng)用也需要大量圍繞著這些實(shí)時/歷史數(shù)據(jù)。實(shí)時數(shù)據(jù)庫在處理時序數(shù)據(jù)時具有的存儲速度快、數(shù)據(jù)壓縮比大、節(jié)省存儲空間等有點(diǎn),在供電企業(yè)的生產(chǎn)應(yīng)用中具有不可替代的優(yōu)勢。
2.實(shí)時數(shù)據(jù)庫產(chǎn)品的介紹
目前市面上比較有名的實(shí)時數(shù)據(jù)庫產(chǎn)品有PI實(shí)時數(shù)據(jù)庫,eDNA實(shí)時數(shù)據(jù)庫,iHistorian 實(shí)時數(shù)據(jù)庫,此外,SyncBASE、海迅和安捷(Agilor)在數(shù)據(jù)庫市場中也占有一定份額。其中,國際市場占有率最大的PI實(shí)時數(shù)據(jù)庫。另外,我國自主研發(fā)的數(shù)據(jù)庫產(chǎn)品海迅實(shí)時數(shù)據(jù)庫也在配調(diào)自動化等領(lǐng)域暫露頭角,取得了較大份額。因此下面重點(diǎn)對比這兩個產(chǎn)品。
2.1 PI實(shí)時數(shù)據(jù)庫
PI是由美國OSI Software公司開發(fā)的一套基于C/S架構(gòu)的實(shí)時數(shù)據(jù)庫軟件應(yīng)用平臺,主要應(yīng)用于存儲和獲取時間序列的實(shí)時數(shù)據(jù),是工廠底層控制系統(tǒng)與上層管理信息系統(tǒng)連接的橋梁。一方面,PI用于工廠數(shù)據(jù)的自動采集、存貯和監(jiān)視,作為大型實(shí)時數(shù)據(jù)庫和歷史數(shù)據(jù)庫,PI可存貯每個過程點(diǎn)的多年數(shù)據(jù),并提供清晰、精確的操作情況畫面,用戶既可瀏覽工廠當(dāng)前的生產(chǎn)情況,也可查看過去的生產(chǎn)情況;另一方面,PI為最終用戶和應(yīng)用軟件開發(fā)人員提供了快捷高效的工廠信息,PI在業(yè)務(wù)管理和實(shí)時生產(chǎn)之間起到了橋梁作用。
2.2海迅實(shí)時數(shù)據(jù)庫
海迅實(shí)時數(shù)據(jù)庫管理系統(tǒng)是江蘇瑞中數(shù)據(jù)股份有限公司研發(fā)的國內(nèi)擁有完全自主知識產(chǎn)權(quán)的大型通用實(shí)時數(shù)據(jù)庫,該軟件在全面總結(jié)國內(nèi)外同類產(chǎn)品優(yōu)缺點(diǎn)的基礎(chǔ)上按照智能電網(wǎng)、工業(yè)自動化系統(tǒng)以及物聯(lián)網(wǎng)特點(diǎn)和實(shí)際需求精心設(shè)計、潛心研制而成,是進(jìn)行海量歷史/實(shí)時數(shù)據(jù)處理的專業(yè)平臺。 (下轉(zhuǎn)第249頁)
(上接第155頁)3.海迅實(shí)時數(shù)據(jù)庫與PI實(shí)時數(shù)據(jù)庫的對比
以下為PI和瑞中的海迅數(shù)據(jù)庫在服務(wù)器端模塊部署方式,性能指標(biāo)、組態(tài)工具、應(yīng)用領(lǐng)域、市場占有率等方面的對比介紹。
海迅數(shù)據(jù)庫有著分布式體系架構(gòu)和跨平臺特性,讓它在各廠商的實(shí)時數(shù)據(jù)庫產(chǎn)品中格外突出。分布式體系架構(gòu)使得它能支持更多的測點(diǎn)容量,達(dá)到更高的性能??缙脚_特性使它的應(yīng)用領(lǐng)域更廣泛,使用更安全高效。
篇10
關(guān)鍵詞:云計算 數(shù)據(jù)模型 云數(shù)據(jù)庫 NoSQL數(shù)據(jù)庫
0 引言
從2006年Google提出“云計算”的概念至今,云計算正以史無前例的速度發(fā)展,國內(nèi)外各大IT企業(yè)都在開署各自的云計算平臺,云計算的應(yīng)用更趨多樣化,目前在互聯(lián)網(wǎng)上我們看到的很多應(yīng)用都可以看到“云”的身影,諸如“云存儲”、“云安全”、“云物聯(lián)”、“云郵件”、“云輸入法”等等??偟膩碚f云計算包括三個層次的服務(wù):基礎(chǔ)設(shè)施即服務(wù)(IaaS),平臺即服務(wù)(PaaS)和軟件即服務(wù)(SaaS)。云服務(wù)模式實(shí)現(xiàn)了資源集中配置和管理,實(shí)現(xiàn)按需采購、配置,避免資源浪費(fèi),能夠更好滿足用戶不斷變化的需求。同時降低管理維護(hù)成本,隨著云計算技術(shù)的不斷發(fā)展,系統(tǒng)的可靠性、擴(kuò)展性、穩(wěn)定性也會更好,云計算將影響傳統(tǒng)數(shù)據(jù)庫的發(fā)展趨勢,云服務(wù)模式將逐步得到市場認(rèn)可,反過來講,傳統(tǒng)數(shù)據(jù)庫必須能更好適應(yīng)云計算環(huán)境的需求。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫由于其天生的限制,已經(jīng)越來越無法滿足目前時代的要求,云計算時代對數(shù)據(jù)庫技術(shù)提出了新的需求,主要表現(xiàn)在海量數(shù)據(jù)處理,大規(guī)模集群管理,低延遲讀寫速度,建設(shè)及運(yùn)營成本。雖然它在數(shù)據(jù)存儲方面占據(jù)了不可動搖的地位,但對數(shù)據(jù)擴(kuò)展、讀寫速度、支撐容量以及建設(shè)和運(yùn)營成本的要求方面,就稍顯遜色。下面我們來探討適應(yīng)于云計算的數(shù)據(jù)庫所支持的數(shù)據(jù)模型。
1 云數(shù)據(jù)模型的類型
無論是關(guān)系型數(shù)據(jù)庫還是非關(guān)系型數(shù)據(jù)庫,都是某種數(shù)據(jù)模型的實(shí)現(xiàn),不同的數(shù)據(jù)模型可以滿足不同的應(yīng)用需求。數(shù)據(jù)模型會影響客戶端通過API對數(shù)據(jù)的操作,決定了客戶端如何對數(shù)據(jù)進(jìn)行編碼存儲。云數(shù)據(jù)庫的設(shè)計可以采用不同的數(shù)據(jù)模型,目前適應(yīng)于云計算平臺的數(shù)據(jù)模型有以下幾類:
1.1 基于云計算的關(guān)系模型。關(guān)系型云數(shù)據(jù)庫的數(shù)據(jù)模型涉及行組和表組等相關(guān)概念。此模型的數(shù)據(jù)結(jié)構(gòu)為一個表是一個邏輯關(guān)系,它包含一個分區(qū)鍵,用來對表進(jìn)行分區(qū)。具有相同分區(qū)鍵的多個表的集合稱為表組。在表組中,具有相同分區(qū)鍵值的多個行的集合稱為行組。一個行組中包含的行總是被分配到同一個數(shù)據(jù)節(jié)點(diǎn)上。每個表組會包含多個行組,這些行組會被分配到不同的數(shù)據(jù)節(jié)點(diǎn)上。一個數(shù)據(jù)分區(qū)包含了多個行組。因此,每個數(shù)據(jù)節(jié)點(diǎn)都存儲了位于某個分區(qū)鍵值區(qū)間內(nèi)的所有行。微軟的SQL Azure云數(shù)據(jù)庫就是基于此模型的。
1.2 NoSQL數(shù)據(jù)庫數(shù)據(jù)模型。由于在設(shè)計上和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫相比有很大的不同,故稱此類數(shù)據(jù)庫為“NoSQL(Not only SQL)”系列數(shù)據(jù)庫,即非關(guān)系型的數(shù)據(jù)庫。與關(guān)系型數(shù)據(jù)庫相比,此類數(shù)據(jù)庫非常關(guān)注對數(shù)據(jù)高并發(fā)讀寫和海量數(shù)據(jù)的存儲,在架構(gòu)和數(shù)據(jù)模型方面做了簡化,而在擴(kuò)展和并發(fā)等方面做了增強(qiáng)。此類數(shù)據(jù)庫種類繁多,且各有優(yōu)缺點(diǎn),其數(shù)據(jù)模型有如下四類:①鍵值(key-value)存儲模型。使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。其數(shù)據(jù)模型為一系列的鍵值對。它能提供非??斓牟樵兯俣?、大的數(shù)據(jù)存放量和高并發(fā)操作,非常適合通過主鍵對數(shù)據(jù)進(jìn)行查詢和修改等操作,缺點(diǎn)是存儲的數(shù)據(jù)缺少結(jié)構(gòu)化,不支持復(fù)雜的操作。運(yùn)用此模型的數(shù)據(jù)庫有BigTable、Tokyo cabinet/Tyrant、Redis、Voldmort、Berkeley DB等。②列式存儲模型。列式存儲和關(guān)系模型相似,與關(guān)系模型存儲記錄不同,列式存儲以流的方式在列中存儲所有的數(shù)據(jù)。其數(shù)據(jù)模型為以列簇式存儲,將同一列數(shù)據(jù)存放在一起。屬于同一列的數(shù)據(jù)會盡可能地存儲在硬盤同一個頁中,而不是將屬于同一個行的數(shù)據(jù)存放在一起。使用列式數(shù)據(jù)庫,將會節(jié)省大量I/O,并且大多數(shù)列式數(shù)據(jù)庫都支持Column Family這個特性,能將多個列并為一個小組??傮w而言,這種數(shù)據(jù)模型的優(yōu)點(diǎn)是查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展,缺點(diǎn)是功能相對局限。運(yùn)用此模型的數(shù)據(jù)庫有Cassandra、HBase、Riak等。③文檔模型。在數(shù)據(jù)結(jié)構(gòu)上,文檔型和鍵值型很相似,也是一個key對應(yīng)一個value,但是這個Value主要以JSON或者XML等格式的文檔來進(jìn)行存儲,是有語義的,并且文檔數(shù)據(jù)庫一般可以對Value來創(chuàng)建Secondary Index來方便上層的應(yīng)用,而這點(diǎn)是普通鍵值數(shù)據(jù)庫所無法支持的。這種數(shù)據(jù)模型的優(yōu)點(diǎn)是對數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,缺點(diǎn)是對查詢性能不高,而且缺乏統(tǒng)一的查詢語法。運(yùn)用此類模型的數(shù)據(jù)庫有MongoDB、CouchDB等。④圖形模型。圖形結(jié)構(gòu)的數(shù)據(jù)庫同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫不同,它是使用靈活的圖形模型,并且能夠擴(kuò)展到多個服務(wù)器上。其數(shù)據(jù)模型為圖結(jié)構(gòu),其優(yōu)點(diǎn)是可以很方便地利用圖的相關(guān)算法,缺點(diǎn)是需要對整個圖做計算才能得出結(jié)果,不容易做分布式的集群方案。運(yùn)用此類模型的數(shù)據(jù)庫有Neo4J、InfoGrid、Infinite Graph等。數(shù)據(jù)模型有著各自的優(yōu)缺點(diǎn),它們適用于不同的領(lǐng)域。不管選擇關(guān)系模型,還是非關(guān)系模型,都要根據(jù)實(shí)際應(yīng)用的場景做出選擇。有時候單一的數(shù)據(jù)模型并不能滿足我們的需求,對于許多大型的應(yīng)用可能需要集成多種數(shù)據(jù)模型。