關系型數(shù)據(jù)庫范文

時間:2023-03-29 22:07:35

導語:如何才能寫好一篇關系型數(shù)據(jù)庫,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。

關系型數(shù)據(jù)庫

篇1

因特網(wǎng)發(fā)展提出的新挑戰(zhàn)

自20世紀80年代以來,開發(fā)人員在開發(fā)企業(yè)級應用的時候,關系數(shù)據(jù)庫已經(jīng)成為主流的選擇,因為這種最初由E. F.Codd博士提出、并由IBM公司作為一種通用數(shù)據(jù)庫而廣泛推行的數(shù)據(jù)庫技術已經(jīng)相當成熟。關系型數(shù)據(jù)庫可以提供高擴展性的高性能事務處理和多平臺支持,同時還提供一個數(shù)據(jù)建??蚣?,其中很多框架都包括應用開發(fā)的腳本語言。

然而,20世紀90年代的因特網(wǎng)革命,使開發(fā)人員們已經(jīng)開始接受新的數(shù)據(jù)模型和程序范本。一些封裝在面向?qū)ο蟮某绦蚶碚?,如?shù)據(jù)與代碼結(jié)合、信息與方法相結(jié)合等,已成為全新的開發(fā)路線,打破了傳統(tǒng)的關系型數(shù)據(jù)庫的工作模式。同時,因特網(wǎng)革命產(chǎn)生了更復雜的數(shù)據(jù)需求。數(shù)字數(shù)據(jù)通過因特網(wǎng)提供的大量數(shù)字信息在全球得以輕松傳播,并因此產(chǎn)生了大量的數(shù)據(jù)文件或二進制大對象 (BLOBs)――這些都遠不是傳統(tǒng)的關系型數(shù)據(jù)模型所能解決的。

面向?qū)ο蟮臄?shù)據(jù)庫技術

面向?qū)ο笫且环N遠比傳統(tǒng)的關系模型強大得多的邏輯結(jié)構(gòu)。一些面向?qū)ο蟮母拍睿纭皩ο罄^承”等,更強調(diào)用一種真實可行的角度來看待并處理現(xiàn)實世界的信息。其它概念,如“封裝”和“多態(tài)”等,則提供了更強大的機制來管理對象,大大提高了可重用性和標準化等編程效率。面向?qū)ο筮€可以很經(jīng)濟地將代碼、數(shù)據(jù)和BLOBs聯(lián)系在一起,同時為基于因特網(wǎng)的快速應用開發(fā)(RAD)提供理想的基礎。

絕大多數(shù)開發(fā)人員已經(jīng)意識到面向?qū)ο罄碚摰膶嵱眯院椭匾裕⒁验_始采用面向?qū)ο蟮某绦蛘Z言。然而,面向?qū)ο蟮睦碚?,在很大程度上仍然受制于傳統(tǒng)的關系型數(shù)據(jù)庫技術。以網(wǎng)絡為中心的數(shù)據(jù)庫必須擁有更強大的性能和伸縮性,這些都是存儲信息型的關系型數(shù)據(jù)庫永遠不可能做到的。

面向?qū)ο蟮睦碚撆c關系型數(shù)據(jù)庫技術的應用開發(fā),產(chǎn)生了“抗阻不匹配”現(xiàn)象,即開發(fā)人員的邏輯(對象)結(jié)構(gòu)與物理的二維(關系的)表不相匹配,而所謂的“對象關系映射”在許多應用開發(fā)項目中會消耗掉40%的成本??棺璨黄ヅ涞默F(xiàn)象,大大增加了開發(fā)和平臺的成本,并降低了性能和伸縮性。應用越大,面向?qū)ο蟮年P系型建模就越復雜,問題就會越嚴重。

面向?qū)ο蟮暮箨P系型數(shù)據(jù)庫

多年來令開發(fā)人員工作輕松的關系模型數(shù)據(jù)庫正令他們越來越頭疼。引導潮流的先驅(qū)們正不斷地去尋求新的數(shù)據(jù)庫管理系統(tǒng)的替代品。

面向?qū)ο蟮暮箨P系型數(shù)據(jù)庫管理系統(tǒng)也許是一個不錯的選擇。它所采用的靈活的物理結(jié)構(gòu),可以同時根據(jù)關系和面向?qū)ο髞泶鎯?shù)據(jù)。開發(fā)人員可以在單一的數(shù)據(jù)庫管理系統(tǒng)中選擇最適合應用的開發(fā)范本、存儲代碼和BLOBs。表與對象在數(shù)據(jù)庫層之間能夠相互轉(zhuǎn)換,可以作為一種不同系統(tǒng)與不同應用之間數(shù)據(jù)共享的通用機制來支持SQL。后關系型數(shù)據(jù)庫會帶來更低的軟件和平臺成本、更好的運行性能與伸縮性,并且降低用戶跨應用、環(huán)境和平臺的數(shù)據(jù)庫管理成本。

篇2

關鍵詞:非關系型數(shù)據(jù)庫;無模式;聚合結(jié)構(gòu);實驗教學;云計算

中圖分類號:TP399 文獻標識碼:A 文章編號:1009-3044(2013)31-7046-03

云計算是現(xiàn)階段計算機技術和網(wǎng)絡技術發(fā)展的必然結(jié)果,是當今信息領域的重大變革,是解決信息時代大用戶、大數(shù)據(jù)和大系統(tǒng)挑戰(zhàn)的切實可行的方案[1]。當今世界發(fā)達國家或地區(qū)如美國、歐洲、日本等都是政府牽頭推動云計算的發(fā)展,而中國政府的“十二五”規(guī)劃中將云計算作為重點發(fā)展項目[2],并鼓勵企業(yè)推廣開發(fā)應用,目前已獲得了最大的經(jīng)濟效益和社會影響力。因此云計算是新一代信息技術的主流,在云計算的基礎上可衍生出云制造、云服務及云媒體等技術?,F(xiàn)代企業(yè)的市場競爭日趨激烈,所面對的用戶數(shù)量和業(yè)務數(shù)據(jù)量與日激增,其業(yè)務系統(tǒng)日并發(fā)訪問管理、海量數(shù)據(jù)的存儲、復雜的系統(tǒng)架構(gòu)等問題給企業(yè)帶來了最大的管理壓力,其開發(fā)成本也激烈上升,而物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)快速發(fā)展增加了這一趨勢。在諸多問題中,海量數(shù)據(jù)庫的設計、存儲和訪問顯得尤為突出。而傳統(tǒng)的關系型數(shù)據(jù)庫在處理集群環(huán)境下的海量數(shù)據(jù)時已沒有非關系型數(shù)據(jù)庫那樣優(yōu)勢明顯和靈活,實際上使用非關系型數(shù)據(jù)庫能構(gòu)建性能更高、擴展性更好及更易編程的web系統(tǒng)。

因此在大數(shù)據(jù)時代下,數(shù)據(jù)庫課程教學必須引入非關系型數(shù)據(jù)庫的教學內(nèi)容,其教學課時比重應與關系型數(shù)據(jù)庫相當(48課時),這是當今用戶業(yè)務系統(tǒng)的迫切需求和云計算技術發(fā)展對此類信息化人才大量需求的必然結(jié)果,也是目前高校實施信息化卓越工程師的重點解決方案[3]。

1 大數(shù)據(jù)時代非關系型數(shù)據(jù)庫課程理論教學設計

以解決集群環(huán)境下的海量數(shù)據(jù)庫的設計、存儲和查詢?yōu)槟康牡姆顷P系型數(shù)據(jù)庫在教學時可以參照關系型數(shù)據(jù)庫的課程體系和教學方法[4]。以關系型數(shù)據(jù)庫教學的主要內(nèi)容包括關系理論、關系代數(shù)、規(guī)范化設計、SQL應用、儲存過程、函數(shù)、觸發(fā)器、事務與并發(fā)性、安全性及高級語言的開發(fā)等。與關系型數(shù)據(jù)庫相比,非關系型數(shù)據(jù)庫沒有復雜的關系特性和嚴格的范式設計,更具靈活性,兩者的比較如表1所示。

從表1可以得出,在大數(shù)據(jù)時代主要解決了數(shù)據(jù)庫的并發(fā)負載問題、海量數(shù)據(jù)存儲問題、高可擴展性與高可用性問題、讀寫實時性問題以及開發(fā)與維護成本問題。

由非關系型數(shù)據(jù)庫的特點,設計的理論教學內(nèi)容如下:

1)非關系型數(shù)據(jù)庫的基本概念 主要包括該數(shù)據(jù)庫的組成、分類、特征及作用、邏輯結(jié)構(gòu)、集合、文檔、鍵值對、聚合;課內(nèi)教學大約占4課時。

2)非關系型數(shù)據(jù)庫建模 與關系型數(shù)據(jù)庫的ER模型不同,非關系型數(shù)據(jù)庫集合之間主要采用聚合結(jié)構(gòu),因為聚合使得在集群中管理數(shù)據(jù)存儲更為方便,當然設計的聚合模型會因人而異,圖1是某CRM系統(tǒng)銷售模塊的數(shù)據(jù)庫ER模型,而圖2是其對應的非關系型數(shù)據(jù)庫的聚合模型。這部分內(nèi)容是重點,課內(nèi)教學大約占8課時。

5)非關系型數(shù)據(jù)庫的管理 主要包括用戶的創(chuàng)建、授權(quán)機制;索引創(chuàng)建與維護;數(shù)據(jù)備份與恢復;事務及并發(fā)性等,這里的事務主要指一致性,海量存儲中是靠很多節(jié)點來執(zhí)行數(shù)據(jù)操作的,具有較好的事務一致性,要做的僅僅是在網(wǎng)絡延遲與一致性之間取得平衡[5]。課內(nèi)教學大約占4課時。

6)非關系型數(shù)據(jù)庫系統(tǒng)網(wǎng)絡架構(gòu) 主要包括集群環(huán)境下復制集、分片技術的原理及由復制集加分片技術共同構(gòu)建項目開發(fā)環(huán)境,可實現(xiàn)數(shù)據(jù)海量存儲和高可用性需求,課內(nèi)教學大約占4課時。

7)非關系型數(shù)據(jù)庫的實例開發(fā) 主要內(nèi)容包括使用Java或C#語言實現(xiàn)一個非關系型數(shù)據(jù)庫小型系統(tǒng)的設計與實現(xiàn),與開發(fā)關系型數(shù)據(jù)庫使用JDBC或組件不同,非關系型數(shù)據(jù)庫的開發(fā)使用專門的API接口,該接口簡單易學易用。課內(nèi)教學大約占6課時。

因此該課程的課內(nèi)理論總課時為38,不足的部分學生可利用課外時間補充與完善所學知識點。

2 大數(shù)據(jù)時代非關系型數(shù)據(jù)庫課程實驗項目設計

該課程的實驗設計依據(jù)是按照大數(shù)據(jù)時代下的信息系統(tǒng)的開發(fā)應用為前提。學生要能單獨設計無模式的數(shù)據(jù)模型,進行文檔對象的CRUD操作,掌握集群環(huán)境下的復制與分片技術,并能通過某種高級語言開發(fā)非關系型數(shù)據(jù)庫。設計實驗5個,每個實驗2學時,共10學時。如表2所示。

3 結(jié)束語

高校作為先進信息技術研究、教學的最前端,應適應當今信息技術的快速發(fā)展,與時俱進。與其對應的課程應做出相應的改革和調(diào)整。關系型數(shù)據(jù)庫作為傳統(tǒng)的數(shù)據(jù)庫課程一直占據(jù)信息化系列課程的主導地位,數(shù)十年沒有動搖。但隨著大數(shù)據(jù)時代的來臨,非關系型數(shù)據(jù)庫來勢迅猛,大有取代前者的趨勢,但關系型數(shù)據(jù)庫在實時聯(lián)機事務處理、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、完整性約束等方面具有無可替代的優(yōu)勢,因此這兩種數(shù)據(jù)庫還將在一定時間內(nèi)長期存在,現(xiàn)行系統(tǒng)的數(shù)據(jù)存儲仍是混合式存儲模式結(jié)構(gòu),因此早日引入非關系型數(shù)據(jù)庫課程的教學有利于保持高校課程體系的先進性,有利于新技術人才的培養(yǎng),有利于國家推動云計算的進展。

參考文獻:

