韩国激情一区二区高清在线,亚洲中文字幕网址在线,九色在线精品视频,久久深夜福利亚洲网站

    <object id="jtoc7"><button id="jtoc7"></button></object>

      <object id="jtoc7"></object>

      期刊 科普 SCI期刊 投稿技巧 學(xué)術(shù) 出書 購物車

      首頁 > 優(yōu)秀范文 > 數(shù)據(jù)庫設(shè)計

      數(shù)據(jù)庫設(shè)計樣例十一篇

      時間:2022-10-02 03:30:59

      序論:速發(fā)表網(wǎng)結(jié)合其深厚的文秘經(jīng)驗,特別為您篩選了11篇數(shù)據(jù)庫設(shè)計范文。如果您需要更多原創(chuàng)資料,歡迎隨時與我們的客服老師聯(lián)系,希望您能從中汲取靈感和知識!

      數(shù)據(jù)庫設(shè)計

      篇1

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)31-0001-02

      Optimal Design of Case Database in Database Course Teaching

      HUANG Xin

      (Jiaxing Technician College Department of Trade and Tourism,Jiaxing 314036, China)

      Abstract:Aiming at the problem of selecting the teaching cases in, we analysis and research the case database designed int the domestic and mainstream textbook of database course. We propose a forum database named “simpleforumdb” as teaching and laboratorial case, and the detailed design of this database is given at the mean time.

      Key words:database;course teaching;case database design

      數(shù)據(jù)庫技術(shù)是現(xiàn)代IT技術(shù)的重要支撐技術(shù),是構(gòu)建各類信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ)[1]。教育部的相關(guān)文件指出“當(dāng)代大學(xué)生應(yīng)具備利用數(shù)據(jù)庫技術(shù)對信息進(jìn)行管理、加工和處理的意識與能力,用以解決本專業(yè)領(lǐng)域中的問題的能力”[2]。

      國內(nèi)主流數(shù)據(jù)庫課程教材在組織內(nèi)容時,雖然有的側(cè)重數(shù)據(jù)庫實現(xiàn)原理的介紹,有的以某一數(shù)據(jù)庫管理系統(tǒng)(如Oracle、MySQL等)為平臺介紹數(shù)據(jù)庫技術(shù)的應(yīng)用,有的兼顧理論和技術(shù),但無一例外都引入了一個或多個數(shù)據(jù)庫教學(xué)項目作為貫穿全書各章節(jié)、演示數(shù)據(jù)庫關(guān)鍵概念和技術(shù)的案例。許多在教學(xué)中廣泛使用的案例數(shù)據(jù)庫較為簡單,與實際工程項目相差較大,不能很好地覆蓋數(shù)據(jù)庫課程所有知識點,導(dǎo)致學(xué)生在未來工作中遇到實際項目時無法快速上手。如何設(shè)計合理的教學(xué)案例數(shù)據(jù)庫已成為數(shù)據(jù)庫課程教學(xué)亟待解決的重要課題。

      1 主流數(shù)據(jù)庫課程教材使用的案例數(shù)據(jù)庫分析

      下面從本??苾蓚€教學(xué)層次,選取兩本主流數(shù)據(jù)庫課程教材中引入的案例數(shù)據(jù)庫加以分析各自的優(yōu)點和不足。

      1.1 圖書管理系統(tǒng)數(shù)據(jù)庫

      由南京師范大學(xué)鄭阿奇教授主編的數(shù)據(jù)庫課程系列教材被列為普通高等學(xué)校國家級規(guī)劃教材,在職業(yè)院校和應(yīng)用型本科院校的數(shù)據(jù)庫課程教學(xué)中廣泛使用。該教材以圖書管理系統(tǒng)數(shù)據(jù)庫作為教學(xué)案例[3]。

      1.1.1 圖書管理系統(tǒng)數(shù)據(jù)庫邏輯結(jié)構(gòu)

      圖書管理系統(tǒng)數(shù)據(jù)庫的邏輯結(jié)構(gòu)[3]如下:

      1)管理員表:Administrator(角色名,密碼,備注)

      2)讀者表:TReader(借書證號,密碼,姓名,性別,出生時間,專業(yè),借書量,照片,備注,聯(lián)系方式)

      3)圖書表:TBook(ISBN,書名,作譯者,出版社,出版年月,價格,復(fù)本量,庫存量,分類號,內(nèi)容提要,封面照片)

      4)借閱表:TLend(借書證號,ISBN,圖書ID,借書時間,應(yīng)還時間)

      5)還書表:HLend(編號,借書證號,ISBN,圖書ID,借書時間,還書時間)

      6)借出表:TBLend(圖書ID,ISBN,是否借出)

      1.1.2 圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計分析

      優(yōu)點:圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計較為完整,學(xué)習(xí)者不難結(jié)合其他程序設(shè)計語言(如C#、JSP、等)構(gòu)造出一個實用的數(shù)據(jù)庫應(yīng)用系統(tǒng)作為課程設(shè)計。另外,該案例數(shù)據(jù)庫的屬性較為豐富,可涵蓋SQL語言的主要數(shù)據(jù)類型。

      不足:第一,可能是為了方便數(shù)據(jù)查詢,圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計上存在不規(guī)范問題:部分表沒有達(dá)到3NF的規(guī)范化要求。例如在借閱表TLend中,存在非主屬性ISBN對碼(借書證號, 圖書ID , 借書時間)的部分函數(shù)依賴[4]。還書表HLend也存在類似問題。改進(jìn)的方法是從借閱表TLend和還書表HLend中去除屬性ISBN,同時在TLend中加入“編號”屬性作為該表的主碼。第二,圖書管理系統(tǒng)數(shù)據(jù)庫的設(shè)計存在冗余問題,部分屬性屬于冗余屬性,可以從相關(guān)表中去除[4]。例如圖書表TBook中每本書的“復(fù)本量”和“庫存量”可通過對借出表TBLend中相關(guān)記錄進(jìn)行聚集函數(shù)查詢(使用函數(shù)count)得到,所以這兩個屬性應(yīng)該從圖書表Tbook中去除(如果存在,為了維護(hù)數(shù)據(jù)完整性系統(tǒng)將付出很大的性能代價)。第三,和企業(yè)實際工程項目相比,圖書管理系統(tǒng)數(shù)據(jù)庫略顯簡單。

      1.2 學(xué)生選課數(shù)據(jù)庫

      由中國人民大學(xué)王珊和薩師煊兩位教授編著的《數(shù)據(jù)庫系統(tǒng)概論》一書引入的案例數(shù)據(jù)庫――學(xué)生選課數(shù)據(jù)庫在國內(nèi)多數(shù)本科院校授課時廣泛采用[5]。《數(shù)據(jù)庫系統(tǒng)概論》也是國內(nèi)第一部介紹數(shù)據(jù)庫的教材,一直被國內(nèi)大多數(shù)本科院校作為課程教材和主要教學(xué)參考書。

      篇2

      3、邏輯結(jié)構(gòu)設(shè)計:將概念結(jié)構(gòu)轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型;

      4、數(shù)據(jù)庫物理設(shè)計:為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu);

      篇3

      數(shù)據(jù)庫系統(tǒng)是隨著計算機在數(shù)據(jù)處理方面的應(yīng)用發(fā)展而產(chǎn)生的。從19世紀(jì)50年代末開始,數(shù)據(jù)管理技術(shù)就一直是計算機應(yīng)用領(lǐng)域中的一項重要技術(shù)和研究課題。利用計算機實現(xiàn)數(shù)據(jù)的管理經(jīng)歷了三個發(fā)展階段:(1)人工管理階段;(2)文件系統(tǒng)階段;(3)數(shù)據(jù)庫階段。數(shù)據(jù)庫系統(tǒng)的起源則在60年代中期,其發(fā)展始終以數(shù)據(jù)模型的發(fā)展為主線。按著數(shù)據(jù)庫模型的進(jìn)展情況,數(shù)據(jù)庫系統(tǒng)的發(fā)展可以劃分為三代:(1)第一代數(shù)據(jù)庫系統(tǒng),即層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng);(2)第二代數(shù)據(jù)庫系統(tǒng),即關(guān)系數(shù)據(jù)庫系統(tǒng)(RDBMS);(3)第三代數(shù)據(jù)庫系統(tǒng),即面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。一般來說一個完整的數(shù)據(jù)庫系統(tǒng)由四個部分組成:數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫管理員和應(yīng)用程序。目前關(guān)系型數(shù)據(jù)庫的使用范圍最廣,人數(shù)也最多,不過針對某些特殊需求一般的關(guān)系型數(shù)據(jù)庫則無能為力,比如醫(yī)學(xué)數(shù)據(jù)庫。醫(yī)學(xué)數(shù)據(jù)庫主要包括兩種,一是醫(yī)學(xué)文獻(xiàn)的數(shù)據(jù)庫,它包括了基礎(chǔ)醫(yī)學(xué)、臨床醫(yī)學(xué)、預(yù)防醫(yī)學(xué)、藥學(xué)、口腔醫(yī)學(xué)、中醫(yī)學(xué)及中藥學(xué)等生物醫(yī)學(xué)的各個領(lǐng)域的文獻(xiàn)這種數(shù)據(jù)主要是提供有自由詞,中文文題,英文文題,作者,摘要,參考文獻(xiàn),期刊名,出版年期,文獻(xiàn)類型,特征詞等的檢索,這類醫(yī)學(xué)數(shù)據(jù)庫和一般的數(shù)據(jù)庫系統(tǒng)沒有太大區(qū)別;二是醫(yī)學(xué)臨床信息數(shù)據(jù)庫,這種數(shù)據(jù)庫用于記錄病人全面詳細(xì)的信息,主要用來支持醫(yī)生的診斷,使得醫(yī)生可以對醫(yī)療全過程(FullMedicalProcesses)進(jìn)行規(guī)范、監(jiān)督、控制、管理和分析統(tǒng)計。這種數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜,通過傳統(tǒng)的數(shù)據(jù)庫形式已經(jīng)無法滿足要求。

      2、國外的醫(yī)學(xué)數(shù)據(jù)庫研究現(xiàn)狀

      外國的醫(yī)學(xué)數(shù)據(jù)庫研究起步較早,已經(jīng)取得了相當(dāng)多的成果,像美國國家醫(yī)學(xué)圖書館(NationalLibraryofMedicine)的可視化人體項目,他們通過獲取男性和女性的1mm間隔的CT和MRI數(shù)據(jù),用于醫(yī)學(xué)教育和科研;美國的EMBBS醫(yī)學(xué)圖像數(shù)據(jù)庫也主要用于教學(xué)和管理信息,該數(shù)據(jù)庫擁有大量實用的臨床照片、X光照片、文章、工作指南以及臨床信息等;南佛羅里達(dá)大學(xué)的圖像數(shù)據(jù)庫,該數(shù)據(jù)庫用于為研究機構(gòu)提供圖像,促進(jìn)圖像顯示技術(shù)及教學(xué)輔助工具的開發(fā);類似的還有Rorida的病理學(xué)者Dr.JohnMinarclk首先開創(chuàng)的腫瘤圖像數(shù)據(jù)庫(Tumorboard),美國卡耐基梅隆大學(xué)的圖像數(shù)據(jù)庫等。

      3、醫(yī)學(xué)臨床信息數(shù)據(jù)庫的需求與設(shè)計

      3.1醫(yī)學(xué)臨床信息數(shù)據(jù)庫的需求和工程數(shù)據(jù)庫特點

      數(shù)據(jù)是數(shù)據(jù)庫的核心,醫(yī)學(xué)臨床信息需要處理的數(shù)據(jù)具有一些特點:(1)類型比較復(fù)雜,既有傳統(tǒng)的數(shù)值和文字,還有大量的臨床照片、X光照片等信息,以后還可能進(jìn)一步的有視頻和音頻信息需要存貯,類型多,所需的存儲空間大;(2)臨床數(shù)據(jù)需要進(jìn)行動態(tài)的版本管理,應(yīng)該能夠體現(xiàn)出整個的診斷過程;(3)臨床數(shù)據(jù)之間往往具有豐富的關(guān)聯(lián)語義。這些特點和工程數(shù)據(jù)庫有很多相似之處,這使得在進(jìn)行醫(yī)學(xué)臨床信息數(shù)據(jù)庫建立的過程中可以參考借鑒工程數(shù)據(jù)庫的理論和知識。工程數(shù)據(jù)庫是面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng),能夠支持復(fù)雜對象(如圖形數(shù)據(jù)和工程設(shè)計文檔)的表示和處理;可擴展的數(shù)據(jù)類型;支持復(fù)雜多樣的工程數(shù)據(jù)的存儲和集成管理;變長結(jié)構(gòu)數(shù)據(jù)實體的處理;工程長事務(wù)和嵌套事務(wù)的并發(fā)控制和恢復(fù);設(shè)計過程中多個不同數(shù)據(jù)版本的存儲和管理;支持模式的動態(tài)修改與擴展和支持多種工程應(yīng)用程序等。以上的工程數(shù)據(jù)庫功能的實現(xiàn)方式都可以用來指導(dǎo)臨床信息數(shù)據(jù)庫的建立。

      3.2醫(yī)學(xué)臨床信息數(shù)據(jù)庫的設(shè)計

      篇4

      中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2015)11-0000-00

      Web服務(wù)中大多是以文件傳輸?shù)男问絹磉M(jìn)行管理和運營的,但是隨著社會發(fā)展信息量的加大,系統(tǒng)的反應(yīng)速度受到很大影響,并且Web的應(yīng)用領(lǐng)域逐漸擴大,已經(jīng)不能夠滿足人們對于信息實時性的要求;另外,數(shù)據(jù)庫近幾年的發(fā)展十分迅猛且數(shù)據(jù)庫的功能強大,能夠快速檢索查詢大批量的數(shù)據(jù),達(dá)到高效運行的目標(biāo)。所以Web數(shù)據(jù)庫就將Web技術(shù)與數(shù)據(jù)庫技術(shù)相結(jié)合,這不僅能夠?qū)⒍叩膬?yōu)勢相互結(jié)合,最重要的是可以將數(shù)據(jù)庫的重要資源放到網(wǎng)絡(luò)平臺進(jìn)行檢索和瀏覽,使用戶能夠在瀏覽器輕松跨平臺實現(xiàn)多媒體的服務(wù)。Web數(shù)據(jù)庫作為研究設(shè)計的方向,與傳統(tǒng)的數(shù)據(jù)庫有明顯的不同,比如體系結(jié)構(gòu)以及訪問方式等等。

      1 Web數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)

      數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)是涵蓋了系統(tǒng)硬件、軟件以及語言和算法的綜合性概念,具體指的就是組成計算機系統(tǒng)的各部分之間的相互關(guān)系。對Web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的研究主要就是對其硬件分布及軟件功能分配方面的內(nèi)容。一個邏輯性清晰、開發(fā)容易和便于維護(hù)的數(shù)據(jù)庫系統(tǒng)的建立必然是以一個統(tǒng)一的體系結(jié)構(gòu)為指導(dǎo),同時還要對系統(tǒng)的軟件功能分配及硬件分布進(jìn)行科學(xué)的規(guī)劃。

      數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)是隨著計算機模式的改變而不斷的改變,與計算機體系結(jié)構(gòu)有著緊密的聯(lián)系。伴著計算體系的集中模式和C/S模式以及三層C/S模式的演變,數(shù)據(jù)庫體系結(jié)構(gòu)也歷經(jīng)了集中式的主機結(jié)構(gòu)和C/S結(jié)構(gòu)以及多層的C/S結(jié)構(gòu)演變。

      2 Web數(shù)據(jù)庫應(yīng)用編程模型

      Web數(shù)據(jù)庫經(jīng)過兩種技術(shù)的結(jié)合,需要解決的就是各個模塊之間復(fù)雜的信息傳輸交換方式以及對于數(shù)據(jù)庫的管理和運行,另外還有在設(shè)計應(yīng)用編程中模塊和層次間的銜接和整合中存在的問題。

      2.1 MVC模型

      不管是什么樣的應(yīng)用程序都需要對相關(guān)的流程進(jìn)行控制,根據(jù)這些就能夠總結(jié)出常用的設(shè)計模型,在MVC模型中應(yīng)用程序由三部分組成:模型:是程序的核心邏輯,面對應(yīng)用領(lǐng)域的抽象對象,對其傳輸?shù)男畔⒁筮M(jìn)行檢索和瀏覽,實現(xiàn)完成業(yè)務(wù)的目的。視圖:這部分主要是面向用戶的應(yīng)用程序,負(fù)責(zé)用戶與數(shù)據(jù)庫應(yīng)用程序的鏈接作用。一方面,視圖能夠為用戶提供所需要的信息輸入方式,并能夠?qū)⑿枨笠宰羁斓乃俣葌鬏斀o邏輯應(yīng)用領(lǐng)域;另一方面,在傳出形式上,將邏輯結(jié)果以一定的方式呈現(xiàn)給用戶。控制:就是將邏輯程序與視圖之間進(jìn)行模式切換,方便兩者的信息數(shù)據(jù)接收和傳出。一方面,能夠?qū)⒁晥D傳來的信息進(jìn)行解讀,以一種系統(tǒng)能夠接受理解的方式傳送出去;另一方面,將邏輯結(jié)果和模型的轉(zhuǎn)變的執(zhí)行進(jìn)行處理,反饋給用戶。

      針對MVC模型應(yīng)用程序的優(yōu)化設(shè)計,包括對用戶界面、流程控制以及邏輯方面的設(shè)計,將各部分進(jìn)行分離,然后設(shè)計開發(fā)出個部分之間的接口,根據(jù)不同部分的主要功能,選擇最合適的接口技術(shù)進(jìn)行開發(fā)設(shè)計,最終形成完美結(jié)合,突出模型的技術(shù)細(xì)節(jié)和重要功能。

      2.2 Web數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計開發(fā)中存在的問題

      Web數(shù)據(jù)庫的設(shè)計開發(fā)主要包括三個方面,分別是網(wǎng)頁的設(shè)計、業(yè)務(wù)邏輯的設(shè)計以及數(shù)據(jù)庫的管理設(shè)計。這些實際都是由多個開發(fā)人員應(yīng)用不同的技術(shù)來結(jié)合成一個完整的程序的,所以編程技術(shù)很多,對應(yīng)的客戶的主機也要進(jìn)行不斷地升級才能夠接受高功能的程序邏輯。在開發(fā)Web數(shù)據(jù)庫的應(yīng)用程序時,要考慮到運行速度、效率以及邏輯功能等多方面問題,同時各種技術(shù)自身都存在一定的不足,如果只采用一種技術(shù)來連接Web數(shù)據(jù)庫各部分之間的接口會帶來很大的運行困難,所以需要采用多種技術(shù)共同設(shè)計開發(fā),保證Web數(shù)據(jù)庫的高效率運行。

      目前的Web數(shù)據(jù)庫存在的種種問題,主要是編程模型的開發(fā)問題,從而造成的網(wǎng)頁、邏輯和數(shù)據(jù)庫之間的交流不順暢。在設(shè)計開發(fā)的過程中引用系統(tǒng)、合理有效的編輯模型,要求設(shè)計和開發(fā)人員務(wù)必按照一定程序來對各部分接口進(jìn)行獨立的設(shè)計和開發(fā)維護(hù),并保證不影響整體之間的交流和鏈接。

      3 Web數(shù)據(jù)庫的安全性設(shè)計分析

      在對Web數(shù)據(jù)庫進(jìn)行設(shè)計的過程中首先需要對其工作環(huán)境進(jìn)行最優(yōu)化的系統(tǒng)安全配置,進(jìn)而有效避免非法人員對Web站點的攻擊,其具體包括了對操作系統(tǒng)、相關(guān)服務(wù)器的安全配置,只有將相關(guān)工作有效的結(jié)合起來,才能為Web數(shù)據(jù)庫的建立提供一個安全的工作環(huán)境。3.1服務(wù)器的安全配置

      對系統(tǒng)不同層次的運行環(huán)境要提供出具有較強針對性的安全機制。(1)操作系統(tǒng)的安全設(shè)置及措施。在用戶進(jìn)行使用系統(tǒng)之前首先需要做的就是登錄,對于一些不能成功登錄的用戶,系統(tǒng)禁止其使用服務(wù)器的一切資源;對系統(tǒng)所有的默認(rèn)賬號和密碼進(jìn)行刪除,同時限制用戶嘗試登錄系統(tǒng)的次數(shù);將系統(tǒng)磁盤設(shè)置為只讀模式;對于系統(tǒng)中一些重要的目錄要進(jìn)行及時的備份,避免丟失;對用戶的硬盤使用空間進(jìn)行限制;對于允許訪問系統(tǒng)的用戶,對該用戶資源訪問權(quán)限進(jìn)行設(shè)置。(2)數(shù)據(jù)庫的安全設(shè)置。Oracle的安全模式設(shè)置為標(biāo)準(zhǔn)的安全模式,設(shè)置用戶只能通過登錄ID號以及相關(guān)口令進(jìn)行數(shù)據(jù)庫服務(wù)器的訪問;對不同的用戶在數(shù)據(jù)庫的管理系統(tǒng)中給予不用的用戶名設(shè)置;同時賦予不同的用戶不同的權(quán)限;對系統(tǒng)中的用戶名和對應(yīng)口令進(jìn)行定時的更改;定期的對應(yīng)用程序中的用戶進(jìn)行審計。

      3.2數(shù)據(jù)庫應(yīng)用程序的安全性設(shè)計及實現(xiàn)

      對于服務(wù)端的應(yīng)用程序采取了以下幾種安全性措施,如下所述:(1)程序連接數(shù)據(jù)庫的應(yīng)用,Oracle中對數(shù)據(jù)庫的連接用戶進(jìn)行用戶名的設(shè)置,并賦予其相應(yīng)的訪問權(quán)限。同時在應(yīng)用程序中設(shè)置了用戶的登錄名和登錄口令。在應(yīng)用程序進(jìn)行數(shù)據(jù)庫鏈接時,利用系統(tǒng)賦予的用戶名和口令方能進(jìn)行數(shù)據(jù)庫的訪問,隨后實現(xiàn)Oracle原有的全部用戶以及管理權(quán)限才能得以實現(xiàn)。具體實施方案:對于每一個數(shù)據(jù)庫的應(yīng)用程序設(shè)置一個相應(yīng)的數(shù)據(jù)庫賬號,該賬號對所有的數(shù)據(jù)信息都具備了操作的所有權(quán)限。另外,這對于系統(tǒng)的操作人員還需要創(chuàng)建一個系統(tǒng)賬號。這樣一來,當(dāng)用戶在訪問數(shù)據(jù)庫時,必然會以真正的數(shù)據(jù)庫賬號進(jìn)行登錄,然后是相關(guān)登錄程序的執(zhí)行過程。這一安全體系直接造成的結(jié)果就是整個應(yīng)用系統(tǒng)成為了數(shù)據(jù)庫的直接用戶,而系統(tǒng)的所有操作人員卻成為了數(shù)據(jù)庫的間接用戶。也就是應(yīng)用系統(tǒng)在完成了相應(yīng)的邏輯基礎(chǔ)之上,還徹底的分割開了數(shù)據(jù)庫和系統(tǒng)用戶,為數(shù)據(jù)的安全提供了一道堅固的“防火墻”。(2)有效的增強用戶的授權(quán)機制。在系統(tǒng)中不僅對Oracle的數(shù)據(jù)用戶采用了授權(quán)機制,對系統(tǒng)賬號也采用了手段機制,在上述的安全體系中,應(yīng)用程序有效的為數(shù)據(jù)庫和用戶之間提供了一道安全防火墻,這對應(yīng)用程序本身的要求就需要具備足夠的安全特性。由于用戶授權(quán)管理機制的嚴(yán)密性將對整個系統(tǒng)的安全將產(chǎn)生直接的影響,所以強化用戶授權(quán)機制就顯得尤為重要。本文研究的系統(tǒng)中將整個系統(tǒng)根據(jù)其功能特性將其劃分為了多個最小的權(quán)限單元,這些單元同時都具備了可分配的特性,單元權(quán)限主要也就表現(xiàn)在了對數(shù)據(jù)庫相應(yīng)表格屬性以及視圖文件的操作等內(nèi)容的劃分上,然后再有效的結(jié)合相關(guān)系統(tǒng)操作人員的工作性質(zhì),運用工作組或角色的概念,完成了應(yīng)用系統(tǒng)賬號基本等級的創(chuàng)建工作,如根據(jù)等級的不同可將用戶分為普通游客、初級會員、高級會員等,同時賦予了不同等級的用戶群不同的使用權(quán)限,由此以來使得系統(tǒng)權(quán)限管理工作得到了有效的簡化。為了使系統(tǒng)安全管理的靈活性有效提高,對系統(tǒng)某一等級的用戶的權(quán)限,授權(quán)管理模塊需要做進(jìn)一步的限制工作,以實現(xiàn)所有權(quán)限均能達(dá)到任意組合的應(yīng)用效果。除此之外,為了保證相關(guān)管理工作人員工作效率的有效提高,對所有的系統(tǒng)權(quán)限和每一種等級的用戶群體以及不同用戶所對應(yīng)的不同組合權(quán)限,建立一部完善的數(shù)據(jù)詞典,為的就是能夠保證在任何一種工作環(huán)境下,工作人員都能夠方便的對用戶等級進(jìn)行添加或者對不同等級的用戶權(quán)限進(jìn)行修改等操作;為了能夠有效的限制某一系統(tǒng)應(yīng)用賬號的繼續(xù)使用,該系統(tǒng)還需要設(shè)置相應(yīng)的賬號封鎖或解凍的功能。(3)系統(tǒng)的審計和檢測。系統(tǒng)的檢測和審計工作對整個系統(tǒng)的安全穩(wěn)定具有重要的意義。系統(tǒng)中的日志系統(tǒng)具有良好的數(shù)據(jù)庫操作數(shù)據(jù)的采集以及記錄功能。日志系統(tǒng)能夠有效的記錄某一用戶在登錄系統(tǒng)直到退出系統(tǒng)這一訪問時間段內(nèi)的所有操作,包括了用戶在登錄過程中的失敗操作以及在成功登錄系統(tǒng)后所執(zhí)行的增、刪、查、改等一系列的操作行為。日志記錄的內(nèi)容還包括了用戶的IP地址以及名稱、操作類型及操作對象等多項內(nèi)容。為充分保證系統(tǒng)的安全性和穩(wěn)定性,系統(tǒng)管理工作人員就需要對日志記錄的文件內(nèi)容進(jìn)行必要的審計和檢測工作,及時的找出系統(tǒng)中存在的不安全因素,并做出及時的處理。

      4結(jié)語

      近幾年來,隨著網(wǎng)絡(luò)信息鋪天蓋地的傳播,人們對信息的及時性和有效性的要求越來越高,Web技術(shù)的靜態(tài)網(wǎng)頁內(nèi)容已經(jīng)遠(yuǎn)遠(yuǎn)滿足不了人們對于信息的追求。本文將數(shù)據(jù)庫技術(shù)與Web技術(shù)完美設(shè)計結(jié)合,實現(xiàn)了全球信息資源的交流和共享,促進(jìn)了各行業(yè)的迅猛發(fā)展。同時Web數(shù)據(jù)庫的設(shè)計成功,也激勵了企業(yè)單位的創(chuàng)新精神,建立自己的Web數(shù)據(jù)庫系統(tǒng)以積極適應(yīng)信息的快速發(fā)展。

      參考文獻(xiàn)

      篇5

      1.1虛擬數(shù)據(jù)庫的基本操作數(shù)據(jù)庫的基本操作分為插入,更新,刪除,查詢,針對每張表的操作方式,也是基于基本的四類操作,根據(jù)操作條件進(jìn)行操作,總可以將數(shù)據(jù)轉(zhuǎn)化成SQL語句進(jìn)行操作。

      1.2虛擬數(shù)據(jù)庫的實現(xiàn)虛擬數(shù)據(jù)庫操作的底層接口是各種物理數(shù)據(jù)庫提供的API,虛擬數(shù)據(jù)庫需要將這些API集中地封裝起來,并根據(jù)用戶的需求選擇使用。封裝結(jié)構(gòu)可以如下所示。示例中僅封裝了幾個常用的數(shù)據(jù)庫API,也可以根據(jù)需求追加定義其他API進(jìn)入封裝結(jié)構(gòu),也可以根據(jù)用戶需求隨時將其他數(shù)據(jù)庫API封裝進(jìn)來。

      2數(shù)據(jù)下發(fā)過程

      2.1數(shù)據(jù)正常下發(fā)過程(1)底層網(wǎng)元首先向上層網(wǎng)元上報數(shù)據(jù)資源審計請求,并將底層網(wǎng)元的數(shù)據(jù)標(biāo)識(通常為MD5校驗碼)帶給上層網(wǎng)元。(2)計算底層網(wǎng)元數(shù)據(jù)審計標(biāo)識,判斷底層數(shù)據(jù)是否與上層網(wǎng)元數(shù)據(jù)一致,如果一致,發(fā)送數(shù)據(jù)審計結(jié)果正確給底層網(wǎng)元,否則發(fā)送數(shù)據(jù)不一致給底層網(wǎng)元。(3)根據(jù)結(jié)果判斷,如果無需同步,向上層網(wǎng)元發(fā)送數(shù)據(jù)審計流程結(jié)束,如果需要同步,向上層網(wǎng)元發(fā)送數(shù)據(jù)請求,數(shù)據(jù)請求中包含請求數(shù)據(jù)表,以及數(shù)據(jù)指針,用于標(biāo)識上次請求到的數(shù)據(jù)位置。(4)按照請求數(shù)據(jù),從數(shù)據(jù)庫中取出數(shù)據(jù),以及數(shù)據(jù)指針,封裝進(jìn)數(shù)據(jù)下發(fā)包。(5)數(shù)據(jù)循環(huán)向下層網(wǎng)元發(fā)送,直到底層網(wǎng)元不在請求數(shù)據(jù)為止,同時底層網(wǎng)元上報數(shù)據(jù)審計流程結(jié)束,完成數(shù)據(jù)下發(fā)過程。

      2.2數(shù)據(jù)異常下發(fā)過程(1)底層網(wǎng)元在無法打開本地的數(shù)據(jù)庫情況下,判斷為本地數(shù)據(jù)庫已經(jīng)損壞,向上層網(wǎng)元發(fā)送數(shù)據(jù)庫崩潰通知。(2)生成下層網(wǎng)元的數(shù)據(jù)庫,根據(jù)網(wǎng)元類型,通過FTP向底層網(wǎng)元發(fā)送數(shù)據(jù)庫文件或者數(shù)據(jù)文件。(3)底層網(wǎng)元接收完成數(shù)據(jù)庫后,打開數(shù)據(jù)庫,上報數(shù)據(jù)資源審計請求。

      篇6

      中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2009)36-10176-02

      Discussion on Principles for Database Primary Key Design

      CHANG Yu-hui

      (Jiangsu Technical Teachers College, Computer Engineering, Changzhou 203001, China)

      Abstract: Primary keys are very important in databases, and .their design directly affects the application and performance of database systems. Starting from the concept of the primary key, the paper compares the commonly used design methods of the primary key, and proposes the relevant principles for primary key design.

      Key words: Database; primary key

      1 主鍵的概念及其設(shè)計主鍵的必要性

      在我們進(jìn)行數(shù)據(jù)庫設(shè)計中,不可逃避的就是要定義數(shù)據(jù)庫表的主鍵,主鍵的設(shè)計對整個數(shù)據(jù)庫的設(shè)計影響很大,因此我們不得不要重視起來。那么我們首先來看看什么是數(shù)據(jù)庫的主鍵和與它密切相關(guān)的外鍵。

      1.1 主鍵

      能夠唯一表示數(shù)據(jù)表中的每個記錄的字段或者字段的組合就稱為主鍵(主碼)。一旦確定為主鍵則該字段不可為空也不可以重復(fù)。一個主鍵是唯一識別一個表的每一記錄,但這只是其作用的一部分。主鍵的主要作用是將記錄和存放在其他表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。在這一點上主鍵是不同表中各記錄之間的簡單指針。所以主鍵的值對用戶而言是沒有什么意義并且和它要賦予的值也沒有什么特別的聯(lián)系。比如學(xué)生表中的學(xué)號就可以定義成該表的主鍵。

      1.2 外鍵

      外鍵的定義是相對于主鍵而言的若有兩個表A、B,key是A的主鍵而B中也有key字段則key就是表B的外鍵。比如另有一張成績表表中也出現(xiàn)了學(xué)生表中的對應(yīng)學(xué)號字段則相對于學(xué)生表學(xué)號就是成績表的外鍵。

      1.3 設(shè)計主鍵的必要性

      有些朋友可能不提倡數(shù)據(jù)庫表必須要主鍵,但在我的思考中,覺得每個表都應(yīng)該具有主鍵,不管是單主鍵還是雙主鍵,主鍵的存在就代表著表結(jié)構(gòu)的完整性,表的記錄必須得有唯一區(qū)分的字段,主鍵主要是用于其他表的外鍵關(guān)聯(lián),本記錄的修改與刪除,當(dāng)我們沒有主鍵時,這些操作會變的非常麻煩。主鍵除了上述作用外常常與外鍵構(gòu)成參照完整性約束防止出現(xiàn)數(shù)據(jù)不一致。所以數(shù)據(jù)庫在設(shè)計時主鍵起到了很重要的作用。

      2 主鍵設(shè)計的原則

      大家都設(shè)計過數(shù)據(jù)庫,也為表定義過主鍵,我想闡述的是,應(yīng)該如何正確的設(shè)計一個主鍵,在以往的一些資料中,都只是提了主鍵設(shè)計的方法而沒有提及到主鍵設(shè)計的原則。針對于此,我對幾種常用的設(shè)計主鍵的方法做了如下總結(jié):

      2.1 是否要采用自動遞增的方式

      對于以前談到的主鍵,要求唯一性,因此大家都用自動遞增的方式。這樣的方式是非常不可取的??赡苁菫榱朔奖悴迦胗涗洉r,不必去人為創(chuàng)建主鍵值。以為這樣會方便,其實不是的。帶來的麻煩要遠(yuǎn)遠(yuǎn)勝于這種所謂的"方便"。第一,數(shù)據(jù)導(dǎo)入不方便,經(jīng)常會有從另一系統(tǒng)導(dǎo)入數(shù)據(jù)進(jìn)來,自動遞增的主鍵,將不允許原表中的ID被導(dǎo)入進(jìn)來。這會導(dǎo)致主鍵丟失。第二,對于象訂單這樣的有主外鍵的表來說,如果訂單的"主檔表"主鍵是自動生成的,那么在保存一個訂單時,會要求對主檔表與明細(xì)表同進(jìn)行事務(wù)保存,而此時,先要生成一條訂單,然后取出這個訂單自動生成的主鍵,然后再把此作為明細(xì)表的一個外鍵,進(jìn)行明細(xì)的保存。這過程中,將變的復(fù)雜而且不可行,事務(wù)將如何處理呢?訂單主檔表插入記錄后,要是明細(xì)保存時遇到錯誤,主檔表記錄還要進(jìn)行刪除。繁瑣。插入成功以后,還要取出產(chǎn)生的最大值。這將是一個嚴(yán)重的浪費。記錄多的話會影響速度,而且會存在并行插入。導(dǎo)致獲取的記錄可能是不正確的。因此在以上的嚴(yán)重問題下,請不要采用自動遞增方式。

      2.2 是否要采用int型作為主鍵

      以前大家都采用int型作為主鍵,導(dǎo)致主鍵的值都是數(shù)字。其實我們也明白。并不是只是數(shù)字的東西就是數(shù)字型的,比如電話號碼等。因此對于主鍵采用int型的優(yōu)勢是速度快插入查詢時都可能會比其他的方式快。但我這種快的效果也未必有多明顯比如以varchar(15)為例物理主鍵排序的數(shù)據(jù)會自動以主鍵進(jìn)行物理數(shù)據(jù)排序。因此就算是字符型的數(shù)據(jù)在插入時也會插入到相應(yīng)的物理位置上也就是說在插入時可能會影響一些速度。但在以后的查詢中速度影響不會太明顯。而我要說的不采用int型作為主鍵不是說里面不存數(shù)據(jù)。我還是建議大家在主鍵中存放數(shù)字這樣的排序比較要比夾雜字母的排序來的快之所以要采用字符型也是為以后的數(shù)據(jù)導(dǎo)入作準(zhǔn)備有一天會要求從其他表導(dǎo)入數(shù)據(jù)時可以在導(dǎo)入數(shù)據(jù)的主鍵上加一個特定字母來避免與原主鍵沖突。比如在導(dǎo)入數(shù)據(jù)的主鍵前加一個“N”字母。這也就不用擔(dān)心要求導(dǎo)入數(shù)據(jù)表中的主鍵是數(shù)字型還是字符型了。

      2.3 是否采用編號來定義主鍵

      主鍵設(shè)計有個原則就是主鍵不應(yīng)具有任何實際意義,這條其實是非常重要的。有人就是覺得編號本身是唯一的可以作為主鍵用但可能會為以后帶來麻煩。因為帶有實際意義的字段還是存在被修改的可能性,而對于主鍵最大的忌諱就是修改主鍵,這可能會導(dǎo)致非常嚴(yán)重的不可估計的后果。比如學(xué)生編號平時以為永遠(yuǎn)不會修改但修改的可能還是會存在。

      還有一種表面上是唯一的但實際上應(yīng)該是允許重復(fù)的。舉個例子,訂單編號應(yīng)該是唯一吧。邏輯上是的,可是會存在這樣的情況一張原來的訂單是因為某個原因要求訂單作廢。那好給訂單的狀態(tài)標(biāo)識為"cancel"。然后允許再次錄入同樣編號的訂單。因此。對于這樣的情況下在雖然有效的訂單編號只有一個但在數(shù)據(jù)庫角度會允許編號重復(fù)。所以不管如何還是建議大家為表都建一個沒有任何意義的主鍵如ID。

      2.4 是否要采用GUID作為主鍵

      很多項目是多級建庫的,經(jīng)常需要數(shù)據(jù)導(dǎo)入、導(dǎo)出、合并很需要一套產(chǎn)生全局唯一主鍵的機制。一種方法是自己設(shè)計一套編碼規(guī)范(類似于身份證、信用卡)最好有一個統(tǒng)一編碼服務(wù)器;第二種方法也是自己產(chǎn)生主鍵為每一個獨立的數(shù)據(jù)庫分配一個NameSpace產(chǎn)生主鍵時前面加上這個NameSpace;最后一種方法就是UUID我想重點討論一下后者。

      UUID(Universally Unique Identifier)是通用惟一標(biāo)識符,是128位比特的數(shù)字,用來惟一地標(biāo)識因特網(wǎng)上的某些對象或者實體。UUID是是由開放軟件基金會(OSF)作為分布式計算環(huán)境(DCE)的一部分而制定的標(biāo)準(zhǔn)。UUIDs的目的就是使分布式系統(tǒng)可以不需要重要的中央調(diào)合系統(tǒng)而能唯一地標(biāo)識信息。這樣,任何人能創(chuàng)造一個UUID和使用它來標(biāo)識一些東西,而且,你有足夠的信心來確定這個標(biāo)識是永遠(yuǎn)不會被任何人無意地使用在任何東西上。因此,信息加上了UUID標(biāo)簽就能合并到單個數(shù)據(jù)庫中而不用去解決命名沖突的問題。這個標(biāo)準(zhǔn)的廣泛應(yīng)用在微軟的全球唯一標(biāo)識符(GUIDs)上,GUID實現(xiàn)了這個標(biāo)準(zhǔn)。

      用GUID作主鍵有它的優(yōu)勢與不足。優(yōu)勢是GUID具有唯一性,在任何情況下,可以產(chǎn)生全球唯一的值。這是GUID最大的優(yōu)勢,也方便數(shù)據(jù)導(dǎo)入,比如要求從另一個系統(tǒng)中把數(shù)據(jù)導(dǎo)入進(jìn)來,那么不用擔(dān)心導(dǎo)入時,會導(dǎo)致主鍵沖突。不足是GUID值太復(fù)雜、不易記憶,因為有時難免我們會用記錄的方式來進(jìn)行記錄判斷。而且數(shù)據(jù)太長,影響數(shù)據(jù)庫效率。GUID的產(chǎn)生不是以一定的次序產(chǎn)生,對于按主鍵物理排序的數(shù)據(jù)庫來說,如果在記錄的前部插入一條記錄,可能會導(dǎo)致后面N次方的數(shù)據(jù)條數(shù)后移。這將導(dǎo)致數(shù)據(jù)插入效率。而且這個值是隨機、無順序的。GUID的值有16個字節(jié),與其它那些諸如4字節(jié)的整數(shù)相比要相對大一些。這意味著如果在數(shù)據(jù)庫中使用unique identifier鍵,可能會帶來兩方面的消極影響,一是存儲空間增大,二是索引時間較慢。因此GUID的采用應(yīng)該要慎重。

      3 結(jié)束語

      數(shù)據(jù)庫主鍵在數(shù)據(jù)庫中具有重要的地位。主鍵的設(shè)計直接影響到數(shù)據(jù)庫系統(tǒng)的應(yīng)用和效能。數(shù)據(jù)庫主鍵的設(shè)計并沒有定論,因此,我們在設(shè)計主鍵時,因根據(jù)具體應(yīng)用的需要,綜合考慮各方面的因素,考慮數(shù)據(jù)庫的規(guī)模,以及插入、刪除、檢索等操作的頻繁來選擇合適而快捷的數(shù)據(jù)庫主鍵設(shè)計方法,從而達(dá)到優(yōu)化數(shù)據(jù)庫主鍵的目的。

      參考文獻(xiàn):

      [1] 張云濤.商業(yè)智能的設(shè)計部署與實現(xiàn)[M].北京:電子工業(yè)出版社,2004.

      篇7

      2 OFA結(jié)構(gòu)的應(yīng)用 

      OFA(最佳靈活體系結(jié)構(gòu))是Oracle數(shù)據(jù)庫用于優(yōu)化邏輯配置和性能提供的一種結(jié)構(gòu),通過OFA的利用能夠簡化Oracle數(shù)據(jù)庫物理結(jié)構(gòu)的設(shè)計,提高邏輯數(shù)據(jù)對象的分布效率。因此,首先需要根據(jù)數(shù)據(jù)庫中的邏輯對象的使用方式以及物理結(jié)構(gòu)對數(shù)據(jù)庫的影響進(jìn)行分類,這種分類包括將系統(tǒng)數(shù)據(jù)以及用戶數(shù)據(jù)分開、一般數(shù)據(jù)和索引數(shù)據(jù)分開、低活動表與高活動表分開等。數(shù)據(jù)庫邏輯設(shè)計的結(jié)果需要遵循幾點原則:(1)將使用相同方式的字段類型進(jìn)行統(tǒng)一存儲;(2)按照標(biāo)準(zhǔn)使用對數(shù)據(jù)庫系統(tǒng)進(jìn)行設(shè)計;(3)存在用于例外的分離區(qū)域;(4)表空間沖突的最小化;(3)實現(xiàn)數(shù)據(jù)字典的分離。 

      3 SGA的應(yīng)用 

      SGA(內(nèi)存分配)是Oracle數(shù)據(jù)庫中進(jìn)行內(nèi)存管理的關(guān)鍵模塊。正確的SGA大小對提高數(shù)據(jù)庫的性能具有重要作用。SGA主要包括四個部分。 

      (1)數(shù)據(jù)塊緩沖區(qū)。數(shù)據(jù)塊緩沖區(qū)是SGA中的一塊高速緩存,大約占據(jù)了整個數(shù)據(jù)庫的1%~2%左右,主要用于數(shù)據(jù)庫中經(jīng)常需要進(jìn)行訪問的數(shù)據(jù)塊,因此,采用最近最少使用的方法對其空間進(jìn)行管理。通過查詢v$sysstat動態(tài)性能表,能夠獲取到數(shù)據(jù)塊緩沖區(qū)的具體使用情況,當(dāng)命中率低于85%時,則需要為其分配更多的內(nèi)存。 

      (2)字典緩沖區(qū)。字典緩沖區(qū)中的信息主要包括用戶賬號數(shù)據(jù)、數(shù)據(jù)文件名、字段名、位置、表說明以及權(quán)限,該緩沖區(qū)也通過最近最少使用的方法進(jìn)行空間管理。通過查詢v$librarycache動態(tài)性能表,能夠獲取到字典緩沖區(qū)的具體使用情況,當(dāng)命中率低于90%時,則可能需要增加共享池的空間來提高字典的緩存速度。 

      (3)重做日志緩沖區(qū)。重做日志緩沖區(qū)保存為數(shù)據(jù)庫的恢復(fù)過程中用于前滾操作。 

      (4)SQL共享池。SQL共享池保存執(zhí)行計劃以及運行數(shù)據(jù)庫的SQL語句的語法分析樹,也采用最近最少使用的方法對其空間進(jìn)行管理。如果設(shè)置過小,就可能導(dǎo)致語句連續(xù)不斷地再裝入庫緩存,導(dǎo)致系統(tǒng)性能下降。 

      4 規(guī)范化與反規(guī)范 

      4.1 規(guī)范化 

      范式是符合某個級別的關(guān)系模式的集合,根據(jù)約束條件的差異,通常分為第一范式、第二范式和第三范式三種范式。規(guī)范化理論是以這些范式為中心建立的,規(guī)范化的基本思想是將數(shù)據(jù)依賴中不合理的部分逐步消除,從而使模式中的關(guān)系模型在一定程度上實現(xiàn)分離,因此,所謂的規(guī)范化從本質(zhì)上來看就是概念的單一化。數(shù)據(jù)庫的規(guī)范化管理,能夠進(jìn)一步減少數(shù)據(jù)冗余情況的發(fā)生,減少冗余數(shù)據(jù)對存儲空間的占用,同時調(diào)用邏輯和物理I/O的次數(shù)也會減少,提高數(shù)據(jù)操作的效率。 

      4.2反規(guī)范化 

      數(shù)據(jù)庫中數(shù)據(jù)的規(guī)范化并非一定能夠?qū)崿F(xiàn)數(shù)據(jù)庫的最優(yōu)性能,因為對數(shù)據(jù)庫的查詢通常需要更多的操作鏈接,從而對查詢速度產(chǎn)生影響。因此,在數(shù)據(jù)庫的設(shè)計過程中,有時需要對規(guī)范規(guī)則進(jìn)行故意破壞,這樣能夠在特定的情況下改進(jìn)數(shù)據(jù)庫的查詢性能,提高數(shù)據(jù)庫的相應(yīng)速度。 

      5 邏輯結(jié)構(gòu)的優(yōu)化 

      5.1 基本表的設(shè)計 

      5.1.1以用戶為中心進(jìn)行表的設(shè)計 

      當(dāng)數(shù)據(jù)模型設(shè)計不合理時,則所有的SQL調(diào)整所發(fā)揮的作用都十分有限,規(guī)范化的表設(shè)計能夠提高數(shù)據(jù)庫的靈活性并降低整個系統(tǒng)開發(fā)和運行的開銷。數(shù)據(jù)庫的完整性檢查能夠在數(shù)據(jù)庫中完成,同時也能夠通過應(yīng)用程序?qū)崿F(xiàn)。如果將數(shù)據(jù)庫完整性檢查隱藏在應(yīng)用程序中,則需要將大量的管理代碼加入到應(yīng)用程序中,同時還會導(dǎo)致服務(wù)器的信息通信量大大增加,這會在較大的程度上影響到整個系統(tǒng)的運行效率。相反,如果按照規(guī)范化理論對數(shù)據(jù)庫的邏輯結(jié)構(gòu)進(jìn)行設(shè)計,則能夠使數(shù)據(jù)庫的完整性和一致性檢查均在數(shù)據(jù)庫服務(wù)器中實現(xiàn),但是完全按照第三范式的要求進(jìn)行數(shù)據(jù)表的設(shè)計會拆分大量的表,系統(tǒng)運行過程中,服務(wù)器需要頻繁進(jìn)行多表連接,影響整個數(shù)據(jù)庫系統(tǒng)的性能。

      因此,在對數(shù)據(jù)庫表進(jìn)行設(shè)計時,需要實現(xiàn)靈活性與核心事務(wù)性能之間的相對平衡,使數(shù)據(jù)庫在盡量滿足規(guī)范化要求的同時能夠?qū)ζ渲械暮诵氖聞?wù)提供最直接的訪問路徑。比如,某個信息查詢系統(tǒng)中存在銷售表Distribution(Card、Operator)和營業(yè)廳表Office(Office、Operator)。在系統(tǒng)運行的過程中,如果有如下語句在檢索條件中以較高的頻率出現(xiàn)Where Distribution.operator=Office.operator,則可以考慮在銷售表中增加一個字段Office。顯然,如果一個operator只屬于一個office,則在新生成的銷售表中非主鍵office依賴另一非主鍵operator,這樣就與規(guī)范化理論相違背,但是通過綜合考慮,后者也是可行的。 

      5.1.2數(shù)據(jù)類型的合理使用 

      Oracle數(shù)據(jù)庫提供了非常豐富的數(shù)據(jù)類型,通過準(zhǔn)確的數(shù)據(jù)類型以及合理的數(shù)據(jù)長度對數(shù)據(jù)類型進(jìn)行定義,不但能夠有效減少數(shù)據(jù)冗余,同時還能夠提高系統(tǒng)的檢索效率。目前,常用的一些違背此原則的做法主要包括利用字符串存儲日期數(shù)據(jù)、利用BLOB型存儲文本等。要想避免這類做法,需要盡可能使用專門的數(shù)據(jù)類型對相應(yīng)的數(shù)據(jù)進(jìn)行存儲,即日期型存儲日期數(shù)據(jù)、數(shù)值型存儲數(shù)值等。另外,在滿足需求的情況下應(yīng)該盡量減少占用空間。比如,數(shù)據(jù)能夠采用Int型表示時,就不要使用Float型。在部分?jǐn)?shù)據(jù)庫中,如果無法確定數(shù)據(jù)長度,通常對其進(jìn)行最大長度定義,這種方式通常會嚴(yán)重影響數(shù)據(jù)庫系統(tǒng)的性能。 

      5.2 索引的優(yōu)化設(shè)計 

      5.2.1管理組織索引 

      索引的建立能夠?qū)崿F(xiàn)對數(shù)據(jù)表中的邏輯值的安全映射,使其映射到安全的RowID。因此,通過建立索引的方式可以快速定位數(shù)據(jù)的物理地址。但是部分DBA發(fā)現(xiàn),建立大型數(shù)據(jù)表的索引,往往會影響系統(tǒng)的性能,導(dǎo)致這種情況發(fā)生主要是由于SGA管理方式所引起的。Oracle數(shù)據(jù)庫在管理數(shù)據(jù)塊高速緩存時,索引數(shù)據(jù)往往能夠獲得更高的內(nèi)存駐留權(quán)限,而在與普通數(shù)據(jù)競爭內(nèi)存空間時,數(shù)據(jù)庫往往會優(yōu)先將普通數(shù)據(jù)移出內(nèi)存空間。針對建立索引的大型數(shù)據(jù)庫而言,在進(jìn)行數(shù)據(jù)查詢的過程中,索引數(shù)據(jù)可能會使用所有的數(shù)據(jù)塊緩存空間,導(dǎo)致數(shù)據(jù)庫頻繁地從磁盤中進(jìn)行數(shù)據(jù)的讀取,影響系統(tǒng)性能。對此,在建立一個大型表進(jìn)行分區(qū)之后,可以按照分區(qū)建立分區(qū)索引,如果大型表的索引數(shù)據(jù)查詢頻率過高,則可以不建立索引。另外,DBA在建立索引時,需要保證where語句中對建立的索引進(jìn)行應(yīng)用。由于索引必須指向適合的訪問路徑,因此在查詢過程中如果簡單的指定一個索引,則并不一定能夠取得優(yōu)化效果。 

      5.2.2聚簇 

      如果兩個或者多個表需要進(jìn)行查詢連接,則可以考慮建立聚簇。比如,對通話信息表Dial(caller,receiver,time,length)和電話信息表Phone(name,address,number),如果下列檢索語句在檢索條件中經(jīng)常出現(xiàn)Where receiver=‘123456’AND Dial.caller=Phone.number,則能夠產(chǎn)生聚簇,在產(chǎn)生聚簇之后,兩個表的物理存儲結(jié)構(gòu)會產(chǎn)生一定的變化,通話信息和電話信息的記錄將會混合存儲到一起,每個電話信息記錄后面是該電話所撥打的所有電話記錄。因此,如果能夠確定Dial和Phone之間基于電話號碼存在頻發(fā)的連接,則可以采用一種聚簇文件結(jié)構(gòu)提高兩個表之間的連接效率。但是聚簇結(jié)構(gòu)不利于兩個表的單獨查詢,因此,在設(shè)計中需要對該邏輯結(jié)構(gòu)謹(jǐn)慎使用。 

      5.2.3索引被使用的條件 

      優(yōu)化設(shè)置的索引,必須充分利用才能夠?qū)崿F(xiàn)數(shù)據(jù)庫訪問速度的進(jìn)一步提高。Oracle要使用一個索引,有一些最基本的條件:第一,Where子句中的這個字段,必須與索引的第1個字段相符合;第二,Where子句中的這個字段不應(yīng)該參與到任何形式的計算中。 

      6 物理結(jié)構(gòu)的優(yōu)化 

      Oracle數(shù)據(jù)庫物理存儲結(jié)構(gòu)的優(yōu)化對于提高數(shù)據(jù)庫的性能非常重要,物理結(jié)構(gòu)的優(yōu)化就是依靠提高磁盤讀寫的并行度、減少存儲的動態(tài)擴展來實現(xiàn)數(shù)據(jù)庫系統(tǒng)的性能優(yōu)化。 

      6.1 磁盤讀寫的并行優(yōu)化 

      磁盤I/O是數(shù)據(jù)庫訪問開銷的重要指標(biāo)之一,數(shù)據(jù)庫物理結(jié)構(gòu)的優(yōu)化雖然無法減少從磁盤中讀寫數(shù)據(jù)的次數(shù),但是可以通過并行化的方式,減少對此磁盤讀寫的競爭,從而提高系統(tǒng)的性能。提高磁盤讀寫并行化需要遵循兩點基本原則:(1)將系統(tǒng)的SYSTEM、TEMP、ROLLBACK、REDO LOG表空間盡量放在不同物理磁盤中,能夠有效減少系統(tǒng)進(jìn)程與用戶進(jìn)程對I/O的競爭;(2)為表以及索引分別創(chuàng)建不同的表空間,并分別部署到不同的磁盤上,對于實現(xiàn)表和索引的并行訪問十分有利。 

      6.2 減少存儲的動態(tài)擴展 

      當(dāng)數(shù)據(jù)庫建立的時候如果沒有分配足夠的存儲空間以及合理的增幅長度,則存儲結(jié)構(gòu)在運行階段會形成動態(tài)擴展。在動態(tài)擴展過程中,需要通過SQL語句存取數(shù)據(jù)字典,以實現(xiàn)對空閑空間的利用,這個過程需要消耗較長的時間,還可能導(dǎo)致數(shù)據(jù)文件和表空間增加。這可能導(dǎo)致本來處于正常運行狀態(tài)的系統(tǒng)的性能出現(xiàn)突然之間的大幅度下降。因此,在系統(tǒng)設(shè)計階段,需要綜合計算存儲空間大小、增幅長度和最大值,并在此基礎(chǔ)上對INITIAL、NEXT以及MINEXTENTS的值進(jìn)行定義,實現(xiàn)數(shù)據(jù)庫物理存儲和動態(tài)增長次數(shù)的平衡。 

      7 結(jié)束語 

      Oracle數(shù)據(jù)庫的庫結(jié)構(gòu)直接決定了數(shù)據(jù)庫系統(tǒng)的性能,優(yōu)良的庫結(jié)構(gòu)對于提高系統(tǒng)的性能具有重要作用,因此對整個庫結(jié)構(gòu)的優(yōu)化也是數(shù)據(jù)庫性能優(yōu)化的基礎(chǔ),低劣的結(jié)構(gòu)則可能導(dǎo)致整個優(yōu)化無法發(fā)揮作用。良好的數(shù)據(jù)庫系統(tǒng)不是靠調(diào)試產(chǎn)生的,而是需要優(yōu)秀的設(shè)計,在Oracle數(shù)據(jù)庫設(shè)計階段就對整個系統(tǒng)的任務(wù)和需求進(jìn)行充分的計算,不僅能夠為應(yīng)用程序的開發(fā)提供便利,同時還能使運行維護(hù)工作大大簡化。 

      篇8

      一、前言

      數(shù)據(jù)庫是承載數(shù)據(jù)的載體,存放和提供數(shù)據(jù)的“庫房”,為我們進(jìn)行數(shù)據(jù)查詢、修改、管理等操作提供便利。建立數(shù)據(jù)庫可以幫我們提升工作效率,通常適合較為龐大的系統(tǒng)數(shù)據(jù)存儲。

      例如,國網(wǎng)新疆電力目前覆蓋全疆14個地州(市),涉及用戶達(dá)2000多萬人口,管理40多個部門和下屬單位。這么復(fù)雜的機構(gòu)需要高效穩(wěn)定的IT系統(tǒng)支撐國網(wǎng)新疆電力公司。國網(wǎng)新疆電力目前有多個IT系統(tǒng),比較重要的系統(tǒng)有綜合管理數(shù)據(jù)庫、營銷系統(tǒng)數(shù)據(jù)庫、ODS系統(tǒng)、財務(wù)系統(tǒng)。這么多系統(tǒng)數(shù)據(jù)日增長量超過2TB,這需要有效的優(yōu)化手段解決數(shù)據(jù)庫的性能問題。

      目前通用的方式為采用Oracle數(shù)據(jù)庫來對這些數(shù)據(jù)進(jìn)行存儲管理,面對廠里人員的變動則需要進(jìn)行數(shù)據(jù)更新,隨著系統(tǒng)長期運行、用戶數(shù)和數(shù)據(jù)量不斷增大以及業(yè)務(wù)不斷變化,系統(tǒng)運行期間就會涉及到數(shù)據(jù)庫優(yōu)化。本文就從Oracle數(shù)據(jù)庫優(yōu)化進(jìn)行簡單的討論,針對在優(yōu)化過程中的一些注意事項、優(yōu)化事項進(jìn)行分析,為我們在工作中能夠熟練的掌握優(yōu)化技術(shù)。

      二、Oracle數(shù)據(jù)庫介紹

      Oracle數(shù)據(jù)庫,英文全名為Oracle Data-base,又被稱為Oracle RDBMS或者直接簡稱為Oracle。目前最流行的B/S和C/S架構(gòu)的系統(tǒng)中均應(yīng)用到了數(shù)據(jù)庫,由于它們的架構(gòu)設(shè)計中都具有自己的服務(wù)器,而數(shù)據(jù)存在這些服務(wù)器中,則需要數(shù)據(jù)庫對其進(jìn)行儲存。目前對于數(shù)據(jù)庫的使用越來越廣泛,隨著人們對于數(shù)據(jù)庫的研究越來越深入,逐漸出現(xiàn)了數(shù)據(jù)庫云,將計算機的云計算應(yīng)用到了數(shù)據(jù)庫之中,這樣使得多個數(shù)據(jù)庫聯(lián)合組成了更加龐大的數(shù)據(jù)庫網(wǎng),它們之間實現(xiàn)了數(shù)據(jù)共享,因此對于知識、信息的涵蓋將會變得更廣。云計算的實現(xiàn),帶給計算機網(wǎng)絡(luò)發(fā)展巨大的空間,使得將世界的計算機聯(lián)合起來形成一層一層的網(wǎng)絡(luò),與此同時也將數(shù)據(jù)庫采用云管理,為數(shù)據(jù)庫的發(fā)展提供更加廣闊的空間[1]。

      三、數(shù)據(jù)庫優(yōu)化方案介紹

      多數(shù)研究者在面對Oracle數(shù)據(jù)庫優(yōu)化課題時,都會存在這樣的思想誤區(qū),即認(rèn)為只有在系統(tǒng)出現(xiàn)運行問題時才需要進(jìn)行系統(tǒng)性能調(diào)整。而事實上,對Oracle數(shù)據(jù)庫的性能進(jìn)行調(diào)整和優(yōu)化是一個漫長而復(fù)雜的過程,是貫穿于整個系統(tǒng)運行周期的。因此,在進(jìn)行系統(tǒng)性能優(yōu)化時,應(yīng)按照以下流程來進(jìn)行:對系統(tǒng)各功能組件和硬件設(shè)備進(jìn)行正確的配置對數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行調(diào)整對SQL語句進(jìn)行優(yōu)化調(diào)整參數(shù)進(jìn)行磁盤I/O與服務(wù)器網(wǎng)絡(luò)性能的調(diào)整。以上流程是一個密切聯(lián)系的整體,只有保證嚴(yán)格按照這一流程進(jìn)行Oracle數(shù)據(jù)庫系統(tǒng)性能調(diào)整,才能確保系統(tǒng)的性能達(dá)到最佳狀態(tài),真正實現(xiàn)Oracle數(shù)據(jù)庫的優(yōu)化設(shè)計。

      圖1所示是進(jìn)行數(shù)據(jù)庫優(yōu)化時需要考慮的內(nèi)容。優(yōu)化是數(shù)據(jù)庫體系的延續(xù),數(shù)據(jù)庫的結(jié)構(gòu)和運行的機制決定了數(shù)據(jù)庫的優(yōu)化模式,所以說數(shù)據(jù)庫的體系結(jié)構(gòu)是優(yōu)化的基石。如果對數(shù)據(jù)庫的體系結(jié)構(gòu)有深刻的理解,優(yōu)化便水到渠成。反過來,通過優(yōu)化數(shù)據(jù)庫,可以更深入的了解數(shù)據(jù)庫體系結(jié)構(gòu)。數(shù)據(jù)庫各個方面都有優(yōu)化的余地,主要的優(yōu)化方向分為實例的優(yōu)化、數(shù)據(jù)庫的優(yōu)化、SQL語句的優(yōu)化。其中SQL優(yōu)化是重中之重。

      對Oracle數(shù)據(jù)庫進(jìn)行優(yōu)化,應(yīng)該遵循優(yōu)化SQL查詢語句――索引優(yōu)化――合理分布數(shù)據(jù)庫物理文件――分析及優(yōu)化Oracle內(nèi)存分配原則。具體如下:

      (一)SQL查詢優(yōu)化

      SQL查詢,主要針對數(shù)據(jù)庫的信息進(jìn)行搜索,尋找自己的需求信息。數(shù)據(jù)庫內(nèi)的一切操作都是經(jīng)由SQL語句進(jìn)行執(zhí)行,因此SQL語句的執(zhí)行效率很大程度上決定了Oracle數(shù)據(jù)庫的性能。進(jìn)行SQL語句的優(yōu)化,首先應(yīng)該構(gòu)建原始數(shù)據(jù)庫BASICPROJECT,其中包含了與生產(chǎn)數(shù)據(jù)庫基本一致的數(shù)據(jù)庫對象;其次,應(yīng)該充分的利用SQL Trace、awrsqrpt、sqlplus中的autotrace、explain等跟蹤技術(shù)對語句進(jìn)行優(yōu)化重寫 [4]。我們在建立SQL語句的時候要盡量的避免出現(xiàn)相關(guān)子查詢,以及選擇語句的使用,這樣就能從數(shù)據(jù)建立的時候減輕查詢的負(fù)擔(dān)。針對聯(lián)合查詢連接遇到5張或者5張表單以上的選擇時,建議采用優(yōu)化器對SQL語句中所包含的表單進(jìn)行物理大小排序,建立起一定的查詢順序,來提升查詢的效率。

      (二)索引優(yōu)化分析

      索引技術(shù)是提升檢索速度和系統(tǒng)性能的主要技術(shù),對于數(shù)據(jù)查詢來說,合理使用索引可以極大的提高查詢的命中率和效率。索引是將表中數(shù)據(jù)的邏輯值映射到rowid中,所以在查詢時使用索引功能能夠快速的定位出查詢數(shù)據(jù)的物理地址,從而找出數(shù)據(jù)。

      索引對數(shù)據(jù)庫的性能影響是巨大的,但索引不是萬能的,數(shù)據(jù)庫對索引的使用是有選擇的,我們可以強制使用索引,也可以強制不使用索引。一般的情況下數(shù)據(jù)庫會自動的判斷是否使用索引,除非你明確的在SQL語句中指定。

      所有索引的原形都是樹狀結(jié)構(gòu),由根、枝干和葉子組成。根和枝干中存放鍵值范圍的導(dǎo)引指針,葉子中存放的是條目,條目中存放的是索引的鍵值和該數(shù)據(jù)行ROWID。索引的葉子間通過指針橫向的聯(lián)系在一起,前一個葉子指向下一片葉子,這樣的目的是數(shù)據(jù)庫在找到一個葉子后就可以查找相臨近的葉子,而不必再次去查找根和枝干的數(shù)據(jù)塊。

      有的DBA發(fā)現(xiàn)了索引并不能提高查詢速度,反而對整個數(shù)據(jù)庫的性能有較大的不良影響,出現(xiàn)該問題主要是和SGA數(shù)據(jù)管理方式有關(guān)。當(dāng)Oracle進(jìn)行數(shù)據(jù)高速緩存管理時,普通數(shù)據(jù)的駐留權(quán)限要比索引數(shù)據(jù)的權(quán)限要低,當(dāng)兩者在空間上競爭時,索引數(shù)據(jù)往往會駐留;如果是大型表建立索引時,索引數(shù)據(jù)占了大部分的緩存空間,使Oracle只能通過磁盤讀寫來獲得數(shù)據(jù),所以在大型表分區(qū)后,伴隨索引也得進(jìn)行相應(yīng)分區(qū),索引的使用應(yīng)該有一個指定的合適路徑[5]。

      (三)分布表空間

      在整個數(shù)據(jù)庫工作過程中,各相關(guān)進(jìn)程會將數(shù)據(jù)庫中的事務(wù)分別寫到聯(lián)機日志文件、歸檔日志文件和數(shù)據(jù)文件當(dāng)中,這會不可避免的造成這三類文件之間的I/O沖突;并且歸檔日志文件因其特殊性,無法同系統(tǒng)、業(yè)務(wù)和索引這些表空間共存,這就需要一個獨立的磁盤來完成合理分布表空間的功能,對各項數(shù)據(jù)進(jìn)行合理的分配,以避免文件之間的I/O沖突。

      (四)數(shù)據(jù)緩沖區(qū)的調(diào)整分析

      數(shù)據(jù)庫的緩沖區(qū)是SGA不可缺少的組成部分,它的作用是對磁盤的讀入數(shù)據(jù)進(jìn)行存儲,存儲的數(shù)據(jù)為用戶共享。如果需要修改數(shù)據(jù)時,首先要從數(shù)據(jù)文件中將數(shù)據(jù)讀取出來存儲在數(shù)據(jù)緩沖區(qū);如果用戶對數(shù)據(jù)緩沖區(qū)的設(shè)置太小,那么數(shù)據(jù)的操作性能將會受到很大的影響。用戶越多,該問題越突出,該問題的出現(xiàn)使得很多人去關(guān)心如何判斷數(shù)據(jù)緩沖區(qū)大小,如何確定緩沖區(qū)的效率,該類問題可以通過計算命中率來進(jìn)行確認(rèn)。

      數(shù)據(jù)緩沖區(qū)V$sysstat中的consistent_gets、db_block_gets是consistent mode和current mode模式下的數(shù)據(jù)讀取總量,physical reads是整個磁盤物理數(shù)據(jù)讀取總量,這兩個數(shù)據(jù)的讀取總量的比值就是所謂的命中率,如果兩個數(shù)據(jù)比值<90%,那么就需要對該緩沖區(qū)大小進(jìn)行調(diào)整[2]。

      (五)共享池調(diào)整分析

      共享池同樣也是SGA的重要組成部分,它主要包含了數(shù)據(jù)字典高速緩存與庫高速緩存,這兩者的作用是對整個SQL程序進(jìn)行語法分析、編譯以及執(zhí)行。

      庫高速緩存中會將解析過的SQL語句、PL/SQL(存儲過程、函數(shù)、包)進(jìn)行緩存。如果為了工作的需要,將解析過的SQL信息重用會提高整個數(shù)據(jù)庫的性能,可以將解析過的SQL信息存儲在共享池中,這就需要共享池的設(shè)置要足夠的大。通過對V$librarycache查詢實例來觀察整個庫高速度緩存的活動情況,其中的reloads和pins,它們分別是庫高速緩存執(zhí)行階段的未命中數(shù)目和庫高速緩存中被執(zhí)行的次數(shù),如果庫緩沖區(qū)的失敗率超過的1%,那么就需要對其進(jìn)行調(diào)整。除此之外,還有些情況也需要共享池的設(shè)置要大,字典數(shù)據(jù)高速緩存的總丟失數(shù)和總的存取數(shù)的比值應(yīng)該接近零,當(dāng)這個數(shù)值超過10%,那么就需要對其進(jìn)行調(diào)整。如將表定義的詳細(xì)信息長期的存儲在共享池中,將其進(jìn)行重用,提高數(shù)據(jù)庫的整體性能[3]。

      通過V$rowcache來對數(shù)據(jù)字典高速緩存活動進(jìn)行詳細(xì)查詢,其中的get misses和gets分別代表的是字典數(shù)據(jù)讀取的失敗和成功次數(shù),通常要求的比值小于10%,若超過則需要進(jìn)行及時的調(diào)整。

      (六)日志緩沖區(qū)優(yōu)化方案

      日志緩沖區(qū)主要是保存了對數(shù)據(jù)庫修改信息,設(shè)置的大小一般為2兆以內(nèi)的內(nèi)存,最小為500K。日志緩沖區(qū)也不能過小,否則會增加日志的寫盤次數(shù),從而為I/O接口增加負(fù)擔(dān)。日志緩沖區(qū)中的常見指令為:immediate gets表示成功立即得到日志緩沖區(qū)次數(shù);immediate misses 則表示未成功立即獲取日志緩沖區(qū)次數(shù)。V$latch中的gets和misses表示成功獲得緩沖日志次數(shù)以及未成功獲得日志緩沖區(qū)次數(shù),其失敗率要小于1%,如果超出則需要對數(shù)據(jù)庫進(jìn)行調(diào)整。

      (七)合理的使用工具

      有時候想直接在SQLPLUS中看ASH/ADDM/AWR報告,用下面方法比較方便,因為AWR數(shù)據(jù)在數(shù)據(jù)庫中默認(rèn)只保留7天,當(dāng)我們進(jìn)行性能對比分析需要保留時段之前的AWR時,可以采用腳本定時將AWR報告輸出保存。

      ASH (Active Session History)

      ASH以V$SESSION為基礎(chǔ),每秒采樣一次,記錄活動會話等待的事件。不活動的會話不會采樣,采樣工作由新引入的后臺進(jìn)程MMNL來完成。

      生成ASH報告:

      SQLPLUS>@?/rdbms/ashrpt.sql

      ASH內(nèi)存記錄數(shù)據(jù)始終是有限的,為了保存歷史數(shù)據(jù),引入了自動負(fù)載信息庫(Autom-atic Workload Repository ,AWR) 由后臺進(jìn)程MMON完成。ASH信息同樣被采集寫出到AWR負(fù)載庫中。由于內(nèi)存不是足夠的,所以MMNL進(jìn)程在ASH寫滿后會將信息寫出到AWR負(fù)載庫中。ASH全部寫出是不可接受的,所以一般只寫入收集的10%的數(shù)據(jù)量,而且使用direct-path insert完成,盡量減少日志的生成,從而最小化數(shù)據(jù)庫性能影響。

      寫出到AWR負(fù)載庫的ASH信息記錄在AWR的基礎(chǔ)表wrh$active_session_hist中,wrh$active_session_hist是一個分區(qū)表,Oracle會自動進(jìn)行數(shù)據(jù)清理。

      AWR(Automatic Workload Repository)自動工作負(fù)載信息庫

      AWR是Oracle 10g中的一個新特性,類似于10g以前的statspack。不過在使用上要比statspack簡單,提供的性能指標(biāo)要比statspack多很多,能更好的幫助DBA來發(fā)現(xiàn)數(shù)據(jù)庫的性能瓶頸。

      AWR 是Oracle安裝好后自動啟動的,不需要特別的設(shè)置。收集的統(tǒng)計信息存儲在SYSAUX表空間SYS模式下,以WRM$_*和WRH$_*的格式命名, 默認(rèn)會保留最近7天收集的統(tǒng)計信息。每個小時將收集到的信息寫到數(shù)據(jù)庫中,這一系列操作是由一個叫MMON的進(jìn)程來完成的。

      AWR存儲的數(shù)據(jù)分類:

      WRM$表存儲AWR的元數(shù)據(jù)(awrinfo.sql腳本)

      WRH$表存儲采樣快照的歷史數(shù)據(jù)(awrrpt.sql腳本)

      WRI$表存儲同數(shù)據(jù)庫建議功能相關(guān)的數(shù)據(jù)(ADDM相關(guān)數(shù)據(jù))

      生成AWR報告:

      SQL>@?/rdbms/admin/awrrpt

      根據(jù)向?qū)硗瓿葾WR報告的生成。需要注意的是,在選擇時間范圍的時候,中間不能有停機(如果顯示的中間有空白行,表示有停機情況)。在選擇報告類型的時候一般使用默認(rèn)的HTML,方便查看。

      查看數(shù)據(jù)庫的AWR的設(shè)置:

      SQL> select snap_interval, retention from dba_hist_wr_control;

      SNAP_INTERVAL

      RETENTION

      --------------------------------- ----------------------------------

      +00000 01:00:00.0(每小時收集一次) +00007 00:00:00.0(保留7天)

      修改默認(rèn)設(shè)置:

      begin

      DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 20,

      retention => 2*24*60);

      end;

      修改成每20分鐘收集一次統(tǒng)計量,保留最近的2天統(tǒng)計量信息。

      手動收集一次數(shù)據(jù)庫的統(tǒng)計信息:

      exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;

      我們還可以通過DBMS_WORKLOAD_REPOSITORY包完成對基線、默認(rèn)設(shè)置的修改等操作。

      ADDM (Automatic Database Diagnostic Monitor AWR)

      是Oracle內(nèi)部的一個顧問系統(tǒng),能夠自動的完成最數(shù)據(jù)庫的一些優(yōu)化的建議,給出SQL 的優(yōu)化、索引的創(chuàng)建、統(tǒng)計量的收集等建議。

      ADDM報告生成:

      SQLPLUS>@?/rdbms/addmrpt.sql

      Oracle 性能調(diào)整最重要的就是對最影響性能的SQL的調(diào)整。在一個應(yīng)用中,能夠影響到數(shù)據(jù)庫的只有SQL,也只能是SQL。我們不能一味依靠增強硬件,修改系統(tǒng)、數(shù)據(jù)庫參數(shù)來提高數(shù)據(jù)庫的性能,更多的應(yīng)該關(guān)注那些最影響性能的SQL語句。ASH報告、AWR報告、ADDM報告都是能夠找出最影響性能的SQL語句的工具。 在分析ASH報告、AWR報告的時候,最重要的就是關(guān)注SQL Statistics,SQL Statistics中最應(yīng)該關(guān)注的是SQL ordered by Gets和SQL ordered by Reads兩個指標(biāo)。大量的Gets(邏輯讀)會占用大量的CPU時間,大量的Reads(物理讀)會引起IO的瓶頸出現(xiàn)。一般情況下,大量的Gets會伴隨著大量的Reads出現(xiàn)。當(dāng)然,我們可以通過增大SGA的大小來減少Reads的量。通過這兩個指標(biāo)找到了最影響性能的SQL,這是首要的,也是必要的。下一步就可以通過創(chuàng)建索引,調(diào)整SQL來提高SQL單獨執(zhí)行的性能,減少SQL執(zhí)行時出現(xiàn)的高Gets,Reads。當(dāng)然整體的性能影響還和excutions有關(guān),如果這條SQL執(zhí)行的次數(shù)過多,累加起來的量很大,那么就可以考慮通過在應(yīng)用上緩存等手段來減少SQL執(zhí)行的次數(shù)。另外還有一個需要注意的問題就是在開發(fā)過程中SQL一定要使用綁定變量,來減少硬解析(大量的硬解析也會消耗大量的CPU時間,占用大量的Latch)。在開發(fā)過程中有個原則就是:小事務(wù)操作完成及時提交。

      我們使用這么多種方式、報告只有一個目的:找出最影響系統(tǒng)性能的SQL語句。找到SQL下一步就是對它進(jìn)行調(diào)整了。

      我們在監(jiān)控數(shù)據(jù)庫時,如果是當(dāng)前正在發(fā)生的問題,我們可以通過v$session+v$sqlarea來找出性能最差的SQL語句。如果在一個小時以內(nèi)發(fā)生的我們可以通過生成ASH報告來找出SQL。如果是1小時以上或幾天我們可以通過AWR報告來找出幾小時,幾天以來最影響系統(tǒng)的SQL語句。ADDM報告基于AWR庫,默認(rèn)可以保存30天的ADDM報告。

      我們也可以直接查詢試圖:

      v$session (當(dāng)前正在發(fā)生)

      v$session_wait (當(dāng)前正在發(fā)生)

      v$session_wait_history

      (會話最近的10次等待事件)

      v$active_session_history

      (內(nèi)存中的ASH采集信息,理論為1小時)

      wrh$_active_session_history (寫入AWR庫中的ASH信息,理論為1小時以上)

      dba_hist_active_sess_history (根據(jù)wrh$_active_session_history生成的視圖)

      四、總結(jié)語

      企業(yè)中使用Orcale數(shù)據(jù)庫來儲存數(shù)據(jù),有效的改善了以前對于企業(yè)信息數(shù)據(jù)處理的問題。有效的節(jié)約了信息處理資源,且采用Orcale數(shù)據(jù)庫將所有的員工等信息進(jìn)行備份,方便以后查詢,若數(shù)據(jù)庫的數(shù)據(jù)不丟失,那么則能夠通過查詢進(jìn)行查詢。本文主要針對Oracle數(shù)據(jù)庫進(jìn)行介紹,然后根據(jù)數(shù)據(jù)庫中的內(nèi)容進(jìn)行優(yōu)化,為以后企業(yè)在數(shù)據(jù)庫的優(yōu)化上提供借鑒。

      參考文獻(xiàn)

      [1]溫創(chuàng)新.電視廣告商務(wù)平臺中Oracle數(shù)據(jù)庫的ADICI設(shè)計與優(yōu)化研究[D].中南大學(xué),2011.

      [2]王斌.基于Oracle數(shù)據(jù)庫技術(shù)的航行情報系統(tǒng)(CNMS)性能優(yōu)化[D].電子科技大學(xué),2010.

      [3]張舒.超大型Oracle數(shù)據(jù)庫的基礎(chǔ)設(shè)計和優(yōu)化設(shè)計[J].價值工程,2011,10:178.

      篇9

      2元數(shù)據(jù)的定義和形成

      元數(shù)據(jù)又叫做描述數(shù)據(jù),是臺灣學(xué)者通過英文翻譯過來的(英文為Metadata),現(xiàn)在我國對該術(shù)語還沒有形成統(tǒng)一的認(rèn)識。國際標(biāo)準(zhǔn)化組織地理信息、地球空間信息技術(shù)委員會的地理信息元數(shù)據(jù)標(biāo)準(zhǔn)草案將元數(shù)據(jù)簡單的定義為“數(shù)據(jù)的數(shù)據(jù)”。美國聯(lián)邦地理數(shù)據(jù)委員會在數(shù)字地理空間元數(shù)據(jù)內(nèi)容標(biāo)準(zhǔn)中將元數(shù)據(jù)定義為“關(guān)于數(shù)據(jù)的內(nèi)容、質(zhì)量、條件和其他性質(zhì)的數(shù)據(jù)”。國際地球科學(xué)信息網(wǎng)絡(luò)學(xué)會對元數(shù)據(jù)定義為“關(guān)于數(shù)據(jù)和信息資源的描述信息,他們描述、指向或者補充與之相關(guān)的信息內(nèi)容”。元數(shù)據(jù)的定義和專業(yè)術(shù)語出現(xiàn)的時間雖然不長,但是元數(shù)據(jù)的本質(zhì)內(nèi)涵確實流傳了很久。舉一個簡單的例子,在很早以前的圖書管理當(dāng)中,管理人員對書籍目錄的編寫,記載了書籍的各種相信內(nèi)容,包括作者、寫作時間、頁數(shù)和字?jǐn)?shù)等,這種對書籍信息的記錄就可以理解為元數(shù)據(jù)。只不過在以前涉及到的數(shù)據(jù)不是特別復(fù)雜,只是到了現(xiàn)代隨著網(wǎng)絡(luò)技術(shù)的普及,數(shù)字資源呈現(xiàn)出爆炸性增長的速度,人們?yōu)榱吮阌诮y(tǒng)計這些數(shù)字信息不得不將以前的文本化數(shù)據(jù)向網(wǎng)絡(luò)表格化數(shù)據(jù)方面進(jìn)行轉(zhuǎn)變。從上世紀(jì)八十年代開始出現(xiàn)元數(shù)據(jù)的記錄方式,到現(xiàn)在元數(shù)據(jù)的應(yīng)用已經(jīng)擴展到了各個行業(yè)。

      3元數(shù)據(jù)標(biāo)準(zhǔn)內(nèi)容分析

      根據(jù)元數(shù)據(jù)的使用目的不同可以將元數(shù)據(jù)大體分為兩類,即:管理和組織數(shù)據(jù)的元數(shù)據(jù);瀏覽和導(dǎo)航數(shù)據(jù)的元數(shù)據(jù)。第一種類型的元數(shù)據(jù)的代表就是美國nasa描述遙感數(shù)據(jù)的目錄交換格式標(biāo)準(zhǔn)(DIF),這一標(biāo)準(zhǔn)有一個典型的特征就是必備六個字段:登錄目錄標(biāo)識、登錄目錄的名稱、參數(shù)、原數(shù)據(jù)中心(包含名字、數(shù)據(jù)集標(biāo)識、聯(lián)系人等)和數(shù)據(jù)概要描述。另外,為了讓信息表達(dá)的更加明確,這一標(biāo)準(zhǔn)當(dāng)中還要增加字段,如傳感器的名字、位置、數(shù)據(jù)分析、計劃口令、品質(zhì)等,增加這些字段可以提高用戶的使用效率,盡可能的完善元數(shù)據(jù)。第二種元數(shù)據(jù)的代表就是澳大利亞新西蘭土地信息委員會制定的元數(shù)據(jù)標(biāo)準(zhǔn)。這一標(biāo)準(zhǔn)確立的核心元素較少,能夠讓用戶在最短的時間內(nèi)查詢到所需要的數(shù)據(jù)信息。核心元素能夠說明現(xiàn)有數(shù)據(jù)的種類、數(shù)據(jù)信息、數(shù)據(jù)范圍、與其他應(yīng)用的作用,以及獲取更多信息的位置等。核心元數(shù)據(jù)共分為九類三十二個元素:數(shù)據(jù)集中、展示、數(shù)據(jù)時間、數(shù)據(jù)狀況、訪問和瀏覽情況、數(shù)據(jù)品質(zhì)、聯(lián)系信息、元數(shù)據(jù)時間、元數(shù)據(jù)附加內(nèi)容。除此之外,核心元數(shù)據(jù)還要制定了數(shù)據(jù)格式,使用指南,以方便用戶查找信息。

      4元數(shù)據(jù)表達(dá)方式的分析

      美國聯(lián)邦地理數(shù)據(jù)委員會的數(shù)字化地理空間元數(shù)據(jù)內(nèi)容標(biāo)準(zhǔn)元數(shù)據(jù)信息單元是元素、實體(包括復(fù)合實體)和字集。元素是元數(shù)據(jù)的基本信息單位,元數(shù)據(jù)實體由元數(shù)據(jù)元素組成,元數(shù)據(jù)實體、元素則構(gòu)成復(fù)合實體,最終部分元素、簡單或者復(fù)合元數(shù)據(jù)實體組成元數(shù)據(jù)子集,元數(shù)據(jù)的組成結(jié)構(gòu)從小到大排列為,元素、實體(復(fù)合實體)、子集。元數(shù)據(jù)是利用巴克斯諾爾范式進(jìn)行表達(dá)的,巴克諾斯?fàn)柗妒娇梢远x常規(guī)語言元素和屬性標(biāo)準(zhǔn)語法,在確定復(fù)合實體和其他元素、實體間的聯(lián)系的時候,采用類似于數(shù)學(xué)等式的關(guān)系將標(biāo)識符和表達(dá)式用等號連接起來,以此來表表達(dá)式產(chǎn)生標(biāo)識符這一進(jìn)化關(guān)系。這一規(guī)則公式代表了各種符合的意義,從數(shù)學(xué)角度可以解釋為,A=B+(C)表示A由B和可選項C構(gòu)成,A=3{B}5表示A由B重復(fù)3到5次而成,子集、實體、元素之間的關(guān)系可以用元素比實體進(jìn)一格的辦法來表達(dá),美國的數(shù)字化地理空間元數(shù)據(jù)內(nèi)容標(biāo)準(zhǔn)利用這種方式可以清晰的表達(dá)數(shù)據(jù)實體和元素之間的各種關(guān)系,但是它也只是包含了標(biāo)準(zhǔn)化當(dāng)中元數(shù)據(jù)和元素的定義,并沒有規(guī)定數(shù)據(jù)的格式,有時候用元數(shù)據(jù)元素分層縮排來表示,有時候用編號系統(tǒng)表示,這就使得元數(shù)據(jù)使用起來并不簡潔。為了解決這一問題,建立了空間數(shù)據(jù)信息交換網(wǎng)絡(luò),利用比較統(tǒng)一的SGML、Z39.50和其他協(xié)議來表示,可以更加靈活的執(zhí)行元數(shù)據(jù)。ISO/TC211的元數(shù)據(jù)標(biāo)準(zhǔn)利用了圖表和數(shù)據(jù)字典相融合的表達(dá)方式,清晰的表示了元數(shù)據(jù)內(nèi)容之間的各種關(guān)系。數(shù)據(jù)字典可以詳細(xì)的解釋元數(shù)據(jù)的內(nèi)涵,圖表則是面向?qū)ο蟮慕y(tǒng)一建模語言UML靜態(tài)結(jié)構(gòu)圖、ISO借口定義語言,在圖表當(dāng)中信息單位是包、類和屬性。數(shù)據(jù)字典當(dāng)中元數(shù)據(jù)的信息單元是子集、實體以及元素,這一標(biāo)準(zhǔn)說明了圖表和字典當(dāng)中的對應(yīng)關(guān)系。因為靜態(tài)結(jié)構(gòu)圖準(zhǔn)確的解釋了元數(shù)據(jù)的語義和句法結(jié)構(gòu)規(guī)則,制定了標(biāo)準(zhǔn)的描述數(shù)據(jù)信息的方法和格式,通過輔助設(shè)計軟件可以精確的表達(dá)數(shù)據(jù)元素關(guān)系,檢查元數(shù)據(jù)設(shè)計的整體性和統(tǒng)一性,所以ISO/TC211的元數(shù)據(jù)表達(dá)方式對全世界各個行業(yè)的數(shù)據(jù)管理和服務(wù)產(chǎn)生了重要的影響。

      5元數(shù)據(jù)網(wǎng)絡(luò)管理模型分析

      當(dāng)下比較流行的元數(shù)據(jù)管理系統(tǒng)模式可以分為:集中式數(shù)據(jù)管理體系和分散式數(shù)據(jù)管理體系。集中式數(shù)據(jù)管理體系就是所有的元數(shù)據(jù)都聚集在一個元數(shù)據(jù)管理站點上,數(shù)據(jù)集元數(shù)據(jù)是通過數(shù)據(jù)制造者免費上傳的,數(shù)據(jù)的使用者可以通過當(dāng)下的數(shù)據(jù)管理站來進(jìn)行訪問好查詢元數(shù)據(jù)。這一模式比較有代表性的就是英國地理數(shù)描述目錄,這一機構(gòu)的數(shù)據(jù)來源于國家制圖機構(gòu)。這種模式的優(yōu)點就是使用者可以迅速的查找元數(shù)據(jù),工作效率很高,當(dāng)然缺點也很明顯,就是這一模式分裂了這一管理系統(tǒng)和其他網(wǎng)絡(luò)元數(shù)據(jù)體系的鏈接,導(dǎo)致這一體系的元數(shù)據(jù)數(shù)目較少,在數(shù)據(jù)信息的更新和維護(hù)方面就取決于元數(shù)據(jù)的上傳者,元數(shù)據(jù)信息不能及時的更新,提供的數(shù)據(jù)有可能出現(xiàn)錯誤。分布式元數(shù)據(jù)管理體系就是要設(shè)立一個元數(shù)據(jù)網(wǎng)絡(luò)交換的核心連接點,使用者可以在這一連接點進(jìn)行元數(shù)據(jù)的查詢,而對于元數(shù)據(jù)的供給者和元數(shù)據(jù)的數(shù)據(jù)制造者,則需要設(shè)立分節(jié)點,保存各種元數(shù)據(jù)的信息,然后將核心連接點和分節(jié)點聯(lián)系起來。元數(shù)據(jù)的使用者不能直接訪問數(shù)據(jù)的制造者,只能通過核心連接點來訪問數(shù)據(jù)信息,進(jìn)行元數(shù)據(jù)的查詢。這一模式的代表性機構(gòu)就是美國空間數(shù)據(jù)交換網(wǎng)絡(luò),它將用戶、服務(wù)器內(nèi)容、數(shù)據(jù)庫服務(wù)器進(jìn)行了分離。通過網(wǎng)關(guān)根據(jù)數(shù)據(jù)信息的類型、數(shù)據(jù)信息覆蓋位置等條件構(gòu)成元數(shù)據(jù)的查詢界面,用戶通過網(wǎng)絡(luò)進(jìn)行查詢,核心連接點通過用戶信息向分節(jié)點進(jìn)行傳輸,然后在將內(nèi)容反饋到用戶瀏覽的頁面當(dāng)中。這種模式的優(yōu)點在于能夠增加元數(shù)據(jù)的數(shù)量,減少核心連接點對元數(shù)據(jù)的更新負(fù)擔(dān),缺點在于元數(shù)據(jù)的查詢速度較慢,影響使用者的查詢效率。

      6元數(shù)據(jù)傳輸各式的統(tǒng)一

      雖然當(dāng)前已經(jīng)制定了一些元數(shù)據(jù)的標(biāo)準(zhǔn),但也只是確定了元數(shù)據(jù)的內(nèi)容、含義、類別、組成結(jié)構(gòu)等特征,但是這還不能滿足元數(shù)據(jù)的使用要求,制訂元數(shù)據(jù)標(biāo)準(zhǔn)的目的是為了元數(shù)據(jù)的查找和檢索,了解數(shù)據(jù)信息和內(nèi)容,因此必須要注重元數(shù)據(jù)的傳輸標(biāo)準(zhǔn),以此為基礎(chǔ)來設(shè)計元數(shù)據(jù)的管理體系,從而達(dá)到對元數(shù)據(jù)的搜尋、修改、更新維護(hù)和查詢檢索。在DOS環(huán)境下和ARC/INFO環(huán)境下,美國誕生了很多元數(shù)據(jù)錄入和編輯的軟件,澳大利亞也開發(fā)類似的軟件,這些元數(shù)據(jù)軟件都是為了便于自身的查詢需求,符合各自制定的元數(shù)據(jù)標(biāo)準(zhǔn)的。但是各個元數(shù)據(jù)錄入軟件的數(shù)據(jù)格式卻不相同,有的是文本格式,有的是HTML格式,還有的是關(guān)系型數(shù)據(jù)庫格式,雖然方便了用戶,但是在元數(shù)據(jù)的修改和維護(hù)方面成本很高,所以要制定統(tǒng)一的元數(shù)據(jù)轉(zhuǎn)化標(biāo)準(zhǔn),方便網(wǎng)絡(luò)上的元數(shù)據(jù)交換。美國和澳大利亞建議更改統(tǒng)一的后綴格式,例如,將SGML/HTML的統(tǒng)一轉(zhuǎn)換成XMLDTD或者是XMLSchema,將表格改編成ASCII的格式。這種方式優(yōu)點在于有利于建設(shè)元數(shù)據(jù)索引和能夠在不同地區(qū)的互聯(lián)網(wǎng)當(dāng)中進(jìn)行元數(shù)據(jù)的查詢。

      7元數(shù)據(jù)管理平臺設(shè)計和實現(xiàn)

      7.1功能流程設(shè)計

      功能流程設(shè)計需要滿足元數(shù)據(jù)生命周期的要求,當(dāng)前大多數(shù)公司單位都是分散式的數(shù)據(jù)管理體系,數(shù)據(jù)比較分散,需要采集多元數(shù)據(jù)并且簡化數(shù)據(jù)的存儲體系??梢詫SV(三層階梯式圖)引用到元數(shù)據(jù)管理體系當(dāng)中,在元數(shù)據(jù)導(dǎo)入配置方面,可以利用懸掛點配置的方式,在任務(wù)采集的起始階段可以配置相應(yīng)的懸掛點(類似分支點),建設(shè)元數(shù)據(jù)的查詢樹,在數(shù)據(jù)源配置方面要表明數(shù)據(jù)源的類型、銜接數(shù)據(jù)、賬戶情況等,還要進(jìn)行測試觀察后續(xù)問題。為了更好的完善元數(shù)據(jù)的管理體系,保持元數(shù)據(jù)地圖的完整性,需要對元數(shù)據(jù)進(jìn)行完備的采集,采集方式又分為手動采集和自動采集。手動采集是對用戶要求的數(shù)據(jù)庫進(jìn)行單次采集,自動采集則額外的配置采集時間和采集周期。

      7.2元數(shù)據(jù)的瀏覽

      將配置好的懸掛點體現(xiàn)在元數(shù)據(jù)的樹狀結(jié)構(gòu)當(dāng)中,以形象的結(jié)果提供給用戶,基于TSV的思想元數(shù)據(jù)樹需要具有三層以上的結(jié)構(gòu),首先是系統(tǒng),其次是各系統(tǒng)數(shù)據(jù)庫,再者是各數(shù)據(jù)庫的下屬表。在庫級元數(shù)據(jù)方面需要展示各個表名和創(chuàng)立的時間,在表級元數(shù)據(jù)方面需要雙擊查看該表的詳細(xì)信息,包括字段、約束、索引、鍵、視圖等,在下拉菜單當(dāng)中可以檢索相應(yīng)的元數(shù)據(jù)信息。在字段級元數(shù)據(jù)方面包括字段名、字段類型、字段解釋、所屬的表和庫,前三項屬于特點描述,后兩項是定義描述,這樣能夠方便對字段進(jìn)行分析和定位。

      7.3元數(shù)據(jù)的構(gòu)架設(shè)計

      篇10

      中圖分類號:TP311.13 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2012)09-0186-02

      在現(xiàn)在通信行業(yè)業(yè)務(wù)支撐系統(tǒng)建設(shè)中,由于數(shù)據(jù)庫數(shù)據(jù)量的巨大,通常會根據(jù)不同業(yè)務(wù)模塊建設(shè)成分布式數(shù)據(jù)庫。如將計費帳務(wù)系統(tǒng)中數(shù)據(jù)可以按清單查詢提供、前臺帳務(wù)營收、計費處理、報表統(tǒng)計等劃分,分布到不同的數(shù)據(jù)庫實例,這樣,通過模塊化的數(shù)據(jù)分流,減輕了單一數(shù)據(jù)庫的資源壓力,均衡了負(fù)載,提高了各應(yīng)用模塊程序的效能。

      同時,各數(shù)據(jù)庫實例作為一個整體,存在一定的耦合性,分布的數(shù)據(jù)庫之間的存在不同程度的相互溝通。如統(tǒng)計數(shù)據(jù)需要采集清單數(shù)據(jù)、營收帳務(wù)數(shù)據(jù),計費處理時需要訪問客戶資料數(shù)據(jù)等。這些操作如果通過數(shù)據(jù)庫之間進(jìn)行操作就涉及到跨庫操作的問題。

      作為一個整體系統(tǒng)中的分布式數(shù)據(jù)庫之間存在跨庫操作是非常普遍的,尤其是數(shù)據(jù)庫鏈接、同義詞和存儲過程的跨庫操作在應(yīng)用程序中廣泛使用,這些給應(yīng)用程序的設(shè)計實現(xiàn)帶來了極大的方便,同時,從安全的角度也帶來了一些問題。下面從安全管理的角度針對跨庫操作進(jìn)行一些討論。

      1、數(shù)據(jù)庫鏈接(DATABASE LINK)

      數(shù)據(jù)庫鏈接是在分布式環(huán)境下,為了訪問遠(yuǎn)程數(shù)據(jù)庫而創(chuàng)建的數(shù)據(jù)通信鏈路。通過數(shù)據(jù)庫鏈接隱藏了對遠(yuǎn)程數(shù)據(jù)庫訪問的復(fù)雜性。數(shù)據(jù)庫之間通過數(shù)據(jù)庫鏈接的創(chuàng)建,使得登陸到本地數(shù)據(jù)庫上的用戶可以訪問遠(yuǎn)程數(shù)據(jù)庫上的數(shù)據(jù)或進(jìn)行其他跨庫操作??梢哉f,跨庫操作實現(xiàn)的基礎(chǔ)就是數(shù)據(jù)庫鏈接的使用。

      創(chuàng)建數(shù)據(jù)庫鏈接的語句如下:

      CREATE DATABASE LINK 鏈接名 CONNECT TO 賬戶 IDENTIFIED BY 口令 USING 服務(wù)名;

      數(shù)據(jù)庫鏈接建立測試成功后,就可以采用以下形式來訪問遠(yuǎn)程用戶的表:

      表名@數(shù)據(jù)庫鏈接名

      例如:在局域網(wǎng)上創(chuàng)建和使用數(shù)據(jù)庫鏈接。

      首先:在本地數(shù)據(jù)庫網(wǎng)絡(luò)服務(wù)名配置文件(tnsnames.ora)中添加遠(yuǎn)端數(shù)據(jù)庫的服務(wù)名,假定服務(wù)名為remotedb。

      然后:登錄本地數(shù)據(jù)庫,執(zhí)行創(chuàng)建數(shù)據(jù)庫鏈接命令:

      CREATE DATABASE LINK link_rmt1 CONNECT TO scott IDENTIFIED BY tiger USING 'remotedb';

      測試是否可以使用:

      SELECT sysdate FROM dual@link_rmt1;

      如果正常返回遠(yuǎn)端數(shù)據(jù)庫的系統(tǒng)時間,則數(shù)據(jù)庫鏈接正常建立。

      這里有兩個問題需要注意,一是遠(yuǎn)端數(shù)據(jù)庫scott帳戶的權(quán)限,二是public參數(shù)。

      建立數(shù)據(jù)庫鏈接用到的遠(yuǎn)端數(shù)據(jù)庫帳戶的權(quán)限對跨庫操作有很大的影響,從一定意義上說,跨庫操作的安全級別就是由這個帳戶所決定的。本地用戶在本地數(shù)據(jù)庫可以進(jìn)行的操作,只要這個數(shù)據(jù)庫鏈接用戶擁有這些權(quán)限,本地用戶同樣可以用于遠(yuǎn)端數(shù)據(jù)庫進(jìn)行操作(通過數(shù)據(jù)庫鏈接是不可以進(jìn)行DDL操作的,如create、drop、truncate等)。本例中,如本地用戶擁有resources權(quán)限,在本地數(shù)據(jù)庫可以對自己的對象進(jìn)行DML(update、delete、insert)操作。在數(shù)據(jù)庫鏈接用戶scott具有update any tables權(quán)限的情況下,本地用戶是可以對遠(yuǎn)端數(shù)據(jù)庫進(jìn)行update any tables操作的,如

      UPDATE scott2.test_table@link_rmt1 SET state=’YES’;

      即在本地數(shù)據(jù)庫只能對自己所屬對象進(jìn)行DML操作的權(quán)限限制,在遠(yuǎn)端數(shù)據(jù)庫則沒有這個限制了。

      其次,在對public參數(shù)使用上,也是要比較注意的。Public參數(shù)在數(shù)據(jù)庫中處于較低的級別,幾乎不可能對登陸數(shù)據(jù)庫用戶進(jìn)行限制訪問。建立了public數(shù)據(jù)庫鏈接,就等于承認(rèn)在數(shù)據(jù)庫鏈接的權(quán)限范圍內(nèi),遠(yuǎn)端數(shù)據(jù)庫對本地數(shù)據(jù)庫所有用戶都是開放的。

      再者,在測試庫等管理相對開放的數(shù)據(jù)庫用權(quán)限較大的帳戶建立了數(shù)據(jù)庫鏈接,必將成為遠(yuǎn)端數(shù)據(jù)庫管理的安全漏洞。

      所以,在進(jìn)行數(shù)據(jù)庫設(shè)計時,應(yīng)該嚴(yán)格控止public參數(shù)的數(shù)據(jù)庫鏈接的建立;其次,建立的數(shù)據(jù)庫鏈接盡量避免使用具有DML權(quán)限的用戶;然后,對數(shù)據(jù)庫中的密碼定期進(jìn)行修改也可起到一定修補安全漏洞的效果。

      2、同義詞(SYNONYM)

      同義詞是數(shù)據(jù)庫方案對象的一個別名,經(jīng)常用于簡化對象訪問和提高對象訪問的安全性。在Oracle數(shù)據(jù)庫中的大部分?jǐn)?shù)據(jù)庫對象,如表、視圖、同義詞、序列、存儲過程、函數(shù)、JAVA類、包等,都可以根據(jù)實際情況為他們定義同義詞。同義詞可以分兩類,分別是公用同義詞與私有同義詞。公用同義詞由一個特殊的用戶組Public所擁有,數(shù)據(jù)庫中所有的用戶都可以使用公用同義詞。私有同義詞是由創(chuàng)建他的用戶或者方案所有。

      使用同義詞有以下優(yōu)點,可以實現(xiàn)在不同的數(shù)據(jù)庫用戶之間的無縫交互,不同用戶在訪問時都使用同一個名稱;可以創(chuàng)建指向遠(yuǎn)端數(shù)據(jù)庫的對象,簡化了遠(yuǎn)程數(shù)據(jù)庫的對象的訪問;可以為不存在的對象創(chuàng)建同義詞,為應(yīng)用開發(fā)提供了方便。

      創(chuàng)建同義詞語句:

      CREATE OR REPLACE SYNONYM 同義詞名 FOR 對象名;

      跨庫操作使用遠(yuǎn)程的數(shù)據(jù)庫上的表的同義詞,如下語句:

      CREATE SYNONYM customer_t FOR erp.customer_t@remotedb;

      在使用同義詞時,Oracle數(shù)據(jù)庫將它翻譯成對應(yīng)方案對象的名字。用戶使用同義詞訪問對象可以分兩部分,使用同義詞和訪問對象。例如,PUBLIC同義詞是數(shù)據(jù)庫中所有用戶都可以使用的,但是要想實際訪問到數(shù)據(jù),還必須有訪問原本對象的權(quán)限。如果沒有同義詞指向的表的操作權(quán)限,就會遇到報錯信息“ora-00942: table or view does not exist”。

      在跨庫同義詞的管理上,首先,要注意使用公用同義詞,避免同義詞和其他對象名稱的重疊,如本地庫中的表和指向遠(yuǎn)程數(shù)據(jù)庫的表的同義詞名稱一樣,可能就會在操作時造成一定混淆;其次,要注意同義詞操作權(quán)限的賦予,盡量避免DML操作,當(dāng)然,跨庫同義詞的操作權(quán)限是同數(shù)據(jù)庫鏈接的權(quán)限相關(guān)的。

      3、存儲過程(PROCEDURES)

      數(shù)據(jù)庫中過程是一個PL/SQL塊描述,它存儲在數(shù)據(jù)字典中并可被應(yīng)用調(diào)用。

      存儲過程在分布式數(shù)據(jù)庫環(huán)境下,可以分兩部分理解,

      一個是跨庫調(diào)用存儲過程,二是在存儲過程中使用了數(shù)據(jù)庫鏈接或者跨庫同義詞。

      跨庫調(diào)用存儲過程在實際應(yīng)用中很少用到。當(dāng)然,用不到更好。因為跨庫存儲過程的調(diào)用有很多限制,會發(fā)生意想不到的錯誤事件,如DDL操作在跨庫操作時是不允許的;同時,由于執(zhí)行跨庫存儲過程調(diào)用對本地用戶和數(shù)據(jù)庫鏈接用戶的權(quán)限要求都比較高,也不利于數(shù)據(jù)庫權(quán)限的管理。

      在本地存儲過程中使用到數(shù)據(jù)庫鏈接或者跨庫同義詞在分布式數(shù)據(jù)庫環(huán)境的應(yīng)用中是經(jīng)常用到的。好處是它可以增加數(shù)據(jù)庫之間的耦合性,減少了設(shè)計難度,尤其是跨庫同義詞的使用,對程序的編寫也提供了方便。缺點是,為了使用的方便而忽略了安全的考慮,如 public數(shù)據(jù)庫鏈接、public同義詞的使用,遠(yuǎn)端數(shù)據(jù)庫DML權(quán)限的賦予等。因為這些設(shè)計是應(yīng)用的基礎(chǔ),后期發(fā)現(xiàn)安全問題再去修復(fù)將花費相當(dāng)?shù)臅r間和代價。

      4、結(jié)語

      跨庫操作方便了大型應(yīng)用系統(tǒng)分布式數(shù)據(jù)庫之間的互訪性,同時,也帶了安全隱患,只有從數(shù)據(jù)庫管理的基礎(chǔ)層面考慮,將設(shè)計基于安全層面之上,才能使應(yīng)用得到充分的施展,也能將數(shù)據(jù)得到有效的保障。

      參考文獻(xiàn)

      篇11

      近年來,隨著Web技術(shù)的蓬勃發(fā)展,人們已不滿足于只在瀏覽器上獲取靜態(tài)的信息,想要通過它發(fā)表意見、查詢數(shù)據(jù)。隨著電子商務(wù)的普及人們開始參與一些網(wǎng)絡(luò)商務(wù)活動,這就迫切需要實現(xiàn)Web與數(shù)據(jù)庫的互連[1]。產(chǎn)品異地并行設(shè)計對數(shù)據(jù)的要求有一定的特殊性,主要有(1)產(chǎn)品數(shù)據(jù)多種多樣。產(chǎn)品設(shè)計,特別是機械產(chǎn)品設(shè)計常常是大型而又復(fù)雜,在異地通過不同的設(shè)計小組,按不同的分工設(shè)計同一產(chǎn)品,所要管理和通訊的數(shù)據(jù)類型隨著分工的不同而有不同的表現(xiàn)形式,如常規(guī)的數(shù)字組成的數(shù)據(jù)集,以圖形、圖象形式表達(dá)的產(chǎn)品模型數(shù)據(jù),以文字形式描述設(shè)計的文檔,還有圖表、公式等形式,復(fù)雜多樣。(2)產(chǎn)品數(shù)據(jù)交換頻繁,流量大。產(chǎn)品設(shè)計是一個協(xié)同工作的創(chuàng)造性集體智慧凝聚的過程,要使設(shè)計順利進(jìn)行,分布在異地的不同設(shè)計小組之間就要經(jīng)常性地進(jìn)行數(shù)據(jù)交換,并且有些形式表達(dá)的產(chǎn)品數(shù)據(jù)是較大的文件。(3)產(chǎn)品數(shù)據(jù)的一致性要求高。分工合作的不同設(shè)計小組之間的設(shè)計任務(wù)是彼此關(guān)聯(lián),互相依賴的。如果其中一個數(shù)據(jù)改變了,相關(guān)聯(lián)的數(shù)據(jù)必須跟著改變,在Web數(shù)據(jù)庫設(shè)計時必須考慮數(shù)據(jù)的一致性問題。(4)產(chǎn)品數(shù)據(jù)的并發(fā)性訪問頻繁。由于異地產(chǎn)品設(shè)計的特殊屬性,數(shù)據(jù)的并發(fā)性訪問非常頻繁。所以,進(jìn)行基于Internet的產(chǎn)品異地并行設(shè)計的Web數(shù)據(jù)庫設(shè)計與一般的電子商務(wù)不同,要充分考慮以上屬性。本文結(jié)合我們近期開發(fā)的機械產(chǎn)品異地并行設(shè)計系統(tǒng)(RCDS, Remote Concurrent Design System),綜合比較了多種當(dāng)今流行的網(wǎng)絡(luò)數(shù)據(jù)存取技術(shù),設(shè)計出可靠安全的數(shù)據(jù)庫系統(tǒng)。

      1.1數(shù)據(jù)庫連接方案選擇

      RDO、DAO和ADO是比較常見的Web數(shù)據(jù)庫訪問技術(shù)。

      DAO (Data Access Objects) 數(shù)據(jù)訪問對象是第一個面向?qū)ο蟮慕涌冢?Microsoft Jet 數(shù)據(jù)庫引擎(由 Microsoft Access 所使用),并允許 Visual Basic 開發(fā)者通過 ODBC 象連接到其他數(shù)據(jù)庫一樣,直接訪問到 Access 表。DAO 最適用于單系統(tǒng)應(yīng)用程序或小范圍本地分布使用,對大范圍的異地并行設(shè)計顯得功能不夠強大。

      RDO (Remote Data Objects) 遠(yuǎn)程數(shù)據(jù)對象是一個到 ODBC 的、面向?qū)ο蟮臄?shù)據(jù)訪問接口,它同易于使用的 DAO style組合在一起,提供了一個接口,形式上展示出所有 ODBC 的底層功能和靈活性。RDO 在訪問 Jet 或 ISAM 數(shù)據(jù)庫方面有一定的限制,而且它只能通過現(xiàn)存的 ODBC 驅(qū)動程序來訪問關(guān)系數(shù)據(jù)庫。但是,RDO 已被證明是許多 SQL Server、Oracle

      以及其他大型關(guān)系數(shù)據(jù)庫開發(fā)者經(jīng)常選用的最佳接口。RDO 提供了用來訪問存儲過程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對象、屬性,以及方法。對異地并行設(shè)計Web數(shù)據(jù)庫來說也不是十分理想。

      ADO(ActiveX Data Objects)為ActiveX組件中數(shù)據(jù)庫訪問組件,ASP就是通過它實現(xiàn)對數(shù)據(jù)庫的訪問。ADO 是 DAO、RDO 的后繼產(chǎn)物。ADO 2.0在功能上與 RDO 更相似,而且一般來說,在這兩種模型之間有一種相似的映射關(guān)系。ADO “擴展”了 DAO 和 RDO 所使用的對象模型,這意味著它包含較少的對象、更多的屬性、方法(和參數(shù)),以及事件。例如,ADO 沒有與 rdoEngine 和 rdoEnvironment 對象相等同的對象,可以包含 ODBC 驅(qū)動程序管理器和 hEnv 接口。盡管事實上接口可能是通過 ODBC OLE DB 服務(wù)提供程序?qū)崿F(xiàn)的,但目前也不能從 ADO 中創(chuàng)建 ODBC 數(shù)據(jù)源。ADO 是為 Microsoft最新和最強大的數(shù)據(jù)訪問范例 OLE DB 而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)咏涌凇LE DB 為任何數(shù)據(jù)源提供了高性能的訪問,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫、電子郵件和文件系統(tǒng)、文本和圖形、自定義業(yè)務(wù)對象等等。ADO 在關(guān)鍵的 Internet 方案中使用最少的網(wǎng)絡(luò)流量,并且在前端和數(shù)據(jù)源之間使用最少的層數(shù),所有這些都是為了提供輕量、高性能的接口。同時 ADO 使用了與 DAO和 RDO相似的約定和特性,簡化的語義使它更易于學(xué)習(xí)。

      ADO最早是在IIS中引入的,主要用于ASP,用ADO可以使服務(wù)器端的腳本通過ODBC存取和操縱數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)。使用ADO的對象可以建立和管理數(shù)據(jù)庫的連接,從數(shù)據(jù)庫服務(wù)器請求和獲取數(shù)據(jù),執(zhí)行更新、刪除、添加數(shù)據(jù)、獲取ODBC的錯誤信息等。ADO是ASP方案中最具吸引力的數(shù)據(jù)庫連接控件,它為用戶提供了連接任何兼容ODBC的數(shù)據(jù)庫以及創(chuàng)建全功能數(shù)據(jù)庫應(yīng)用程序的能力。

      ADO具有簡單易用、高速、占用資源少等的優(yōu)點。不同于DAO和RDO,ADO有著更高的執(zhí)行效率。ADO 對象模型如圖1a所示。每個 Connection、Command、Recordset 和 Field 對象都有 Properties 集合,如圖1b所示。

      a)

      b)

      圖1 ADO對象模型及屬性

      應(yīng)該說,ADO是微軟的下一代數(shù)據(jù)庫連接技術(shù),用來全面取代RDO和DAO的數(shù)據(jù)訪問工具。從發(fā)展趨勢來看,ADO今后將逐步替代老的DAO特別是RDO數(shù)據(jù)訪問接口,成為新的遠(yuǎn)程數(shù)據(jù)訪問方法。所以,選擇ADO作為產(chǎn)品異地并行設(shè)計的Web數(shù)據(jù)庫接口技術(shù)是合適的。

      1.2 ADO應(yīng)用分析

      ADO 并不是自動和現(xiàn)存的數(shù)據(jù)訪問應(yīng)用程序代碼兼容的。當(dāng) ADO 封裝 DAO 和 RDO 的功能性的時候,必須將許多語言要素轉(zhuǎn)換為 ADO 語法。在某些情況下,這將意味著要對現(xiàn)存代碼的某些功能做一個簡單轉(zhuǎn)換。在其他情況下,最佳的做法可能是用 ADO 的新功能重寫該應(yīng)用程序。

      包含在 DAO 和 RDO 模型中的許多功能被合并為單個對象,這樣就生成了一個簡單得多的對象模型。然而,由于這個原因,起初可能會覺得找到合適的 ADO 對象、集合、屬性、方法,或事件非常困難。與 DAO 和 RDO不同的是,盡管 ADO 對象是分層結(jié)構(gòu)的,但在分層結(jié)構(gòu)范圍之外也是可以創(chuàng)建的。同時,也應(yīng)當(dāng)注意,ADO 當(dāng)前并不支持 DAO 的所有功能。ADO 主要包括 RDO 風(fēng)格的功能性,以便和 OLE DB 數(shù)據(jù)源交互,另外還包括遠(yuǎn)程和 DHTML 技術(shù)。

      一般說來,在 ADO 的演化過程中,馬上把大多數(shù) DAO 應(yīng)用程序(except possibly是那些使用 ODBCDirect 的應(yīng)用程序)移植到 ADO 上為時太早,因為當(dāng)前的 ADO 并不支持?jǐn)?shù)據(jù)定義 (DDL)、用戶、組等等。不過,如果只將 DAO 用于客戶—服務(wù)器應(yīng)用程序,并不依賴于 Jet 數(shù)據(jù)庫引擎或不使用 DDL,那么就可能移植到 ADO。最終,Microsoft 將提供一個 ADO DDL 組件來幫助進(jìn)行 DAO 到 ADO 的移植,并為 OLE DB 供應(yīng)商提供一般的 DDL 支持。

      在ASP中使用ADO技術(shù)來訪問Web數(shù)據(jù)庫,其應(yīng)用前景是無可估量的。原理圖如下:

      圖2 ADO在ASP程序中的應(yīng)用

      常見的數(shù)據(jù)庫類型有面向?qū)ο蟮臄?shù)據(jù)庫(OODB)和關(guān)系型數(shù)據(jù)庫。OODB對主流數(shù)據(jù)庫應(yīng)用開發(fā)來說是相當(dāng)新穎的,使用OODB使應(yīng)用程序中的數(shù)據(jù)對象與現(xiàn)實世界中的對象一一對應(yīng),面向?qū)ο髷?shù)據(jù)庫擴充了對象模型。一個常用的對象模型是由對象數(shù)據(jù)庫管理組(ODMG)開發(fā)出來,具有比傳統(tǒng)的關(guān)系數(shù)據(jù)庫更優(yōu)越的性能,但畢竟在目前還是一種探索階段,暫時還未有相應(yīng)的技術(shù)普及。

      關(guān)系數(shù)據(jù)庫已經(jīng)是數(shù)據(jù)庫體系的世界標(biāo)準(zhǔn)。當(dāng)開發(fā)一個數(shù)據(jù)驅(qū)動應(yīng)用程序時,大多數(shù)情況下用戶需要訪問網(wǎng)絡(luò)(如Internet、Intranet等)上的數(shù)據(jù)信息,就RCDS就是建立在網(wǎng)絡(luò)的信息通訊之上,是完全的客戶機/服務(wù)器應(yīng)用程序。

      SQL Server是一個可縮放、高性能的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它的設(shè)計是為了滿足分布式客戶/服務(wù)器計算的需要,允許客戶應(yīng)用程序使用幾個特定的工具和技術(shù)控制從服務(wù)器檢索的數(shù)據(jù)。這些包括觸發(fā)器、存儲過程和規(guī)則的選項。因此,系統(tǒng)采用MS SQL Server7.0作為后臺數(shù)據(jù)庫。

      數(shù)據(jù)模型通常有層次模型、網(wǎng)狀模型、關(guān)系模型及OO(面向?qū)ο螅┠P偷?。其中關(guān)系模型是建立在數(shù)學(xué)概念基礎(chǔ)之上的一種模型,由若干個關(guān)系框架組成的集合,它也是到目前為止最為成熟的一種數(shù)據(jù)庫類型。本文RCDS采用MS SQL Server作為后臺數(shù)據(jù)庫,根據(jù)數(shù)據(jù)庫工具和數(shù)據(jù)庫特點,開發(fā)出一套可靠健壯的數(shù)據(jù)存儲方案。

      整個數(shù)據(jù)庫共有AdminData、ChatNames、DesignUnits、Message、OnlineUnits、Products、RqtTasks、RqtTaskUnits、RqtDesignUnits、ShareData、Tasks、TaskUnits和UploadFiles等表格。在建立數(shù)據(jù)模型的時候首先考慮是要避免重復(fù)數(shù)據(jù),也就是建立規(guī)范化數(shù)據(jù)庫。規(guī)范化數(shù)據(jù)庫可以通過被稱為范式水平的指標(biāo)來衡量,級別有第一范式、第二范式和第三范式,通常第三范式就是要達(dá)到的目標(biāo),因為它提供了數(shù)據(jù)冗余和開發(fā)簡易性之間的最好折衷。

      RCDS數(shù)據(jù)庫正是按照第三范式標(biāo)準(zhǔn)來設(shè)計的,它保證了模型的精簡和表格的緊湊性。而第三范式標(biāo)準(zhǔn)也最大發(fā)揮了關(guān)系數(shù)據(jù)庫的優(yōu)勢,圖3是部分表格的視圖鏈接情況。

      圖3 關(guān)系表格視圖 4.1 并發(fā)控制的處理 在多個用戶同時訪問一個數(shù)據(jù)庫時就產(chǎn)生并發(fā)問題,特別是在其中一些用戶對數(shù)據(jù)庫有添加或刪除修改等操作時,那么其他所獲得的數(shù)據(jù)可能是一塌糊涂,甚至造成整個數(shù)據(jù)訪問的沖突、終止,從而使系統(tǒng)發(fā)生混亂以至崩潰。RCDS采用的解決辦法是鎖定技術(shù),總體上分為共享鎖定和排它鎖定兩種類型(如圖4)。前者是指同時有幾個過程共享一個鎖定,比如一個用戶(或客戶)正在讀取一個數(shù)據(jù),雖然在這之前他已經(jīng)對該數(shù)據(jù)設(shè)置了鎖(LOCK),但其他用戶同樣可以(也只能是)讀取它。而排他鎖定一般應(yīng)用于對數(shù)據(jù)進(jìn)行修改或更新(包括添加刪除等)操作,即是用戶在修改一個數(shù)據(jù)之前設(shè)置了鎖定,在一定的時間里其他用戶是不能訪問到該數(shù)據(jù)的,只有等待鎖定解除(UNLOCK)才能進(jìn)行訪問到它,當(dāng)然在計算機處理的時候,其他的用戶一般是感覺不到有這個等待時間的。通過這樣的處理,就保證了數(shù)據(jù)的一致性。

      a) 共享鎖定

      b) 排它鎖定

      圖4 安全鎖定類型

      在ADO進(jìn)行數(shù)據(jù)庫操作時,它的鎖定類型相對來說復(fù)雜一些。打開記錄集時,可以指定鎖定類型。鎖定類型決定了當(dāng)不止一個用戶同時試圖改變一個記錄時,數(shù)據(jù)庫應(yīng)如何處理。ADO中的鎖定主要有以下四種類型:

      l AdLockReadOnly 指定你不能修改記錄集中的記錄

      l AdLockPessimistic 指定在編輯一個記錄時,立即鎖定它

      l AdLockOptimstic 指定只有調(diào)用記錄集的Update方法時,才鎖定記錄

      l AdLockBatchOptimstic 指定記錄只能成批地更新

      在缺省情況下,記錄集使用只讀鎖定。要指定不同的鎖定類型,可以在打開記錄集時包含這些鎖定常量之一。部分代碼如下:

      … …

      Set MyConn=Sever.CreateObject(“ADODB.Connection”)

      //定義數(shù)據(jù)庫連接MyConn

      Set RS=Sever.CreateObject(“ADODB.RecordSet”)

      //定義返回數(shù)據(jù)記錄集

      MyConn.Open “ByktDB.dsn”//建立應(yīng)用程序與數(shù)據(jù)源的連接

      RS.Open “SELECT * FROM Mytable”, MyConn, adOpenDynamic, adLockPessimistic

      //進(jìn)行數(shù)據(jù)庫操作,并且設(shè)置鎖定

      RS.Close

      MyConn.Close

      … …

      數(shù)據(jù)的安全因素除了前面所提到的并行控制之外,還要考慮事務(wù)處理。網(wǎng)絡(luò)數(shù)據(jù)庫有其不同的地方,例如:假設(shè)某個時間有一個設(shè)計人員在你的站點上索取一些設(shè)計信息,有關(guān)的設(shè)計信息存儲在兩個表中。一個表用來保存該設(shè)計者的信息,另一個表包含了要索取的設(shè)計信息。該設(shè)計人員的信息已經(jīng)輸入了第一個表中。但是,就在這時,發(fā)生了意外情況,一道閃電擊中了你的服務(wù)器,使第二個表沒有被更新。在這種情況下,一個健壯的系統(tǒng)就必須保證最后的結(jié)果是兩個表都沒有被更新過。這時候事務(wù)處理就發(fā)揮了重要的功效。

      使用事務(wù)處理,你可以防止第二個表沒有被更新而第一個表被更新的情況出現(xiàn):當(dāng)一組語句構(gòu)成一個事務(wù)處理時,如果一個語句沒有執(zhí)行成功,則所有的語句都不成功。不管是針對多個表,還是進(jìn)行表內(nèi)多個記錄的操作,它們所需要的安全保證是一樣的。事務(wù)處理的實現(xiàn)代碼如下:

      … …

      Set MyConn=Sever.CreateObject(“ADODB.Connection”)

      MyConn.Open “ByktDB.dsn”

      MyConn.BeginTrans //事務(wù)處理開始

      MyConn.Execute “INSERT DataTable(Num) Values(‘3628’)”

      MyConn.Execute “INSERT Shipping (Address) VALUES(‘Paris,F(xiàn)rance’)”

      MyConn.CommitTrans //事務(wù)處理結(jié)束

      MyConn.Close

      … …

      在上面這段代碼中,用BeginTrans方法和CommitTrans方法來標(biāo)記事務(wù)處理的開始和結(jié)束。在BeginTrans方法被調(diào)用之后,CommitTRans方法被調(diào)用之前,不管出現(xiàn)什么錯誤,兩個表都不會被更新,在這個過程中所有處理的數(shù)據(jù)都保持了完全可靠的一致性。

      5 結(jié)論 ADO是由微軟公司推出的以ActiveX技術(shù)為基礎(chǔ)的數(shù)據(jù)存取方法。它的主要特點是使用更加容易,訪問速度更快,支持建立各種客戶/服務(wù)器模式與基于Web的應(yīng)用程序。RCDS正是采用ADO 所基于的OLE DB技術(shù),可以對電子郵件、文本文件、數(shù)據(jù)表格等各類數(shù)據(jù)通過統(tǒng)一的接口API接口進(jìn)行存取,是遠(yuǎn)程數(shù)據(jù)存取的一個主要發(fā)展方向。