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