[1] 姚宏宇,田舒寧.云計算大數(shù)據(jù)時代的系統(tǒng)工程[M].北京:電子工業(yè)出版社,2013.

[2] 許守東.云計算技術應用與實踐[M].北京:中國鐵道出版社,2012.

[3] 劉鵬.云計算(第二版)[M].北京:電子工業(yè)出版社,2013.

篇3

【關鍵詞】 VB6.0 C# SQL SERVER T-SQL 類

【中圖分類號】G42 【文獻標識碼】A 【文章編號】2095-3089(2013)05-0243-03

前言

中央廣播電視大學的數(shù)據(jù)庫應用技術教材是基于VB6.0和SQL SERVER2000實驗環(huán)境下的,這為我們的數(shù)據(jù)庫應用技術教學實踐帶來一些困擾和不便,尤其不便于學生課后更準確有效地自學教材。對此問題,筆者借助多年教學經(jīng)驗的積累,將中央電大本門課程的形考任務“數(shù)據(jù)庫應用系統(tǒng)開發(fā)”在VB6.0、和C#多種環(huán)境下的實現(xiàn)進行了思考和實驗,對不同環(huán)境下的數(shù)據(jù)庫應用系統(tǒng)設計實現(xiàn)方法和關鍵技術進行了比較,能夠有效地指導學生在不同應用程序開發(fā)環(huán)境下,以簡捷的方式、方法,較快地設計、實現(xiàn)一個具備增、刪、改、查詢功能的小型數(shù)據(jù)庫應用系統(tǒng),同時滿足了學生接受新事物、新技術的愿望,激發(fā)了他們搞好畢業(yè)設計的創(chuàng)作熱情,為學生們后續(xù)畢業(yè)設計打下了堅實的基礎。

實現(xiàn)

本系統(tǒng)是基于 C/S 結(jié)構(gòu)的信息管理系統(tǒng),分別使用 VB6.0、和C#作為開發(fā)語言,前端應用程序通過ADO、技術來與數(shù)據(jù)庫進行連接,優(yōu)點是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。

該數(shù)據(jù)庫應用系統(tǒng)雖然規(guī)模小,但是已經(jīng)具備增加、修改、刪除、查詢等系統(tǒng)功能。下面介紹一下系統(tǒng)開發(fā)的主要方法:

一、進行數(shù)據(jù)庫設計

(一)需求分析

1.業(yè)務流程分析

“學生成績管理系統(tǒng)”,主要目的是用以實現(xiàn)學生、課程以及成績等多項管理。本系統(tǒng)管理的對象簡單,每個數(shù)據(jù)之間都有較強的關聯(lián)性,涉及過程并不復雜。因此,比較適合于數(shù)據(jù)庫管理。

2.數(shù)據(jù)流程分析

圖1學生成績管理數(shù)據(jù)流程圖

(二)概念結(jié)構(gòu)設計

根據(jù)需求分析的結(jié)果,進行概念結(jié)構(gòu)設計,依照收集信息標識對象(實體)標識每個對象需要存儲的詳細信息(屬性)標識對象之間的關系的步驟,采用E-R圖工具表示,設計結(jié)果如圖2所示:

圖2學生成績管理E-R圖

(三)邏輯結(jié)構(gòu)設計和物理實現(xiàn)

邏輯結(jié)構(gòu)設計的方法與步驟,是將概念結(jié)構(gòu)設計的結(jié)果E-R圖轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進行優(yōu)化的過程。具體過程為:

將各實體轉(zhuǎn)化為對應的表,將各屬性轉(zhuǎn)化為各表對應的列;標識每個表的主鍵列;在表之間體現(xiàn)實體之間的映射關系,遵守參照完整性規(guī)則;根據(jù)范式理論,對表進行修改,盡量滿足第三范式。

通過規(guī)范化數(shù)據(jù)庫設計,可以減少存儲的冗余數(shù)據(jù)量,減輕數(shù)據(jù)維護工作,減少存儲的要求,提高數(shù)據(jù)庫的完整性。

物理實現(xiàn)階段的主要工作是,把設計好的數(shù)據(jù)庫全局模式轉(zhuǎn)換為相應的內(nèi)模式。在此用以上方法建立一個名稱為“學生成績管理”的數(shù)據(jù)庫,其中包含3張數(shù)據(jù)表,即學生情況表、課程情況表、學生成績表。

二、操縱和訪問數(shù)據(jù)庫的基本SQL語句

SQL是關系數(shù)據(jù)庫支持的標準查詢語言,也是一種雙重式語言,即用于查詢和更新的交互式數(shù)據(jù)庫語言(Interactive SQL),又是一種應用程序進行數(shù)據(jù)庫訪問時所采取的編程式數(shù)據(jù)庫語言,即嵌入式SQL(Embedded SQL)[1]。嵌入式SQL是數(shù)據(jù)庫應用程序的一種開發(fā)方法。它要將SQL語句直接嵌入到程序的源代碼中,與其他程序設計語言語句混合使用。

開發(fā)的應用程序?qū)⑨槍ι鲜鰯?shù)據(jù)庫進行管理,主要有插入(insert)、修改(update)、刪除(delete)、查詢(select)和打?。╬rint)等5種基本的操作。

三、界面設計

(一)創(chuàng)建項目工程

項目工程名稱為“學生成績管理”。

(二)創(chuàng)建主窗體

運用菜單技術創(chuàng)建主窗體。

(三)創(chuàng)建增加、刪除、修改、查詢功能窗體

使用標簽、文本框、組合框、表格、命令按鈕等控件,添加并創(chuàng)建“查詢記錄”、“增加新記錄”、“修改記錄”、“刪除記錄”等窗體。

四、代碼設計

.NET框架的一個主要組成部分是類庫,這些類被拆分為命名空間,它是類庫的邏輯分區(qū)。類庫所采用的命名空間是層次結(jié)構(gòu),即命名空間下又可以再分成子命名空間,每個命名空間都包含一組按照功能劃分的相關的類。

在.NET環(huán)境下,必須指向包含所使用類的命名空間(例如Imports System.Data,Imports System.Data.SqlClient)才能激活相應的類;借助于封裝,把常用的數(shù)據(jù)連接、數(shù)據(jù)庫查詢和對數(shù)據(jù)庫操縱的功能模塊定義為公共函數(shù),包括createConn()用于建立數(shù)據(jù)庫連接的函數(shù),sqlUpdate()用于對數(shù)據(jù)庫操縱的函數(shù),sqlfind()用于數(shù)據(jù)庫查詢的函數(shù);使用時調(diào)用即可,避免相同功能模塊的重復建設。針對該系統(tǒng),筆者創(chuàng)建了SqlConnection、SqlCommand公共類的實例和系統(tǒng)常用的公共函數(shù)。

在不同模塊的設計中都可以調(diào)用這些自定義函數(shù),在此不再贅述。

五、報表設計

一個功能完整的數(shù)據(jù)庫應用系統(tǒng),除了具有數(shù)據(jù)維護、查詢和顯示功能外,還必須具有報表輸出功能。Visual Studio2005報表體系結(jié)構(gòu)圖],其ReportViewer控件負責解釋RDLC報表定義、處理報表參數(shù)并按照各種用戶可選格式提供報表的“報表處理器”。它既可以運行于“本地模式”也可以運行于“遠程模式”[2]。由用戶編寫的存儲過程負責管理連接或運行基于參數(shù)的查詢;報表只駐留以報表為中心的Parameters集合,尋址遠程報表服務并呈現(xiàn)給用戶。

六、幾種實現(xiàn)方法的比較

嵌入式SQL在VB6.0下和在下使用的基本形式和處理過程對比如下:

(一)在VB6.0環(huán)境下的具體實現(xiàn)

ADO是微軟公司提出的第三種數(shù)據(jù)庫訪問對象,它把OLE DB封裝在一個數(shù)據(jù)對象中,使得VB6.0程序可以方便地實現(xiàn)對數(shù)據(jù)庫的訪問。ADO對象模型共包含7個對象,即Connection,command,Recordset,Parameter,Property,F(xiàn)ield和Error。

VB6.0應用程序中主要用Connection對象建立與數(shù)據(jù)庫的連接,用Recordset和Field對象,對數(shù)據(jù)表進行操作,實現(xiàn)數(shù)據(jù)表增加、刪除、修改等不返回結(jié)果集的操作,語法參閱文獻[1]。

(二)在環(huán)境下的具體實現(xiàn)

是微軟.NET Framework框架中針對與數(shù)據(jù)庫進行交互的一組對象類的名稱[3]。提供對Microsoft SQL Server、Oracle等數(shù)據(jù)源以及通過 OLEDB和XML公開的數(shù)據(jù)源的一致訪問,也就是提供與數(shù)據(jù)源進行交互的相關的公共方法。應用程序可以使用來連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。

比ADO更適用于分布式應用環(huán)境,增加了更好的性能;它有更好的可操作性、它可以結(jié)合XML語言來開發(fā)數(shù)據(jù)庫;它有更好的可維護性、可編程性和可伸縮性。

對象模型中包含五個主要的組件,即是Connection對象、Command對象、 Dataadapter對象、Datareader對象以及Dataset對象。架構(gòu)圖參見[3]。

其中Connection對象、Command對象、 DataAdapter對象和DataReader對象四個組件是負責建立聯(lián)機與數(shù)據(jù)操作部分的,被稱為數(shù)據(jù)提供組件 (Managed Providers)。而Dataset對象是非連接架構(gòu)下把數(shù)據(jù)庫中的數(shù)據(jù)映射到內(nèi)存緩存中所構(gòu)成的數(shù)據(jù)容器,是一個或多個DataTable 對象的集合。DataSet在使用時就像駐留在客戶端計算機上的一個小型關系數(shù)據(jù)庫,但又與任何具體的數(shù)據(jù)庫完全無關。DataAdapter對象在后臺數(shù)據(jù)庫和前臺Dataset對象之間起著橋梁作用。其Fill方法將后臺數(shù)據(jù)庫的數(shù)據(jù)取到前臺客戶端的Dataset對象中來。而其Update方法則按相反方向把前臺對數(shù)據(jù)庫的寫操作寫入數(shù)據(jù)庫中去,它由應用程序在Dataset中添加、更改或刪除的行對數(shù)據(jù)庫進行更新,在使用DataAdapter時,需要將查出的數(shù)據(jù)起一個表名放到DataSet中。一個Dataset可以存放多個表,而TableAdapter的結(jié)果就是一個表,不能再繼續(xù)添加表。

DataReader實現(xiàn)數(shù)據(jù)操作以及對數(shù)據(jù)的快速、只進、只讀訪問。Connection對象提供與數(shù)據(jù)源的連接。Command對象能夠訪問用于返回數(shù)據(jù)、修改數(shù)據(jù)、運行存儲過程、發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。DataReader從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。它需要與數(shù)據(jù)庫保持連接,ExecuteReader()函數(shù)返回一個SqlDataReader對象或OleDbDataReader對象,通過這個對象來檢查查詢結(jié)果,它是一種“單向”流,一次只能提供一行數(shù)據(jù),就像高速傳送帶上的一排箱子,一旦它們被放在帶子上,就無法對它們排序或過濾出選定的箱子,也因此占用內(nèi)存少,執(zhí)行效率高。當用戶讀取大量數(shù)據(jù)時,可以使用DataReader來提高性能。

根據(jù)應用程序所需功能和性能的要求,來確定是使用DataSet還是DataReader。

嵌入式SQL在環(huán)境下通過SqlCommand.ExecuteNonQuery()方法,對連接執(zhí)行SQL語句,并返回受影響的行數(shù),當行數(shù)大于0時,命令執(zhí)行成功,否則說明對數(shù)據(jù)庫沒產(chǎn)生影響。通過使用SqlCommand.ExecuteScalar()方法來執(zhí)行命令對象的SQL語句,從數(shù)據(jù)庫中檢索單個值,當值大于0時,命令執(zhí)行成功,否則命令執(zhí)行失敗。該方法不接受任何參數(shù),僅僅返回查詢結(jié)果集中的第一行第一列。

在環(huán)境下通過調(diào)用以上定義的函數(shù),就可以實現(xiàn)使用各種嵌入式SQL語句來操縱后臺數(shù)據(jù)庫的功能。

(三)C#語言環(huán)境下的設計實現(xiàn)

由于C#簡單易學,而且可以跨平臺使用,因此它正在成為程序開發(fā)人員使用的主流編程語言。[4] 它具有如下諸多優(yōu)點:

C#遵守通用語言規(guī)范(common language specification,CLS)。

C#具備自動內(nèi)存管理功能:CLR 內(nèi)建垃圾收集器,當變量實例的生命周期結(jié)束時,垃圾收集器負責收回不被使用的實例占用的內(nèi)存空間。

C#具有交叉語言處理能力:由于任何遵守通用語言規(guī)范的程序設計語言源程序,都可編譯為相同的中間語言代碼,不同語言設計的組件,可以互相通用,可以從其他語言定義的類派生出語言的新類。

C#更加安全:C#語言不支持指針,一切對內(nèi)存的訪問都必須通過對象的引用變量來實現(xiàn),只允許訪問內(nèi)存中允許訪問的部分,這就防止病毒程序使用非法指針訪問私有成員,也避免指針的誤操作產(chǎn)生的錯誤。

C#軟件的安裝更加容易:在.NET 中這些組件或動態(tài)連接庫不必在注冊表中注冊,每個程序都可以使用自帶的組件或動態(tài)連接庫,使軟件的安裝更加容易。

C#是完全面向?qū)ο蟮模篊#語言中所有的函數(shù)、變量和常量都必須定義在類中,避免了命名沖突。C#語言不支持多重繼承。

在開發(fā)項目中以類的形式來組織、封裝一些常用的方法和事件,不僅可以提高代碼的重用率,也大大方便了代碼的管理。

本系統(tǒng)中using System.Data.SqlClient命名空間包含有關專門操作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)建這些類的實例設計完成系統(tǒng)主窗體和系統(tǒng)的增、刪、改、查詢功能。

七、結(jié)論

(一)在不同高級語言環(huán)境下創(chuàng)建應用程序的過程都一樣。

(二)在不同環(huán)境下使用的SQL語句都完全一樣,可以實現(xiàn)同樣的數(shù)據(jù)庫操縱功能。

(三)在VB6.0環(huán)境下編寫的應用程序,搬到.NET環(huán)境下不能使用。

(四)NET開發(fā)平臺具有更加強大的內(nèi)部函數(shù)庫,.NET編程很大程度上依靠程序庫中提供的可重用源代碼,.NET框架提供了2500多個可重用的類。公共語言運行時庫(CLR)提供了執(zhí)行程序的服務,實現(xiàn)了編程語言的統(tǒng)一。.NET程序需要經(jīng)過兩次編譯才能在CPU上運行,首先編譯生成與CPU無關的中間語言(MSIL)程序,在CLR的支持下,中間語言程序被編譯成由本地CPU指令組成的程序,實現(xiàn)了.NET跨平臺運行的目標。[5]

(五)NET采用數(shù)據(jù)訪問技術,支持離線的數(shù)據(jù)訪問功能,同時提供了只進的、一次只能讀取一條記錄的消耗資源極小的DataReader對象,提高了應用程序?qū)?shù)據(jù)庫訪問的性能。更適用于分布式數(shù)據(jù)庫應用系統(tǒng)的應用。

(六)和C#生成的代碼可以完全通用。VB提供了很多類型轉(zhuǎn)換函數(shù)型運算符,如CInt(), CSng(), CStr()等,在C#中只要用(int) , (float), (String)即可; VB支持兩種形式的異常,即.net框架的異常和VB自己的錯誤號碼,而C#只支持第一種。用到VB自己的錯誤號碼的程序幾乎無法移植到C#中。

(七)VB支持模塊,C#不支持。在C#中制造一個abstract類,共享所有成員,就和模塊一樣了。C#不能像VB一樣直接訪問模塊中的成員,需要使用“類名.成員名”的用法。

(八)C#代碼更加簡潔,像一樣簡單,像C++一樣強大, 是第一流的面向組件的語言。C#語言是.NETFrame Work 中新一代的開發(fā)工具,是一種現(xiàn)代的、面向?qū)ο蟮恼Z言,它簡化了C++語言在類、命名空間、方法重載和異常處理等方面的操作,摒棄了 C++的復雜性,更易使用,更少出錯。它使用組件編程,和VB一樣容易使用。C#語法和 C++、JAVA 語法非常相似。所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫。

參考文獻:

[1]劉世峰.數(shù)據(jù)庫應用技術(本科)[M].中央廣播電視大學出版社,2008,103

[2]顧曉梅.數(shù)據(jù)庫應用技術教程[M],上海電視大學教材, 2010, 171

[3]呂軍.軟件項目綜合實訓(.NET篇)[M],清華大學出版社,2010,96~97

篇4

[關鍵詞]關系數(shù)據(jù)庫SQL查詢對策

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)1210080-01

在各類大型應用軟件的數(shù)據(jù)庫中,都存在大量的數(shù)據(jù)信息和記錄,經(jīng)常要對它們進行各種數(shù)據(jù)操作。SQL(Structrued Query Language)作為結(jié)構(gòu)化查詢語言,是大型計算機操作關系數(shù)據(jù)庫的標準查詢語言,同時也廣泛地應用到小型計算機的數(shù)據(jù)庫管理系統(tǒng)中。它是一種高度非過程化的語言,即只要用戶按其語法規(guī)則寫出符合操作要求的語句,而并不需要告訴系統(tǒng)應如何執(zhí)行SQL語句,就可得到所要求的結(jié)果。隨著數(shù)據(jù)庫技術的廣泛應用,在數(shù)據(jù)庫程序的開發(fā)過程中,大量的工作是要進行數(shù)據(jù)查詢和檢索處理。本文從SQL查詢語句執(zhí)行的過程入手,對其執(zhí)行效率進行分析,并給出參考性建議和優(yōu)化策略。

一、SQL語句執(zhí)行過程解析

在平時書寫SQL查詢語句時,雖然每個人的寫法不盡相同,而且有時個別子句順序并不影響操作結(jié)果,但是在各種數(shù)據(jù)庫管理系統(tǒng)中,標準的SQL的解析順序為:

1.FROM子句,組裝來自不同數(shù)據(jù)源的數(shù)據(jù);

2.WHERE子句,基于指定的條件對記錄進行篩選;

3.GROUP BY子句,將數(shù)據(jù)劃分為多個分組;

4.使用聚合函數(shù)進行計算;

5.使用HAVING子句篩選分組;

6.計算所有的表達式;

7.使用ORDER BY對結(jié)果集進行排序。

通過以上SQL語句的解析過程,我們可以對SQL查詢語句進行優(yōu)化處理。SQL查詢語句的核心結(jié)構(gòu)是SELECT…FROM…WHERE,了解了這個基本結(jié)構(gòu),我們可以從以下幾個方面對其進行優(yōu)化處理。

二、效率分析及優(yōu)化對策

(一)從From子句入手

From子句后面接單表或者多表,通常情況下接受來自不同數(shù)據(jù)源的多表。如果是單表,一般情況下對表進行快速全表掃描。如果是多表的情況,查詢設計優(yōu)化器將采取自右向左的順序依次讀取數(shù)據(jù)表。如以下語句:“From table1,table2,table3”,優(yōu)化器將優(yōu)先讀取table3表,然后是table2表,最后是table1表。在進行From子句的多表連接時,就需要結(jié)合條件子句WHERE進行分析,需要遵循下面的規(guī)則:1. 當WHERE后面接的條件能夠一次性過濾某個表的大量記錄時,應優(yōu)先處理該表。2. 如果WHERE后面接的條件不能過濾掉大量記錄時應該優(yōu)先考慮處理記錄數(shù)最少或者索引關鍵值最少的表。

(二)從條件子句WHERE入手

WHERE子句后面通常接過濾條件,對表的記錄進行篩選,篩選出符合條件的記錄。如果SELECT查詢語句沒有WHERE子句,則無須對表記錄進行過濾。若后面接單個表,則通常順序掃描全表。若后接多表或者大量記錄表時,則可以考慮用索引來減少查詢的時間。所以在查詢前可對各個表建立比較的索引。對WHERE子句中出現(xiàn)的條件,可以依據(jù)以下原則首先來驅(qū)動查詢。

(1)建立索引字段的列比沒有建立索引的要快;(2)主索引要比普通索引快;(3)單索引要比符合索引快;(4)有條件約束要比沒有條件約束要快。

此外,WHERE子句通常采用自下而上的順序解析WHERE子句,根據(jù)這個原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾。根據(jù)以上原則,我們可以判斷出以下四個語句中哪個選項語句效率最高。

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選項效率最高。

(三)從GROUP BY和HAVING子句入手

在SELECT語句中,GROUP BY語句的作用是對記錄進行分組(劃分成較小的組),使用聚合函數(shù)返回每一個組的匯總信息,而HAVING子句限制返回的結(jié)果集。在一個SQL語句中可以有WHERE子句和HAVING子句。HAVING與WHERE子句類似,均用于設置限定條件。WHERE子句的作用是在對查詢結(jié)果進行分組前,將不符合WHERE條件的記錄過濾掉,而HAVING子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),但它不能單獨使用,只能配合GROUP By語句使用,該條件中經(jīng)常包含聚組函數(shù),使用HAVING條件顯示特定的組,也可以使用多個分組標準進行分組。雖然HAVING子句可以起到過濾的作用,但是要盡量避免使用HAVING子句,HAVING只會在檢索出所有記錄之后才對結(jié)果集進行過濾。這個處理需要排序,總計等操作。如果能通過WHERE子句限制記錄的數(shù)目,而且能盡早地把不滿足條件的記錄過濾掉,那就能減少這方面的開銷。

(四)從謂詞等方面入手

在SELECT語句中,由于實際需要,查詢語句會經(jīng)常出現(xiàn)謂詞。常用的謂詞有EXIST,NOT EXSIT,IN,NOT IN等,巧用謂詞也會提高SQL語句的執(zhí)行效率,可參考以下原則編寫SQL語句。

1.Where子句中盡量不要使用IS NULL或IS NOT NULL的語句,因為它們不會使用索引。

2.WHERE子句盡量不要將通配符(%)放在搜尋詞首出現(xiàn),通配符(%)在搜尋詞首出現(xiàn)不會使用索引。

3.用EXISTS代替IN。在許多基于基礎表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯(lián)接。在這種情況下,使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。

4.用表連接代替EXISTS。通常來說,采用表連接的方式比EXISTS更有效率。

5.用EXISTS代替DISTINCT。當提交一個包含一對多表信息(比如班級表和學生表)的查詢時,避免在SELECT子句中使用DISTINCT。一般可以考慮用EXIST替換。

6.WHERE子句盡量少使用NOT或是,應該成OR來實行,使用OR時應該把結(jié)果集小的條件放在前面。

7.UNION改用UNION ALL,UNION要對合并的結(jié)果進行排序,UNION ALL不排序。

8.ORDER BY子句中盡量不要使用非索引列。

三、結(jié)語

通過對SQL查詢語句執(zhí)行過程的分析,可以從以上幾個方面對其進行優(yōu)化改進,從而提高了數(shù)據(jù)庫查詢和檢索的效率。當然,具體的查詢語句還要根據(jù)具體需要,并結(jié)合具體的數(shù)據(jù)庫系統(tǒng)而定。只有多總結(jié)多積累才能寫出高質(zhì)量高效率的查詢語句,當然這只是提高數(shù)據(jù)檢索的一個方面,在其他方面的設計也要進行優(yōu)化,如對表建立必要的索引,減少表之間的連接,或盡量在索引屬性列上建立連接等??傊?通過以上幾個方面的綜合優(yōu)化,一定會使數(shù)據(jù)庫查詢與檢索效率有很大的提高。

參考文獻:

[1]王振輝、吳廣茂,SQL查詢語句優(yōu)化研究[J].計算機應用,2005,25(12).

[2]徐鳳梅,關系數(shù)據(jù)庫中SQL查詢語言的優(yōu)化策略[J].廣西輕工業(yè),2009,126(5).

[3]鄧文艷,基于關系數(shù)據(jù)庫的查詢優(yōu)化技術[J].太原科技,2007(12).

[4]楊克昌,Visual FoxPro程序設計教程[M].長沙:湖南科學技術出版社,2004.

[5]李瑩、代勤,關系代數(shù)運算與SQL查詢的對應關系[J].內(nèi)蒙古農(nóng)業(yè)大學學報(自然科學版),2003,24(3).

篇5

【關鍵詞】Mysql數(shù)據(jù)庫 圖書管理 系統(tǒng)安全 研究

SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標準化的數(shù)據(jù)庫語言。Mysql可以說是目前最為流行的開源數(shù)據(jù)庫管理系統(tǒng)軟件,是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務器。Mysql開放源碼,快捷靈活、穩(wěn)定和容易使用等優(yōu)點決定了其在中小型管理系統(tǒng)應用的優(yōu)勢。本文以基于Mysql網(wǎng)絡數(shù)據(jù)庫的圖書管理系統(tǒng)為例,從安全穩(wěn)定性要求和采取的安全策略等方面進行分析研究。

1 Mysql在信息管理系統(tǒng)的應用與優(yōu)勢

1.1 Mysql的基本特性與應用

Mysql與其他大型數(shù)據(jù)庫Oracle、DB2、SQL Server等相比,有自身的不足之處,但是沒有影響到Mysql在信息管理系統(tǒng)的應用。在個人或者是中小型的企業(yè),Mysql發(fā)揮了自身的優(yōu)勢與作用。Mysql開放源碼,具有快捷靈活、穩(wěn)定和容易使用等優(yōu)點,并有效的提供了PHP、C,C++,JAVA和HTML等主流前端開發(fā)軟件的API接口。支持多種操作系統(tǒng)包括Windows 、Linux 、Solaris、Mas OS等。目前,搭建動態(tài)網(wǎng)站或者服務器的開源軟件組合有典型的網(wǎng)絡架構(gòu)LAMP,極大地方便了開發(fā)者。Mysql應用非常廣泛,Google、facebook、等使用Mysql作為網(wǎng)絡數(shù)據(jù)庫。

1.2 Mysql應用于圖書管理系統(tǒng)的優(yōu)勢

Mysql應用于圖書管理系統(tǒng)的優(yōu)勢主要分為三個方面,一是免費開源優(yōu)勢,如果再使用linux操作系統(tǒng),可以減少購買操作系統(tǒng)和數(shù)據(jù)庫的開銷。二是多種平臺支持的優(yōu)勢,Mysql可以與多個平臺進行有效的連接,實現(xiàn)信息資源的共享。三是中小型數(shù)據(jù)庫靈活穩(wěn)定的優(yōu)勢,在設計Mysql程序的時候,加入了SQL中沒有的一些補充條件,更加的適用于在中小型數(shù)據(jù)庫中使用。圖書管理系統(tǒng)通常要保存用戶信息、圖書信息和借閱信息,以及建立相關的書籍查詢等,數(shù)據(jù)倉庫并不是很龐大,因此,使用Mysql來管理數(shù)據(jù)非常合適。

2 基于Mysql的圖書管理系統(tǒng)安全穩(wěn)定性分析

高校圖書管理系統(tǒng)是基于互聯(lián)網(wǎng)的網(wǎng)絡數(shù)據(jù)庫,通常采用B/S的體系結(jié)構(gòu),因此,在瀏覽器層、Web 服務器層、數(shù)據(jù)庫服務器層都會存在安全性要求,以及在操作系統(tǒng)、網(wǎng)絡技術等方面的安全問題。只有控制好圖書管理系統(tǒng)的安全問題,才能保證信息資源的有效共享。

基于網(wǎng)絡數(shù)據(jù)庫的圖書管理系統(tǒng)的安全穩(wěn)定性具有以下幾個特點:

(1)較高的穩(wěn)定性,包括操作系統(tǒng)的穩(wěn)定性和數(shù)據(jù)庫系統(tǒng)的穩(wěn)定性,要保持Mysql數(shù)據(jù)庫的正常運行軌跡。

(2)數(shù)據(jù)的保密性能,對客戶信息、訪問瀏覽量、客戶端等進行有效的保密。

(3)運行的速度很快,包括瀏覽器端、數(shù)據(jù)庫服務器端的訪問速度,以保證數(shù)據(jù)信息在查找、修改等方面的快速反應。

(4)數(shù)據(jù)的備份與數(shù)據(jù)的恢復功能。數(shù)據(jù)庫服務器中,包括圖書信息、借閱圖書記錄、客戶賬號等在內(nèi)的相關數(shù)據(jù)的安全問題,是保證圖書管理系統(tǒng)正常運轉(zhuǎn)的重要因素。要采取嚴格的防范措施,同時,當發(fā)生數(shù)據(jù)故障的時候,要在最短的時間內(nèi)恢復數(shù)據(jù)與系統(tǒng)。

3 基于Mysql的圖書管理系統(tǒng)安全穩(wěn)定性策略

圖書管理系統(tǒng)通常采用三層B/S結(jié)構(gòu)模式,即用戶層、Wed服務器層和數(shù)據(jù)庫層。圖書管理系統(tǒng)要注意提高數(shù)據(jù)庫安全、操作系統(tǒng)安全和網(wǎng)絡安全技術等方面的安全策略。

3.1 優(yōu)化數(shù)據(jù)庫設計

比如,在遵循關系模式規(guī)范化的基礎上,優(yōu)化表設計適當增加中間表或增加冗余字段以減少連接查詢所花的時間,優(yōu)化JOIN操作和子查詢盡量使用全連接避免產(chǎn)生中間表,盡量避免LIKE 關鍵字和通配符進行查詢。另外,還可以修改my.ini文件,對相關參數(shù)如sort_buffer_size 、read_buffer_size 、query_cache_size、max_connections等,設置合適的緩沖區(qū)大小和MySQL允許的最大連接進程數(shù),以優(yōu)化服務器提高系統(tǒng)性能,提高保證圖書信息資源查詢效率。

3.2 數(shù)據(jù)容災與備份機制

要定期地進行數(shù)據(jù)備份,保護圖書書目數(shù)據(jù)、流通數(shù)據(jù)、客戶信息等。定期的進行數(shù)據(jù)庫的重組工作,增強數(shù)據(jù)庫的使用性能。用好MYSQL的容災與備份機制,比如:建立主從數(shù)據(jù)庫集群,采用 MySQL 復制;制定數(shù)據(jù)庫備份/恢復計劃;啟動數(shù)據(jù)庫服務器的二進制變更日志;定期檢查數(shù)據(jù)表;定期對備份文件進行備份;把 MySQL 的數(shù)據(jù)目錄和備份文件分別放到兩個不同的驅(qū)動器中,等等。

3.3 帳戶安全策略

可以從賬戶安全檢查、系統(tǒng)內(nèi)部安全措施、哈希加密等方面著手進行。比如,檢查用戶表mysql.user是否有匿名空賬號(user=‘’ ),如有應將其刪除。使用哈希加密帳戶密碼。加強客戶的登錄認證,尤其是服務器主機的登錄認證。在主數(shù)據(jù)庫創(chuàng)建從數(shù)據(jù)庫操作所用的用戶,并指定使用SLL 認證等等。

3.4 網(wǎng)絡安全和操作系統(tǒng)安全策略

在網(wǎng)絡安全策略方面,利用NAT技術,有效的防止發(fā)生來自網(wǎng)絡外部的攻擊現(xiàn)象,將局域網(wǎng)絡內(nèi)部的計算機系統(tǒng)進行隱蔽。正確設置計算機操作系統(tǒng),確??蛻羰褂谜鎸嵣矸荩卿浘哂泻戏ㄐ?。此外,還可以設置系統(tǒng)的實時監(jiān)控,優(yōu)化網(wǎng)絡防火墻、文件加密以及殺毒軟件技術的升級,等等。

4 結(jié)語

綜上所述,要確?;贛ysql在圖書館管理系統(tǒng)的安全穩(wěn)定性能,要考慮很多種因素的影響,在數(shù)據(jù)庫設計、數(shù)據(jù)庫服務器、數(shù)據(jù)容災與備份、帳戶安全,以及計算機網(wǎng)絡、操作系統(tǒng)等方面進行優(yōu)化配置。圖書管理系統(tǒng)的安全與穩(wěn)定性能保證了信息數(shù)據(jù)的安全、穩(wěn)定性與高效,保證了客戶在不同的時間、地點、平臺中有效的使用圖書館的資源信息共享。

參考文獻

[1]晉征.論基于網(wǎng)絡數(shù)據(jù)庫的圖書館管理系統(tǒng)安全性研究與實現(xiàn)[J].網(wǎng)絡安全技術與應用,2015(3):27-29.

[2]陽學軍.基于網(wǎng)絡和人工智能的圖書館信息管理系統(tǒng)研究[J].岳陽職業(yè)技術學院學報,2005(3):59-61.

[3]林愛鮮.基于神經(jīng)網(wǎng)絡的圖書館管理系統(tǒng)的構(gòu)建研究[J].電腦與電信,2012(4):48-50.

[4]田華.圖書館分布式數(shù)據(jù)庫安全技術研究[J].現(xiàn)代情報,2007(4):161-163

篇6

數(shù)據(jù)庫技術發(fā)展至今已有40多年的歷史,它作為數(shù)據(jù)管理的有效手段,大大促進了計算機應用技術的發(fā)展。從早期的文件系統(tǒng)到層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫,從關系數(shù)據(jù)庫到面向?qū)ο髷?shù)據(jù)庫,以及面向不同應用的時態(tài)數(shù)據(jù)庫、演繹數(shù)據(jù)庫等等,均向人們展示了數(shù)據(jù)庫技術的廣闊應用前景[2]。關系數(shù)據(jù)庫,顧名思義是建立在關系數(shù)據(jù)庫模型基礎上的數(shù)據(jù)庫,借助于集合代數(shù)、離散數(shù)學等概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。關系數(shù)據(jù)庫是一個被組織成一組擁有正規(guī)描述的表格,該形式表格作用的實質(zhì)是裝載著數(shù)據(jù)項的特殊收集體。這些表格中的數(shù)據(jù)以許多不同的方式被存取或重新召集而不需要重新組織數(shù)據(jù)庫表格[3]。除了相對容易創(chuàng)建和存取之外,關系數(shù)據(jù)庫具有容易擴充的優(yōu)勢。在最初數(shù)據(jù)庫創(chuàng)造之后,一個新的數(shù)據(jù)種類能被添加而不需要修改所有的現(xiàn)有應用軟件。目前主流的關系數(shù)據(jù)庫有Oracle、SQL、Aceess、DB2、MySQL、SQLServer、Sybase等等[4]。根據(jù)本校辦學規(guī)模和處理信息量,采用ACEESS作為本系統(tǒng)數(shù)據(jù)庫的管理工具。

2數(shù)據(jù)庫模型建立

2.1應用需求抽象

根據(jù)學員信息管理的具體任務,按照管理功能進行業(yè)務劃分和模塊化設計。按照簡單性、獨立性及完整性原則,學員信息管理系統(tǒng)后臺可以分為以下幾個子系統(tǒng):即學員檔案管理子系統(tǒng)、課程管理子系統(tǒng)、成績管理子系統(tǒng)、中隊管理子系統(tǒng)、管理統(tǒng)計子系統(tǒng)、系統(tǒng)管理子系統(tǒng)、系統(tǒng)維護子系統(tǒng)。(1)學員檔案管理子系統(tǒng)學員檔案管理主要有學員管理、批量學員添加、按中隊批量學員添加等功能。(2)課程管理子系統(tǒng)課程管理子系統(tǒng)主要有課程管理、批量課程添加、任課管理、任課添加等功能。(3)成績管理子系統(tǒng)成績管理子系統(tǒng)完成成績管理、批量成績添加、按中隊成績添加功能。(4)中隊管理子系統(tǒng)中隊管理子系統(tǒng)完成中隊管理、中隊批量添加兩個子模塊功能。(5)管理統(tǒng)計子系統(tǒng)管理統(tǒng)計子系統(tǒng)顯示學?;拘畔?包括年級數(shù)、中隊數(shù)、學員數(shù)、教師數(shù)、課程數(shù)、用戶瀏覽統(tǒng)計等相關信息,還可完成學員統(tǒng)計、排名統(tǒng)計功能。(6)系統(tǒng)管理子系統(tǒng)系統(tǒng)管理子系統(tǒng)包括修改管理員密碼、帳號管理、干部管理、年級管理、學期管理功能。(7)系統(tǒng)維護子系統(tǒng)系統(tǒng)維護子系統(tǒng)主要完成系統(tǒng)的相關設置功能,包括站點名稱,站點LOGO設置,網(wǎng)站主體表格屬性設置,年級變遷(這里主要是對年級進行批量升級操作,也可以在中隊管理下單個進行升級)。

2.2數(shù)據(jù)庫表關系建立

關系數(shù)據(jù)庫模式的建立,離不開數(shù)據(jù)表之間關系的建立,只有建立表之間的關系,整個數(shù)據(jù)庫才能形成一個系統(tǒng),提供強大的信息存儲、查詢、和處理功能[5]。對比應用需求說明和現(xiàn)實學校各部門的業(yè)務流程,設計數(shù)據(jù)庫表之間的關系如圖1所示。(1)學員和評語之間存在一對多的對應關系,即一個學員可以有多條來自不同老師的評語;學員和家長存在一對多的對應關系,即一個學員可以對應一個家長,方便家長對學員相關信息進行查詢。學員和平時成績存在一對多的對應關系,即一個學員可以有多種平時成績;同時,學員還和中隊有多對一對應關系,即一個中隊可以有多個學員。(2)中隊和成績有一對多的對應關系,即一個中隊可以有多條成績;中隊和年級有一對一的對應關系,即一個中隊屬于一個年級。中隊和大隊有一對一的對應關系,即一個中隊屬于一個大隊,中隊和任課信息有一對多的對應關系即一個中隊有多條任課關系與之對應。大隊和中隊有一對多的對應關系,即一個大隊對應多個中隊。(3)任課信息表中的教師ID和教師信息表中ID存在一一對應關系。教師表中ID和任課教師信息表中的ID存在一對多的關系。即一個教師可以有多個任課關系。任課教師表中的課程ID和課程表中的課程ID存在一一對應關系。任課信息表中的學期和學期ID存在一一對應關系。即一個任課信息對應一個學期。成績表中的課程ID和課程信息表中的ID存在一一對應關系,成績表中的學期ID和學期表中的學期ID存在一一對應關系。

2.3數(shù)據(jù)庫模式設計

2.3.1關系數(shù)據(jù)庫設計中存在問題

(1)數(shù)據(jù)冗余:在一個數(shù)據(jù)集合中重復的數(shù)據(jù)稱為數(shù)據(jù)冗余。例如在設計時沒有把教師信息表Teacher和任課信息表tea_sub分開,那么每存儲一條任課信息tea_sub(tsid、ts_tea_user、ts_sub_id、ts_ter_id、ts_cla_id)教師表中的其他信息也要重復存儲[4]。(2)更新異常:更新異常分為插入異常和刪除異常。插入異常:比如學員信息表student,如果不知道學號,那么插入再多的其他信息都是沒有意義的。例如一個剛?cè)肼毜慕處熇硭斎灰谌握n信息表中有其相關數(shù)據(jù),但此時他還沒有任課,即他對應的元組是不完全的,只有而沒有,不能將他的信息放到數(shù)據(jù)庫中。因此無法注冊該教師的任課信息,這與實際需求不符。這樣的操作是不合理的,將這種現(xiàn)象稱為插入異常。刪除異常:例如在沒分解的教師信息表中的任課信息中,相應的任課關系解除。那么刪除整條記錄,該教師的其他信息也被刪除,在查詢的時候無法查閱該教師相關信息,這也與實際需求相悖,將這種現(xiàn)象稱為刪除異常。數(shù)據(jù)庫的性能優(yōu)化包括硬件優(yōu)化,查詢優(yōu)化和設計優(yōu)化三個方面。本文著重介紹設計優(yōu)化即模式優(yōu)化,模式優(yōu)化重點解決數(shù)據(jù)冗余和更新異常問題。

2.3.2數(shù)據(jù)庫模式的規(guī)范化

在對數(shù)據(jù)庫進行模式設計時,對關系的分解并不是盲目的,分解的目的在于減少關系模式的規(guī)模,避免不必要的存儲及操作的冗余和數(shù)據(jù)更新異常。為了清除異常,需要對關系模式進行合理地分解。為此,人們設計數(shù)據(jù)庫設計的規(guī)范化理論,以便能夠設計出異常盡可能少的數(shù)據(jù)庫模式[4]。據(jù)參考文獻[4]所述,數(shù)據(jù)庫模式分為6級,具體的定義見參考書目。分別是1NF:是關系數(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的學員信息表分解,在學員信息表中每一個屬性都該是原子屬性,故對部職別進行分解。由消防部隊的編制特點,每個省、自治區(qū)、直轄市均有相應的消防總隊;每個地級市、自治州、區(qū)都有相應的消防支隊。學校學員來自五湖四海,故對學員信息表中的部職別屬性進行分解。由于有的學員來自總隊和支隊機關,故把部職別分為總隊和部職別兩個屬性,即分解為,province為province表中的省份ID??傟牨碓O計為province(pid、pname)。在學員信息表中只要存儲省份ID就行。不用再存儲省份名。最長總隊名新疆維吾爾族自治區(qū)消防總隊所占字節(jié)為26Btye,所占ID為2Byte。按新疆總隊有學員121名計算,模式分解前學員原部別信息中存儲總隊信息需用26Btye×121=3164Byte;而模式分解后存儲ID信息占用2Btye×121=242Byte。(2)滿足BCNF的教師信息表分解,在2.4.1節(jié)數(shù)據(jù)庫設計存在問題中提到數(shù)據(jù)冗余和刪除異常,在沒分解的教師信息表的任課信息中,相應的任課關系解除。那么刪除整條記錄,該教師的其他信息也被刪除,在查詢的時候無法查閱該教師相關信息,這也與實際需求相悖。要解決刪除異常,即把教師信息表Teacher分解為教師基本信息表teacher和任課教師信息表tea_sub(tsid、ts_tea_user、ts_sub_id、ts_ter_id、ts_cla_id)。這樣的分解既解決了數(shù)據(jù)冗余的問題,也解決了刪除異常的問題。分解后Teacher和tea_sub關系模式都是1NF,且在其中不存在這樣的屬性A,A傳遞依賴與Teacher和tea_sub的碼、由于關系模式Teacher={R1,R2…,Rn}和tea_sub={R1,R2…,Rn}中Ri(i=1,2,…,n)為BC范式,則關系模式Teacher和tea_sub也滿足BCNF。數(shù)據(jù)庫的規(guī)范化設計還有很多,根據(jù)系統(tǒng)應用需求的變更和數(shù)據(jù)規(guī)模的遞增,需要設計相應的數(shù)據(jù)模式來優(yōu)化昆明消防指揮學校學員綜合信息管理系統(tǒng)的數(shù)據(jù)庫性能,使之滿足應用需求,更好地為學校教師、學員和管理人員提供便捷的信息化服務。

篇7

關鍵詞 分布式異構(gòu)數(shù)據(jù)庫;高校;數(shù)字圖書館

中圖分類號:G258.6 文獻標識碼:B

文章編號:1671-489X(2015)11-0078-02

在我國高校數(shù)字圖書館的建設過程中,由于各個數(shù)字圖書館在建設的過程中缺乏協(xié)調(diào)性以及統(tǒng)一性,導致不同高校之間的數(shù)字圖書館的資源共享出現(xiàn)嚴重的阻礙,不利于各高校數(shù)字圖書館之間的數(shù)據(jù)交流。各高校數(shù)字圖書館之間封閉的特性,導致資源的浪費,也影響了廣大用戶的正常使用。以中間件技術作為基礎可以建立高校數(shù)字圖書館之間的分布式異構(gòu)數(shù)據(jù)庫檢索模型,能夠為解決當前高校數(shù)字圖書館之間的資源共享問題提供可行性的技術方案。

1 分布式異構(gòu)數(shù)據(jù)庫的概念

分布式數(shù)據(jù)庫技術是伴隨著信息技術的發(fā)展而出現(xiàn),是數(shù)據(jù)庫技術與信息網(wǎng)絡技術相互結(jié)合的產(chǎn)物。分布式異構(gòu)數(shù)據(jù)庫技術實現(xiàn)了諸多數(shù)據(jù)庫系統(tǒng)的結(jié)合,可以實現(xiàn)不同數(shù)據(jù)庫之間的資源的共享,同時又不損害任何一個數(shù)據(jù)庫系統(tǒng)的整體性與安全性。在實現(xiàn)資源共享的同時,每一個數(shù)據(jù)的完整性、獨立性以及安全性并不會受到人為威脅。異構(gòu)數(shù)據(jù)庫的異構(gòu)性主要體現(xiàn)在三個方面:計算機結(jié)構(gòu)的異構(gòu)性、DBMS的異構(gòu)性以及操作系統(tǒng)的異構(gòu)性。異構(gòu)數(shù)據(jù)庫所要實現(xiàn)的最終目標是不同數(shù)據(jù)庫之間的信息資源、硬件資源以及人力資源的共享。目前,我國數(shù)字圖書館在建設的過程中呈現(xiàn)明顯的獨立性的特點,不利于各高校之間信息資源的共享,造成嚴重的資源浪費現(xiàn)象。因此,分布式異構(gòu)數(shù)據(jù)庫信息檢索模型在高校數(shù)字圖書館中的應用有利于提高資源的利用率。

2 分布式異構(gòu)數(shù)據(jù)庫的技術研究

分布式異構(gòu)數(shù)據(jù)庫的主要技術包含兩種:一種是中間技術,負責服務器與數(shù)據(jù)庫之間的連接;一種是數(shù)據(jù)查詢處理技術,負責信息資源的查詢。

1)中間件(Middleware)是計算機軟件系統(tǒng)與應用軟件系統(tǒng)之間實現(xiàn)連接的軟件系統(tǒng)。中間件的存在,方便了電腦系統(tǒng)各個部分之間的溝通,特別是應用軟件對于系統(tǒng)軟件的集中的邏輯,在現(xiàn)代信息技術應用框架(如Web服務和面向服務的體系結(jié)構(gòu)等)中應用比較廣泛。中間件為實現(xiàn)服務器與數(shù)據(jù)庫之間的連接提供服務。這類服務系統(tǒng)都有十分標準的程序接口以及網(wǎng)絡服務協(xié)議。目前在市場上流通的中間技術主要有OMG公司所提供的CORBA,本文的主要設計就是立足于CORBA。

2)數(shù)據(jù)查詢處理技術。數(shù)據(jù)查詢處理技術指的是用戶根據(jù)自己的實際需求在客戶端進行搜索并獲得自己所需要的新的技術。數(shù)據(jù)查詢技術主要是通過科學地選擇有效的方法,根據(jù)客戶輸入的條件以獲得滿足條件的信息資源反饋給用戶。就一般情況而言,數(shù)據(jù)庫查詢技術主要包括四個方面:首先是信息轉(zhuǎn)化,就是將用戶輸入的內(nèi)容轉(zhuǎn)化為內(nèi)部語言;其次,把語法樹轉(zhuǎn)換成標準(優(yōu)化)形式;再次,選擇低層的存取路徑;最后,選擇科學合理的查詢計劃進行查詢,并最后反饋查詢結(jié)果。

3 系統(tǒng)模型的建構(gòu)

CORBA的英文全稱是Common Object Request Broker Architecture,即公共對象請求體系結(jié)構(gòu),構(gòu)成當前主要的三大中間技術之一。在設計之初,CORBA就被當作是遠程體系結(jié)構(gòu),是為了解決不同地區(qū)之間的計算機的通信問題。就一般而言,CORBA分為三個不同的主要層次系統(tǒng)。

1)處于最底層的系統(tǒng)是對象請求,構(gòu)成CORBA系統(tǒng)的軟總線,規(guī)定了分布對象的定義以及對語言的映射,得以實現(xiàn)遠距離對象之間的通信以及相互操作。

2)公共服務對象。CORBA的公共服務對象包含有很多內(nèi)容,如為客戶提供位置服務、安全服務等多樣化的服務。

3)位于最上層的公共設施,它明確規(guī)定了CORBA的組件結(jié)構(gòu)以及協(xié)作服務中的有效協(xié)議。

由于目前CORBA為客戶提供多樣化的服務,所以使用范圍十分廣泛,已成為主流的分布式平臺。

分布式異構(gòu)數(shù)據(jù)庫的信息檢索模型 分布式異構(gòu)數(shù)據(jù)庫的信息檢索模型是建立在現(xiàn)代高校數(shù)字化圖書館的基礎之上的,其主要的圖形結(jié)構(gòu)如圖1所示。

該系統(tǒng)模型可以依據(jù)現(xiàn)在學校的網(wǎng)絡,無需另行設計,通過互聯(lián)網(wǎng)可以有效地整合各高校數(shù)字圖書館之間的資源為客戶提供服務。同時,服務終端和服務器可以處于不同的網(wǎng)絡地點和環(huán)境。ORB不再負責完成用戶與數(shù)據(jù)庫之間透明的同時,并不會對各高校數(shù)字圖書館的完整性以及安全性造成任何的威脅。

CORBA中間件層次結(jié)構(gòu)體系 把CORBA作為基礎的中間件結(jié)構(gòu),主要分為四個層次分明的結(jié)構(gòu)體系:用戶端與ORB之間主要處理用戶與系統(tǒng)之間的交互,為用戶提供統(tǒng)一的、具體的服務;ORB層主要通過ORB為客戶提供透明的路徑搜索服務;應用服務層主要通過相關技術為客戶提供具體的搜索服務;數(shù)據(jù)庫層主要完成對數(shù)據(jù)的存儲以及處理。

4 分布式數(shù)據(jù)庫系統(tǒng)模型在高校數(shù)字圖書館中的實現(xiàn)

CORBA的應用是在Java平臺基礎之上實現(xiàn)的,原因是Java可以跨越平臺,以及Java技術本身所具有的可解釋性、可移植性、高性能和面向?qū)ο蟮木幊陶Z言以及運行環(huán)境等特性。CORBA是一項集成技術,它為已有高校數(shù)字圖書館提供各種模塊及組成,通過鏈接技術,CORBA間不同的數(shù)字圖書館的信息資源與用戶實現(xiàn)透明性。在應用的過程中,CORBA發(fā)揮的作用不僅僅是對象請求,同時也構(gòu)成一個對象分布式的整體。通過CORBA,Java在各種環(huán)境中的使用得到極大的拓展。Java所創(chuàng)建的可移動的對象,可以通過CORBA的連接作用,與數(shù)據(jù)庫等對象實現(xiàn)相互集成。

建立在CORBA基礎上的分布式的系統(tǒng)模型,用戶在進行使用時,可以使用網(wǎng)絡上的統(tǒng)一的檢索平臺,從各高校的數(shù)字圖書館中選擇符合自己實際需要的信息資源。這些服務的實現(xiàn)主要是由Java Beans及JSP來完成的。在Web服務器上選用VisiBroker For Java為該數(shù)據(jù)庫提供安全的、可靠的、健全的ORB通信服務。Gatekeerper允許向駐留在Web服務器上的對象發(fā)出操作請求,并可接收對象的回調(diào)。利用Smart Agent搜索并且定位已注冊的CORBA對象, 為客戶端程序和服務端對象通信建立好連接,并提供CORBA對象負載平衡和容錯能力。

5 結(jié)語

由于高校在數(shù)字圖書館的建設過程中缺少溝通,導致各高校數(shù)字圖書館在資源共享方面存在一定阻礙。如何實現(xiàn)不同高校之間信息資源的跨庫檢索,已經(jīng)成為圖書館管理工作中的一個重點。根據(jù)信息技術發(fā)展的最新成果,利用分布式數(shù)據(jù)庫技術可以實現(xiàn)各高校數(shù)字圖書館之間信息資源的共享,可以有效提高信息資源的利用率。

參考文獻

[1]孔祥疆.軟件開發(fā)方法與建立異構(gòu)數(shù)據(jù)庫使用平臺模型[D].烏魯木齊:中國科學院新疆理化技術研究所,2005.

[2]羅林球,孔祥疆,李曉.基于CORBA/數(shù)據(jù)字典/JDBC的異構(gòu)數(shù)據(jù)庫檢索系統(tǒng)實現(xiàn)[J].計算機應用,2006(6).

[3]朱學芳.國內(nèi)外異構(gòu)數(shù)據(jù)庫統(tǒng)一檢索系統(tǒng)的比較研究[J].情報檢索,2005(12).

篇8

【關鍵詞】電網(wǎng)地理信息系統(tǒng);關系型數(shù)據(jù)庫;圖數(shù)據(jù)庫;拓撲遍歷

隨著中國電力行業(yè)生產(chǎn)管理信息化的不斷推進,大多數(shù)電網(wǎng)企業(yè)已經(jīng)建立起基于地理信息系統(tǒng)的輸電網(wǎng)絡、配電網(wǎng)絡規(guī)劃、營銷、生產(chǎn)、巡檢、搶修、調(diào)度等的系信息化系統(tǒng)。目前常用的地理信息系統(tǒng)對電力設備的信息存儲管理都是架構(gòu)在傳統(tǒng)的關系型數(shù)據(jù)庫系統(tǒng)(RMDBS)之上。傳統(tǒng)的關系型數(shù)據(jù)庫系統(tǒng)應用模式深入人心,已為廣大系統(tǒng)用戶及軟件開發(fā)廠商所熟悉?;趥鹘y(tǒng)的關系型數(shù)據(jù)庫系統(tǒng)可以快速的開發(fā)出能滿足業(yè)務需求的應用系統(tǒng)。

但是,當電力企業(yè)對電網(wǎng)的管理粒度越來越細致、電力企業(yè)業(yè)務對地理信息系統(tǒng)依賴程度越來越高、地理信息系統(tǒng)存儲的數(shù)據(jù)量越來越大時,傳統(tǒng)的關系型數(shù)據(jù)逐漸暴露出其先天的局限性,其中的一些局限無法簡單地通過應用程序優(yōu)化得到解決。這時,探討另辟蹊徑、使用合適的數(shù)據(jù)存儲系統(tǒng)顯得適時與必要。

1 地理信息系統(tǒng)數(shù)據(jù)庫在電網(wǎng)設備管理上的應用現(xiàn)狀

電網(wǎng)線路及各型設備整體上具備顯著的地理位置相關性,在地理信息系統(tǒng)中,電網(wǎng)線路及設備一般分為三類模型:點模型、線模型、面模型。典型的點模型有桿塔、開關等;典型的線模型有架空線、電纜等;典型的面模型有配電房、變電站(根據(jù)不同的管理粒度,如不需對變電站內(nèi)設備進行管理,則變電站可以表達為點模型)等?;诘乩硇畔⑾到y(tǒng)的電網(wǎng)管理系統(tǒng),一般包含對電網(wǎng)設備模型的屬性信息的管理功能,包括瀏覽、查找、增加、編輯、刪除等操作,系統(tǒng)存儲著管理中需要的設備屬性信息。其中非常重要的的屬性信息包括:設備所在地理坐標,各設備之間的連接關系,各設備之間的從屬關系,設備本身的狀態(tài)信息(例如開關的開合狀態(tài))。所有這些電網(wǎng)設備屬性以及電網(wǎng)設備間的關聯(lián)從屬關系,均存放在關系型數(shù)據(jù)庫中,通常,各企業(yè)均采用關系型數(shù)據(jù)庫(例如Oracle),將這些屬性信息及關系信息存儲在關系表中,通過標準的SQL操作對信息進行新建、檢索、更新。

1.1 主要應用點

地理信息系統(tǒng)通過企業(yè)數(shù)據(jù)總線,與各業(yè)務系統(tǒng)進行了松耦合的服務集成和交互,為各業(yè)務應用提供各類電網(wǎng)空間信息服務,提供的業(yè)務支撐包括以下領域:生產(chǎn)管理、營銷管理、調(diào)度管理、搶修管理、綜合停電、電網(wǎng)規(guī)劃等。

生產(chǎn)管理應用有:設備圖形描繪錄入、設備屬性編輯、設備連接從屬關系錄入等。

營銷業(yè)務應用有:設備查詢定位、電網(wǎng)拓撲分析、專題圖展示、戶變關系交互、業(yè)擴報裝輔助決策、負荷遷移輔助決策等。

調(diào)度業(yè)務應用有:專題圖展現(xiàn)、專題圖審核與、電網(wǎng)圖形數(shù)據(jù)交換等。

搶修管理應用:應急資源查詢定位、電網(wǎng)拓撲關系分析、熱點查詢定位、專題圖展示等。

電網(wǎng)規(guī)劃業(yè)務應用:電網(wǎng)規(guī)劃模型管理、規(guī)劃圖管理、電網(wǎng)現(xiàn)狀分析、區(qū)域負荷分析、變電站選址輔助決策、線路供電廊帶等。

綜合停電業(yè)務應用:為綜合停電提供電網(wǎng)拓撲數(shù)據(jù)、停電影響用戶數(shù)據(jù)。

可以看出,以上應用點可以歸類為三類基本的電網(wǎng)地理信息系統(tǒng)服務:

(1)設備屬性、圖紙錄入維護;對應的業(yè)務應用是:生產(chǎn)管理應用。

(2)設備定位查詢、圖紙查詢;對應的業(yè)務應用是:營銷業(yè)務應用、調(diào)度業(yè)務應用、搶修管理應用等。

(3)電網(wǎng)拓撲連接分析。對應的業(yè)務應用是:營銷業(yè)務應用、搶修管理應用、電網(wǎng)規(guī)劃業(yè)務應、綜合停電業(yè)務應用。

1.2 主要的局限性及傳統(tǒng)應對方法

1.2.1 電網(wǎng)設備大并發(fā)讀寫性能不高

一般關系型數(shù)據(jù)庫使用關系表級別的查詢緩存,每次表中的一個記錄被更新,整個表的緩存即告失效,需要重新進行加載,這是一種大粒度的緩存。由于日常使用中生產(chǎn)管理系統(tǒng)會頻繁地調(diào)用第一類電網(wǎng)地理信息系統(tǒng)服務“設備屬性、圖紙錄入維護”,直接導致數(shù)據(jù)庫緩存被頻繁更新,造成系統(tǒng)I/O頻繁,影響到第二類和第三類電網(wǎng)地理信息系統(tǒng)服務。

為應對這個局限性,確保大部分第二類和第三類服務的性能,一般采取對編輯錄入結(jié)果延(例如在凌晨進行)的方法,以使緩存更新錯開系統(tǒng)業(yè)務高峰。

1.2.2 電網(wǎng)模型屬性增減不靈活

關系型數(shù)據(jù)庫里,由于所有記錄是按行存儲,原則上是假設記錄的長度(即字段個數(shù)及長度)是固定的,增刪字段會引表的重構(gòu)并導致性能的損失。即使采用字典表的組織形式(如Oracle),也會在日積月累的字段增減使得整個表存儲結(jié)構(gòu)的零碎化,慢慢的導致訪問性能下降。如果生產(chǎn)管理上經(jīng)常對設備屬性進行調(diào)整,這個局限會影響到了前文提到的所有三類服務。

為了減輕這個局限帶來的影響,地理信息系統(tǒng)一般采取預先分配字段的方式,建表時先添加多于實際需要的字段,以應付以后的字段增長需求。這樣的設計能有效抵消屬性字段增減帶來的負面影響,但是造成存儲空間上額外開銷。

1.2.3 電網(wǎng)拓撲分析性能低下

由于地理信息系統(tǒng)所采用的關系型數(shù)據(jù)庫的特點,每一對電網(wǎng)設備的連接關系都被表達成一個二元組的形式,并被按行存儲在存儲介質(zhì)中。如圖1所示。

圖1 關系型數(shù)據(jù)庫中設備邏輯的存儲

關系型數(shù)據(jù)庫均沒有自帶內(nèi)嵌的節(jié)點物理遍歷存儲過程或方法,當要遍歷一次設備連接鏈時,必然要通過應用程序會存儲過程經(jīng)過對每一個設備節(jié)點進行查找才能完成遍歷。假設該連接表建有索引,對每個節(jié)點的查詢時間復雜度即為對索引的查詢復雜度

O(nlogn)(1)

由于這個遍歷過程由應用程序執(zhí)行,因此執(zhí)行效率還會受應用程序與數(shù)據(jù)庫系統(tǒng)間數(shù)據(jù)傳遞開銷影響。

常見的應對方法是嘗試由應用程序?qū)⒄麄€連接表導入內(nèi)存中以減少遍歷過程中對數(shù)據(jù)的訪問次數(shù)。理論上這種方法是可行的,但實際上由于一條設備連接鏈邏輯節(jié)點會分布在表中的各個位置而不是集中在一起,而且整個數(shù)據(jù)庫的設備總數(shù)十分大,把整個連接表導入內(nèi)存并不可行。此問題也是關系型數(shù)據(jù)庫在電網(wǎng)設備地理信息系統(tǒng)上難以解決的問題,對第三類服務的執(zhí)行效率造成很大影響。

2 圖數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)上的應用前景

前文提到關系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)上的應用局限性,雖然大部分局限性均有辦法通過應用程序優(yōu)化進行減輕,但由此帶來的應用開發(fā)難度提升、軟硬件資源的額外消耗,增加了應用系統(tǒng)的建設成本。并且,這些減輕措施并非真正解決根本問題,當遇到極限場合時,這些局限性又會不可控制地爆發(fā)。然而,隨著數(shù)據(jù)庫技術的不斷發(fā)展,關系型數(shù)據(jù)庫的這些局限性均可以通過使用新型數(shù)據(jù)庫進行有效地解決。

2.1 圖數(shù)據(jù)庫的技術特點

為了解決的關系型數(shù)據(jù)庫的種種局限性,業(yè)界研發(fā)了大量能解決這些問題且各自具有鮮明特點的不同技術,它們可以與現(xiàn)有關系型數(shù)據(jù)庫相互配合或代替關系型數(shù)據(jù)庫,它們被統(tǒng)稱為NOSQL數(shù)據(jù)庫(Not Only SQL-databases)。其中,圖數(shù)據(jù)庫(Graph Database),是這些NOSQL數(shù)據(jù)庫中基于大型稠密網(wǎng)絡結(jié)構(gòu)的一種數(shù)據(jù)庫技術,其技術特點,剛好可以切合電網(wǎng)地理信息系統(tǒng)的種種需求。

2.1.1 圖數(shù)據(jù)庫的邏輯結(jié)構(gòu)

圖數(shù)據(jù)庫里的信息建模使用三種構(gòu)造單元:

節(jié)點;

邊;

屬性。

以上三種單元以以下規(guī)則進行組織:

節(jié)點和邊有可變的屬性列表;

邊具有方向和類型;

兩個節(jié)點間可以存在多條邊。

為更感性的了解這個邏輯結(jié)構(gòu)可以參考圖2。

圖2 圖數(shù)據(jù)庫的邏輯結(jié)構(gòu)

每一個節(jié)點相當于關系型數(shù)據(jù)庫中的一個記錄,節(jié)點中的屬性則對應著關系型數(shù)據(jù)庫中記錄中的字段。由于節(jié)點的屬性表是可變的,應用程序隨時可以為一個節(jié)點添加刪減屬性,添加屬性不會影響現(xiàn)有代碼任何邏輯。

另外,圖數(shù)據(jù)庫與關系型數(shù)據(jù)庫最大的不同點在于,在關系型數(shù)據(jù)庫中使用連接表(另一個關系表)來表達的連接和從屬關系,在圖數(shù)據(jù)庫中已經(jīng)作為一個基本單元來進行表達。

2.1.2 圖數(shù)據(jù)庫的物理存儲結(jié)構(gòu)

為了支撐前文提到的邏輯結(jié)構(gòu),開發(fā)者對圖數(shù)據(jù)庫的物理存儲進行了針對性的設計。

節(jié)點是按固定大小的記錄順序存儲在物理介質(zhì)上;

節(jié)點帶有兩個固定指針,分別指向其第一個邊和第一個屬性;

邊記錄包含兩個指針,分別指向邊兩端的兩個節(jié)點;

屬性除了屬性值外,還帶有兩個指針,分別指向前同一節(jié)點(或邊)的前一個屬性和后一個屬性。

為簡便起見,圖3對圖2中的設備1和設備2在圖數(shù)據(jù)庫中的存儲進行了表述,其他設備只提及被設備2指向的連接。

圖3 圖數(shù)據(jù)庫的物理存儲結(jié)構(gòu)

由以上結(jié)構(gòu)可知,由于設備節(jié)點是順序存儲的定常結(jié)構(gòu),節(jié)點到邊以及邊到節(jié)點又是以指針形式存儲,圖數(shù)據(jù)庫對單個節(jié)點或邊的訪問均是直接定位到存儲位置的,不需要進行額外的物理存儲讀寫來對節(jié)點或邊進行訪問。

2.2 圖數(shù)據(jù)庫的優(yōu)劣勢

2.2.1 優(yōu)勢

由于圖數(shù)據(jù)特殊擁有網(wǎng)絡化的邏輯結(jié)構(gòu)及物理存儲結(jié)構(gòu),在圖數(shù)據(jù)庫中對節(jié)點根據(jù)連接關系進行遍歷十分迅速,由于連接關系在數(shù)據(jù)錄入時就已經(jīng)建立完畢并且直接反映到物理存儲結(jié)構(gòu)中,對節(jié)點網(wǎng)絡的遍歷(無論是深度優(yōu)先遍歷還是廣度優(yōu)先遍歷)時間復雜度是常數(shù)級的,即

O(n)(2)

同時,由于圖數(shù)據(jù)庫每個節(jié)點均有獨立的屬性列表,因此,可以在如數(shù)據(jù)庫任意添加或刪除屬性(對應與關系數(shù)據(jù)庫中的字段),而不對整個數(shù)據(jù)庫造成負面影響,從而實現(xiàn)良好的伸縮性。

另外,由于圖數(shù)據(jù)庫不存在表,緩存也是針對節(jié)點級別的,因此,數(shù)據(jù)更新對緩存的總體命中率的影響比關系型數(shù)據(jù)庫在相同場景下要輕微。

這些優(yōu)點,恰恰能解決前文提到的關系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)中應用的三個局限性。

2.2.2 劣勢

在眾多優(yōu)點的光環(huán)下,圖數(shù)據(jù)庫依然有其短板。首先,其不存在關系表,因此數(shù)據(jù)節(jié)點的組織在數(shù)據(jù)庫層面的邏輯聯(lián)系不顯而易見,開發(fā)者往往要閱讀應用程序才能完全明白數(shù)據(jù)間的關系,造成對數(shù)據(jù)理解的額外開銷。其次,由于圖數(shù)據(jù)庫以節(jié)點及邊為基礎的物理存儲方式,真對某一屬性進行全量數(shù)據(jù)的分類檢索可能會十分緩慢,不適合用作屬性檢索類的應用基礎。因此,圖數(shù)據(jù)庫不能完全替代關系型數(shù)據(jù)庫,在實際應用場景中,圖數(shù)據(jù)庫應與關系型數(shù)據(jù)庫互補長短,才能發(fā)揮出系統(tǒng)的最大功效。

3 結(jié)論

本文對關系型數(shù)據(jù)庫在電網(wǎng)地理信息系統(tǒng)中的應用局限進行了分析,并針對這些缺陷結(jié)合圖數(shù)據(jù)庫技術特點探討了應用圖數(shù)據(jù)庫的可行性,得出以下結(jié)論:

(1)圖數(shù)據(jù)庫的優(yōu)勢可以有效解決現(xiàn)在電網(wǎng)地理信息系統(tǒng)中由于關系型數(shù)據(jù)庫局限性遇到的問題。

篇9

【關鍵詞】智能電網(wǎng);海迅數(shù)據(jù)庫;PI實時數(shù)據(jù)庫

0.引言

信息化、自動化和互動化是智能電網(wǎng)的三大特征,這其中,信息化是基礎,是解決智能電網(wǎng)可觀測,繼而實現(xiàn)可控與在控的重要途徑。隨著智能電網(wǎng)建設的不斷深入,越來越多的智能測量裝置遍布整個電網(wǎng),尤其是各網(wǎng)省公司和直屬單位輸變電設備狀態(tài)監(jiān)測、用電信息采集、配電自動化、發(fā)電集團信息化等項目的試點與推廣,產(chǎn)生了大量實時數(shù)據(jù)。實時數(shù)據(jù)沉淀生成海量歷史數(shù)據(jù),連同調(diào)度生產(chǎn)控制大區(qū)生成的電網(wǎng)運行方式、關口電量、保護、雷電等歷史/實時數(shù)據(jù)一起,這些數(shù)據(jù)是重要財富,是實現(xiàn)精益化管理的重要基礎。如何高效地采集、處理、存儲、檢索和利用這些海量信息,已經(jīng)成為建設智能電網(wǎng)所要面臨的首要問題。關系型數(shù)據(jù)庫和實時數(shù)據(jù)庫是目前數(shù)據(jù)庫市場上應用較為廣泛的兩類數(shù)據(jù)庫,故數(shù)據(jù)的存儲一般采用關系型數(shù)據(jù)庫或者實時數(shù)據(jù)庫存儲。本文先介紹這兩個類型數(shù)據(jù)庫的定義及特點。

1.實時數(shù)據(jù)庫與關系數(shù)據(jù)庫

1.1關系數(shù)據(jù)庫的介紹

關系型數(shù)據(jù)庫,是建立在關系模型基礎上的數(shù)據(jù)庫,以關系模型組織數(shù)據(jù)并借助于集合代數(shù)等數(shù)學概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù),用二維表的形式來表示實體和實體間聯(lián)系的數(shù)據(jù)模型。關系模型由關系數(shù)據(jù)結(jié)構(gòu)、關系操作集合、關系完整性約束三部分組成,具有數(shù)據(jù)結(jié)構(gòu)簡單、查詢與處理方便、數(shù)據(jù)獨立性高、理論基礎堅實等特點。關系模型也是目前技術最成熟、應用最廣泛的數(shù)據(jù)庫技術,設計和實現(xiàn)風險較低,但由于關系模型提供了較高的數(shù)據(jù)獨立性和非過程化的查詢功能,系統(tǒng)的查詢速度和查詢效率較低,但其仍是數(shù)據(jù)存儲的傳統(tǒng)標準。

1.1.1關系型數(shù)據(jù)庫組件

關系型數(shù)據(jù)庫通常包含下列組件:

(1)客戶端應用程序( Client )。

(2)數(shù)據(jù)庫服務器( Server)。

(3)數(shù)據(jù)庫( Database)。

1.1.2關系型數(shù)據(jù)庫優(yōu)缺點分析(相比實時數(shù)據(jù)庫)

關系型數(shù)據(jù)庫相比實時數(shù)據(jù)庫而言,有著以下優(yōu)點:

(1)容易理解。二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,建立在嚴格的數(shù)學概念基礎上,數(shù)據(jù)結(jié)構(gòu)簡單、清晰。因此,關系模型相對其他模型來說更容易理解。

(2)使用方便。通用的SQL語言易學易懂,程序員、數(shù)據(jù)管理員可以方便地在邏輯層面操作數(shù)據(jù)庫,而完全不必理解其底層實現(xiàn)。其提供的諸如視圖、存儲過程、觸發(fā)器、索引等對象使數(shù)據(jù)訪問趨于便利。

(3)易于維護。豐富的完整性大大降低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率。

(4)安全性高。登錄身份驗證功能完善,提高安全性。

1.2實時數(shù)據(jù)庫的介紹

實時數(shù)據(jù)庫是數(shù)據(jù)庫系統(tǒng)發(fā)展的一個分支,是一種專用的處理海量實時信息的基于測點模型的數(shù)據(jù)庫,針對實時采集的具有時序特征的海量數(shù)據(jù)具有極高的事務處理能力、數(shù)據(jù)壓縮比和查詢檢索速度。實時數(shù)據(jù)庫是基于先進控制和優(yōu)化控制而出現(xiàn)的,對數(shù)據(jù)的實時性要求比較高,因而實時、高效、穩(wěn)定是實時數(shù)據(jù)庫最關鍵的指標。

1.2.1實時數(shù)據(jù)庫的邏輯結(jié)構(gòu)

實時數(shù)據(jù)庫邏輯上包含實時數(shù)據(jù)庫、歷史數(shù)據(jù)庫和測點數(shù)據(jù)庫三部分。實時數(shù)據(jù)庫維護實時數(shù)據(jù),實時數(shù)據(jù)是每個測點時間戳最大的量測值(也就是當前值);歷史數(shù)據(jù)庫維護歷史數(shù)據(jù),歷史數(shù)據(jù)由實時數(shù)據(jù)不斷歸檔沉淀后產(chǎn)生,實時數(shù)據(jù)庫中往往采用壓縮的方式存儲歷史數(shù)據(jù);測點數(shù)據(jù)庫則維護所有測點的各種信息。

1.2.2實時數(shù)據(jù)庫在處理實時數(shù)據(jù)上的優(yōu)勢

實時數(shù)據(jù)庫具有實時數(shù)據(jù)寫入和訪問速度快、歷史數(shù)據(jù)歸檔和訪問速度快、歷史數(shù)據(jù)高效壓縮、數(shù)據(jù)以及接口符合測點模型等優(yōu)點。但實時數(shù)據(jù)庫對測點數(shù)有限制,而且往往按測點數(shù)收費,導致等量數(shù)據(jù)的管理成本相對關系型數(shù)據(jù)庫偏高。

實時數(shù)據(jù)庫在數(shù)據(jù)通信、數(shù)據(jù)組織、數(shù)據(jù)存儲、數(shù)據(jù)檢索、數(shù)據(jù)訪問、數(shù)據(jù)處理、數(shù)據(jù)展現(xiàn)等方面的專業(yè)化及產(chǎn)品化,為構(gòu)建基于大容量實時歷史數(shù)據(jù)之上的分析應用提供了便捷穩(wěn)定的數(shù)據(jù)支撐,使應用系統(tǒng)可以從更高更深層次充分利用寶貴的生產(chǎn)實時歷史數(shù)據(jù)。

1.3實時數(shù)據(jù)庫的和關系數(shù)據(jù)庫的對比

從下表對關系型數(shù)據(jù)庫和實時數(shù)據(jù)庫在數(shù)據(jù)組織方式、訪問方式、壓縮方式、應用領域等的比較結(jié)果可見,實時數(shù)據(jù)庫產(chǎn)品更適合供電企業(yè)生產(chǎn)的需要。這是因為電力生產(chǎn)具有生產(chǎn)、傳輸和使用同時完成的特點,生產(chǎn)過程中產(chǎn)生大量的時序數(shù)據(jù),應用也需要大量圍繞著這些實時/歷史數(shù)據(jù)。實時數(shù)據(jù)庫在處理時序數(shù)據(jù)時具有的存儲速度快、數(shù)據(jù)壓縮比大、節(jié)省存儲空間等有點,在供電企業(yè)的生產(chǎn)應用中具有不可替代的優(yōu)勢。

2.實時數(shù)據(jù)庫產(chǎn)品的介紹

目前市面上比較有名的實時數(shù)據(jù)庫產(chǎn)品有PI實時數(shù)據(jù)庫,eDNA實時數(shù)據(jù)庫,iHistorian 實時數(shù)據(jù)庫,此外,SyncBASE、海迅和安捷(Agilor)在數(shù)據(jù)庫市場中也占有一定份額。其中,國際市場占有率最大的PI實時數(shù)據(jù)庫。另外,我國自主研發(fā)的數(shù)據(jù)庫產(chǎn)品海迅實時數(shù)據(jù)庫也在配調(diào)自動化等領域暫露頭角,取得了較大份額。因此下面重點對比這兩個產(chǎn)品。

2.1 PI實時數(shù)據(jù)庫

PI是由美國OSI Software公司開發(fā)的一套基于C/S架構(gòu)的實時數(shù)據(jù)庫軟件應用平臺,主要應用于存儲和獲取時間序列的實時數(shù)據(jù),是工廠底層控制系統(tǒng)與上層管理信息系統(tǒng)連接的橋梁。一方面,PI用于工廠數(shù)據(jù)的自動采集、存貯和監(jiān)視,作為大型實時數(shù)據(jù)庫和歷史數(shù)據(jù)庫,PI可存貯每個過程點的多年數(shù)據(jù),并提供清晰、精確的操作情況畫面,用戶既可瀏覽工廠當前的生產(chǎn)情況,也可查看過去的生產(chǎn)情況;另一方面,PI為最終用戶和應用軟件開發(fā)人員提供了快捷高效的工廠信息,PI在業(yè)務管理和實時生產(chǎn)之間起到了橋梁作用。

2.2海迅實時數(shù)據(jù)庫

海迅實時數(shù)據(jù)庫管理系統(tǒng)是江蘇瑞中數(shù)據(jù)股份有限公司研發(fā)的國內(nèi)擁有完全自主知識產(chǎn)權(quán)的大型通用實時數(shù)據(jù)庫,該軟件在全面總結(jié)國內(nèi)外同類產(chǎn)品優(yōu)缺點的基礎上按照智能電網(wǎng)、工業(yè)自動化系統(tǒng)以及物聯(lián)網(wǎng)特點和實際需求精心設計、潛心研制而成,是進行海量歷史/實時數(shù)據(jù)處理的專業(yè)平臺。 (下轉(zhuǎn)第249頁)

(上接第155頁)3.海迅實時數(shù)據(jù)庫與PI實時數(shù)據(jù)庫的對比

以下為PI和瑞中的海迅數(shù)據(jù)庫在服務器端模塊部署方式,性能指標、組態(tài)工具、應用領域、市場占有率等方面的對比介紹。

海迅數(shù)據(jù)庫有著分布式體系架構(gòu)和跨平臺特性,讓它在各廠商的實時數(shù)據(jù)庫產(chǎn)品中格外突出。分布式體系架構(gòu)使得它能支持更多的測點容量,達到更高的性能??缙脚_特性使它的應用領域更廣泛,使用更安全高效。

篇10

關鍵詞:云計算 數(shù)據(jù)模型 云數(shù)據(jù)庫 NoSQL數(shù)據(jù)庫

0 引言

從2006年Google提出“云計算”的概念至今,云計算正以史無前例的速度發(fā)展,國內(nèi)外各大IT企業(yè)都在開署各自的云計算平臺,云計算的應用更趨多樣化,目前在互聯(lián)網(wǎng)上我們看到的很多應用都可以看到“云”的身影,諸如“云存儲”、“云安全”、“云物聯(lián)”、“云郵件”、“云輸入法”等等??偟膩碚f云計算包括三個層次的服務:基礎設施即服務(IaaS),平臺即服務(PaaS)和軟件即服務(SaaS)。云服務模式實現(xiàn)了資源集中配置和管理,實現(xiàn)按需采購、配置,避免資源浪費,能夠更好滿足用戶不斷變化的需求。同時降低管理維護成本,隨著云計算技術的不斷發(fā)展,系統(tǒng)的可靠性、擴展性、穩(wěn)定性也會更好,云計算將影響傳統(tǒng)數(shù)據(jù)庫的發(fā)展趨勢,云服務模式將逐步得到市場認可,反過來講,傳統(tǒng)數(shù)據(jù)庫必須能更好適應云計算環(huán)境的需求。傳統(tǒng)的關系型數(shù)據(jù)庫由于其天生的限制,已經(jīng)越來越無法滿足目前時代的要求,云計算時代對數(shù)據(jù)庫技術提出了新的需求,主要表現(xiàn)在海量數(shù)據(jù)處理,大規(guī)模集群管理,低延遲讀寫速度,建設及運營成本。雖然它在數(shù)據(jù)存儲方面占據(jù)了不可動搖的地位,但對數(shù)據(jù)擴展、讀寫速度、支撐容量以及建設和運營成本的要求方面,就稍顯遜色。下面我們來探討適應于云計算的數(shù)據(jù)庫所支持的數(shù)據(jù)模型。

1 云數(shù)據(jù)模型的類型

無論是關系型數(shù)據(jù)庫還是非關系型數(shù)據(jù)庫,都是某種數(shù)據(jù)模型的實現(xiàn),不同的數(shù)據(jù)模型可以滿足不同的應用需求。數(shù)據(jù)模型會影響客戶端通過API對數(shù)據(jù)的操作,決定了客戶端如何對數(shù)據(jù)進行編碼存儲。云數(shù)據(jù)庫的設計可以采用不同的數(shù)據(jù)模型,目前適應于云計算平臺的數(shù)據(jù)模型有以下幾類:

1.1 基于云計算的關系模型。關系型云數(shù)據(jù)庫的數(shù)據(jù)模型涉及行組和表組等相關概念。此模型的數(shù)據(jù)結(jié)構(gòu)為一個表是一個邏輯關系,它包含一個分區(qū)鍵,用來對表進行分區(qū)。具有相同分區(qū)鍵的多個表的集合稱為表組。在表組中,具有相同分區(qū)鍵值的多個行的集合稱為行組。一個行組中包含的行總是被分配到同一個數(shù)據(jù)節(jié)點上。每個表組會包含多個行組,這些行組會被分配到不同的數(shù)據(jù)節(jié)點上。一個數(shù)據(jù)分區(qū)包含了多個行組。因此,每個數(shù)據(jù)節(jié)點都存儲了位于某個分區(qū)鍵值區(qū)間內(nèi)的所有行。微軟的SQL Azure云數(shù)據(jù)庫就是基于此模型的。

1.2 NoSQL數(shù)據(jù)庫數(shù)據(jù)模型。由于在設計上和傳統(tǒng)的關系型數(shù)據(jù)庫相比有很大的不同,故稱此類數(shù)據(jù)庫為“NoSQL(Not only SQL)”系列數(shù)據(jù)庫,即非關系型的數(shù)據(jù)庫。與關系型數(shù)據(jù)庫相比,此類數(shù)據(jù)庫非常關注對數(shù)據(jù)高并發(fā)讀寫和海量數(shù)據(jù)的存儲,在架構(gòu)和數(shù)據(jù)模型方面做了簡化,而在擴展和并發(fā)等方面做了增強。此類數(shù)據(jù)庫種類繁多,且各有優(yōu)缺點,其數(shù)據(jù)模型有如下四類:①鍵值(key-value)存儲模型。使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。其數(shù)據(jù)模型為一系列的鍵值對。它能提供非??斓牟樵兯俣取⒋蟮臄?shù)據(jù)存放量和高并發(fā)操作,非常適合通過主鍵對數(shù)據(jù)進行查詢和修改等操作,缺點是存儲的數(shù)據(jù)缺少結(jié)構(gòu)化,不支持復雜的操作。運用此模型的數(shù)據(jù)庫有BigTable、Tokyo cabinet/Tyrant、Redis、Voldmort、Berkeley DB等。②列式存儲模型。列式存儲和關系模型相似,與關系模型存儲記錄不同,列式存儲以流的方式在列中存儲所有的數(shù)據(jù)。其數(shù)據(jù)模型為以列簇式存儲,將同一列數(shù)據(jù)存放在一起。屬于同一列的數(shù)據(jù)會盡可能地存儲在硬盤同一個頁中,而不是將屬于同一個行的數(shù)據(jù)存放在一起。使用列式數(shù)據(jù)庫,將會節(jié)省大量I/O,并且大多數(shù)列式數(shù)據(jù)庫都支持Column Family這個特性,能將多個列并為一個小組。總體而言,這種數(shù)據(jù)模型的優(yōu)點是查找速度快,可擴展性強,更容易進行分布式擴展,缺點是功能相對局限。運用此模型的數(shù)據(jù)庫有Cassandra、HBase、Riak等。③文檔模型。在數(shù)據(jù)結(jié)構(gòu)上,文檔型和鍵值型很相似,也是一個key對應一個value,但是這個Value主要以JSON或者XML等格式的文檔來進行存儲,是有語義的,并且文檔數(shù)據(jù)庫一般可以對Value來創(chuàng)建Secondary Index來方便上層的應用,而這點是普通鍵值數(shù)據(jù)庫所無法支持的。這種數(shù)據(jù)模型的優(yōu)點是對數(shù)據(jù)結(jié)構(gòu)要求不嚴格,缺點是對查詢性能不高,而且缺乏統(tǒng)一的查詢語法。運用此類模型的數(shù)據(jù)庫有MongoDB、CouchDB等。④圖形模型。圖形結(jié)構(gòu)的數(shù)據(jù)庫同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務器上。其數(shù)據(jù)模型為圖結(jié)構(gòu),其優(yōu)點是可以很方便地利用圖的相關算法,缺點是需要對整個圖做計算才能得出結(jié)果,不容易做分布式的集群方案。運用此類模型的數(shù)據(jù)庫有Neo4J、InfoGrid、Infinite Graph等。數(shù)據(jù)模型有著各自的優(yōu)缺點,它們適用于不同的領域。不管選擇關系模型,還是非關系模型,都要根據(jù)實際應用的場景做出選擇。有時候單一的數(shù)據(jù)模型并不能滿足我們的需求,對于許多大型的應用可能需要集成多種數(shù)據(jù)模型。