全国计算机三级数据库技术
全國計算機等級考試三級(數據庫技術)
一:考試內容及要求
1.掌握數據庫技術的基本概念、原理、方法和技術
2.能夠使用SQL語言實現數據庫操作
3.具備數據庫系統安裝、配置及數據庫管理和維護的基本
4.掌握數據庫管理與維護的基本方法
5.掌握數據庫性能優化的基本方法
6.了解數據庫應用系統的生命周期及其設計、開發過程
7.熟悉常用的數據庫管理和開發工具、具備用指定的工具管理、開發簡單數據庫應用系統的能力
8.了解數據庫技術的最新發展
二:題型及內容范圍預測
1.數據庫應用系統分析及規劃(選擇題)
2.數據庫設計及實現(選擇題和應用題)
3.數據庫存儲技術(選擇題、應用題、設計與應用題)
4.數據庫編程技術(設計與應用題)
5.事務管理(選擇題、應用題、設計與應用題)
6.數據庫維護和管理(選擇題、應用題)
7.數據庫技術的發展及新技術(選擇題、應用題)
考試系統使用說明
一、考試環境
1.硬件環境:PC兼容機,硬盤剩余10GB或以上
2.軟件環境:操作系統:中文windows7 應用軟件:SQL Server 2008
二、考試形式及考試時間
1.考試形式:無紙化上機考試
2.考試時間:120分鐘
3.考試時間由系統自動進行及時,提前5分鐘自動報警提醒考生存盤
4.考試剩余時間為0時,系統自動交卷
三、分值
1.滿分100分
2.題型有三種
- 選擇題 40分(30小題)
- 應用題 30分(10小題)
- 設計與應用題 30分(3小題)
第一章:數據庫應用系統開發方法
內容概要:
1、掌握數據庫的基本概念
2、了解軟件工程與數據庫技術
3、理解DBAS生命周期模型
3、應用案例解析
第一節:數據庫的基本概念
1、數據
數據(Data)是數據庫中存儲的基本對象。
定義:描述事物的符號序列
數據的種類:數字、文字、圖形、圖像聲音及其他符號。
數據舉例:學生記錄(李明,男1994,湖南,計算機學院)
計算機中的數據分為兩部分:
-
? 臨時性數據
-
? 持久性數據
數據有型(Type)與值(Value)之分
-
? 型:數據表示的類型,如整型、字符型
-
? 值:給出了符合給定型的值
2、數據庫
? 數據庫——Database,簡稱DB
? 數據的集合,具有統一的結構形式并存放于統一的存儲介質內,是多種應用數據的集成,并可被哥哥應用程序所共享
? 按數據所提供的數據模型存放的
3、數據庫系統
? 數據庫系統——Database System,簡稱DBS
? 指在計算機系統中引入數據庫和數據庫管理系統(DBMS)后的完整系統
? 在不引起混淆的前提下常常把數據庫系統簡稱為數據庫
? 實現有組織的、動態的存儲大量相關數據,提供數據處理和資源共享服務
? 組成:數據庫(數據)數據庫管理系統(軟件)數據庫管理人員(人員)硬件平臺:計算機和網絡 軟件平臺:操作系統、數據庫系統開發工具、接口軟件
4、數據庫應用系統
? 數據庫應用系統——Database Application System,簡稱DBAS
? 組成:數據庫系統+應用軟件+界面
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9nYW4h6U-1582357290406)(D:\計算機等級考三級數據庫\1.png)]
第二節 :軟件構成與數據庫技術
1、軟件工程:
? 1968年北大西洋公約組織的工作會議上Firtz Bauer 首先提出”軟件工程概念“,提出要用工程化的思想開發軟件。從此,軟件生產進入軟件工程時代。
? 軟件工程是用工程、科學和數學的原則與方法來開發、維護計算機軟件有關技術和管理方法
? 軟件工程由方法、工具和過程三部分組成——軟件工程三要素
2、軟件的生存周期:
? 一般來說,軟件產品從定義開始,經過開發,使用與維護,知道退役的全過程稱為軟件生存周期。
3、數據庫工程:
? 數據庫應用系統的開發是一項軟件工程,但又有自己的特點,所以特稱為”數據庫工程“。數據庫工程按內容可分為兩部分,一部分書數據庫設計,另一部分是相應的設計與實現。
? 數據庫應用系統的設計開發必須有軟件過程模型作為指導。
? 典型的軟件開發模型有:瀑布模型,快速原型模型,螺旋模型等。
第三節:DBAS的生命周期模型
? 參照軟件工程中軟件開發瀑布模型原理,DBAS的生命周期由項目規劃、需求分析、系統設計、實現與部署、運行管理和維護等五個基本活動組成
? 根據DBAS的軟件組成和各自功能,分為數據組織與存儲設計、數據訪問與處理設計、應用設計三條設計主線,分別用于設計數據庫、數據庫事務和應用程序
? 根據數據庫系統三級模式結構,DBAS設計階段分為概念設計、邏輯設計、物理設計三個步驟,每一步設計內容涵蓋了三條設計主線
1.規劃與分析
是**DBAS生命周期的第一步**,目標是面向實際應用和需求,確定整個數據庫應用系統的目標和任務,從技術,操作和經濟三個方面進行可行性分析,并制定合理的項目開發計劃? 規劃與分析的主要工作內容:
-
? 系統規劃與定義:任務陳述、確定任務目標、確定范圍和邊界、確定用戶視圖
-
? 可行性分析:技術、經濟、操作可行性及開發方案選擇
-
? 項目規劃:項目團隊、環境、活動、成本預算、進度計劃
2.需求分析
準確了解與分析用戶需求(包括數據與處理)
最困難、最耗費時間的一步
需求分析過程由需求獲取、需求分析、需求描述與規范說明、需求驗證等步驟組成
各種需求的主要工作:
? 數據需求分析:描述用戶需要組織的信息內容形成數據字典
? 功能需求分析:描述系統做什么數據處理需求分析、業務規則需求分析
? 性能需求分析:描述系統應當做到什么程度數據操作需要時間、系統吞吐量、硬件資源
? 其他需求:存儲需求、安全性需求、備份與恢復
3.系統設計
? 如果需求分析階段的任務是解決”干什么“的問題。那么系統設計階段的任務是確定”怎么干“
? 系統設計包括:
- ? 概念設計:數據庫概念模型設計、系統總體設計
? 邏輯設計:數據庫邏輯結構設計、應用程序概念設計、數據庫事務概要設計
? 物理設計:數據庫物理結構設計、數據庫事務概念設計、應用程序詳細設計
4.實現與部署
? 也成為DBAS的實施。需要根據設計結果建立數據庫,編寫應用程序,基礎DBAS軟硬件,組成完整的DBAS。
? 包括建立 數據庫結構,數據加載,事務和應用程序的的編碼及測試,系統集成。測試與運行。系統部署
5.運行管理與維護
? 主要包括日常維護、系統監控與分析、系統性能調整、系統進化升級等。這些工作主要由DBA負責
6.第一章例題分析:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aFx7xBno-1582357290407)(C:\Users\ADMINI~1\AppData\Local\Temp\1577623729954.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qbqSiGNK-1582357290407)(C:\Users\ADMINI~1\AppData\Local\Temp\1577623929051.png)]
第二章:需求分析
內容概要:
1、了解需求分析的概念及需求獲取的方法
2、了解需求建模的方法
3、結構化分析案例-教材購銷系統
第一節:需求分析
1.需求分析的概念和意義
? 需求是指用戶對軟件功能和性能的要求,就是用戶希望軟件能做什么事情,完成什么樣的功能,達到什么性能。
? 需求分析是在計算機系統的軟件功能分配和軟件設計之間起重要橋梁作用的一項軟件工程活動。描述待開發的系統所要完成的功能。
? 需求分析使系統工程師能夠刻畫出軟件的功能和性能,指明軟件和系統其他元素的接口,并建立軟件必須滿足的約束。
? 需求分析的目標是深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其它系統元素的接口細節,定義軟件的其他有效性需求
2.需求分析往往因為軟件產品的下列特性而困難重重
軟件功能復雜,需求的可變性,軟件產品的不可見性
3.需求獲取的方法
? -面談:系統分析員與用戶方的專家和業務人員進行知識交流、與他們會談獲得需求
? -實地觀察:實地觀察用戶的操作規程。對比現有的系統,思考如何采取更高效的方式
? -問卷調查:若需要訪談的個體太多,且無需回答容易確定的細節問題,可采取問卷調查
? -查閱資料:收集和查閱相關的文獻資料,如組織機構圖、規章制度、相關文檔、圖表及報告等
面談(用戶訪談):
- ? 準備訪談
? 計劃和安排訪談日程
? 訪談開始和結束
? 引導訪談
? 訪談整理工作
實地考察
- ? 現場觀察法
? 詢問法:直接訪問、堵截訪問、電話訪問、郵局訪問等。
問卷調查
? 適合使用情況
-
訪問的個體太多
? 需要回答容易確定的細節問題
? 希望有詳細的結果? 注意事項
使用問卷表盡可能的簡短估計回答問題需要時間,并在問卷表開頭標明制定問題前,先確定你需要的答案
查閱資料
收集用戶以下材料
- 書面需求文檔
- 現在的業務操作流程機器改進意見文檔
- 現在使用的數據表和文件及其格式,并確定數據的來源
4.需求分析的過程
A、標識問題:需求分析的第一步,通過對問題和標識獲得的對所有求解問題及其運行環境的理解
B、建立需求模型:目前在信息系統的需求分析中可使用結構化分析模型或面向對象分析模型。
C、描述需求:需求、功能、信息、性能、環境、其他需求
D、確認需求:需求確認及評審。審核功能需求、數據需求、性能、數據管理及其他需求
第二節:需求分析方法
目前在信息系統的需求分析中可使用如下方法
-
結構化分析和建模方法
如:DFD建模、IDEF建模
-
面向對象分析和建模方法(第五章)
如:UML用例建模
結構化分析的任務
? 建立分析模型。SA模型是描述軟件需求的一組模型,主要包括功能模型、數據模型和行為模型
? 編寫需求規格說明書。SRS是分析階段編寫的以文字為主的文檔,主要包括:引言、信息描述、功能描述、行為描述、質量保證、接口描述以及其他需求等
? 結構化分析的指導思想:抽象和分解是結構化分析的主要指導思想。
1.DFD需求建模方法
數據流圖(Data Flow Diagram,DFD):DFD建模方法的核心是數據流,從應用系統的數據流著手以圖形方法刻畫表示一個具體業務系統的數據處理過程和數據流
-
數據流
數據流是數據在系統內傳播的路徑因此由一組成分固定的數據組成。如訂票單由旅客姓名、年齡、單位、身份證號、日期、目的地等數據項組成。由于數據流是流動中的數據,所以必須有流向,除了與數據存儲之間的數據流不用命名外,數據流應該用名詞或名詞短語命名
-
數據源(終點)
代表系統之外的實體,可以是人、物或其他軟件系統。
-
對數據的加工(處理)
加工是對數據進行處理的單元,它接受一定的數據輸入,對其進行處理,并產生輸出
-
數據存儲
表示信息的靜態存儲,可以代表文件、文件的一部分、數據庫的元素等
2.DFD建模過程
-
具體建模過程及步驟:
-
(1)明確目標,確定系統范圍
將用戶對目標系統的功能需求完整、準確、一致地描述出來。
-
(2)建立頂層DFD圖
說明系統邊界,即系統的輸入和輸出數據流,頂層DFD只有一張
-
(3)構建第一次DFD分解圖
中間層DFD,描述了某個過程的分解,而他的組成部分又要進一步分解
-
(4)開發DFD層次結構圖(原則:保持均勻你的模型深度,按困難程度選擇)
底層DFD,由一些不可再分解的過程組成
-
(5)檢查確認DFD圖
5條規則
檢查確認DFD圖的5條規則:
- 父圖中描述過的數據流必須在相應子圖中出現
- 一個處理至少需要一個輸入流和輸出流
- 一個存儲必定有流入的數據流和流出的數據流
- 一個數據流至少有一端是處理框
- 表達描述的信息是全面、完整、準確的一致的
-
3.IDEF0需求建模方法
- IDEF方法:ICAM DFEinition Method,由美國空軍發明,從IDEF0到DEF14(包括IDEF1X在內)共16套方法,每套方法都是通過建模程序來獲取某個特定類型的信息。
- 最常用的IDEF0~IDEF4:
- IDEF0:描述系統功能及其相互關系;
- IDEF1:系統信息及其數據之間的聯系;
- IDEF2:系統模擬,動態建模;
- IDEF3:過程描述及獲取方法;
- IDEF4:面向對象設計
4.UML用例建模方法
? UML方法采用面向對象思想建模,使用圖例來描述系統功能需求。用例圖由系統、角色、用例三種模型元素及其之間的關系構成。
5.第二章例題分析
- 獲取需求的主要方法包括:(問卷調查),(查閱資料),(面談),(實地考察)
- 在信息系統的需求分析中,目前廣為使用的結構化分析與功能建模的方法主要有DFD、IDEF0其中,DFD建模方法也被稱為過程建模和功能建模方法,其核心是(C)
- A)數據 B)軟件 C)數據流 D)分析過程
- 下列不屬于信息需求分析常用的建模方法是(A)
- A)ER B)IDEF0 C) DFD D)UML
第三章:數據庫結構設計
內容提要:
1.掌握數據庫概念設計
2.掌握數據庫邏輯設計
3.掌握數據庫物理設計
第一節:數據庫概念設計
一個設計良好的數據庫,在很大程度上決定了系統的成功與否。
一般分為
- 數據庫概念設計
- 數據庫邏輯設計
- 數據庫物理設計
概念設計是數據庫設計的核心環節。通過對用戶需求進行綜合歸納與抽象、形成一個獨立于具體DBMS的概念模型。
1.數據庫概念設計的目標
- 定義和描述應用領域設計的數據范圍
- 獲取信息模型
- 描述數據的屬性特征
- 描述數據之間的關系
- 定義和描述數據的約束
- 說明數據的安全性要求
- 支持用戶的各種數據處理需求
- 保證信息模型能轉化成數據庫的邏輯結構(即數據庫模式)。
2.概念設計的依據及過程
-
依據:
? 數據庫概念設計以需求分析的結果為依據,即需求說明書、DFD圖以及在需求階段收集到的應用領域中的各類報表等。
-
結果:
? 概念設計的結果是概念模型(ER)與概念設計說明書
-
過程:
(1)明確建模目標(概念覆蓋范圍)
(2)定義實體類(自底向上標識和定義實體集)
(3)定義聯系(實體間關聯關系)
(4)建立信息模型(構建ER模型)
(5)確立實體集屬性(屬性描述一個實體集的特征和性質)
(6)對信息模型進行集成與優勢(檢查和消除命名不一致,結構不一致等)
? 概念設計是DB設計的核心環節。概念數據模型是對現實世界的抽象和模擬
3.概念模型的設計
-
概念設計目前采用最廣泛的是ER建模方法,將現實世界抽象為具有屬性的實體及聯系
-
1976年。Peter.Chen提出E-R模型(Entity-Relationship Model),即實體聯系模型,用E-R圖來描述數據庫的概念模型。
-
觀點:世界由一組稱為實體的基本對象和這些對像之間的聯系構成的。
-
與E-R模型有關的概念
-
實體(Entity)或實例(Instance)
客觀存在并可相互區分的事物叫實體。如學生張三、計算機系、數據庫概論
-
實體集(Entity Set)
同型實體的集合稱為實體集。如全體學生
-
屬性(Attribute)
實體所具有的某一特性。一個實體可以由若干個屬性來刻畫。每個屬性取值范圍稱為域。例如,學生可有學號、姓名、年齡、系、年級組成。
-
碼(Key)鍵
實體集中唯一標識每一個實體屬性或屬性組合。用來區別同一實體集中的不同實體的稱作主碼(主鍵)。一個實體集中任意兩個實體在主碼上的取值不能相同。如學號是學生實體的主碼。
-
聯系(Relationship)
描述實體之間的相互關系。如學生與老師間的授課關系,學生與學生間有班長關系。聯系也可以又屬性,如學生與課程之間有選課聯系,每個選課聯系都有一個成績作為其屬性。同類聯系的集合稱為聯系集。
實體間的聯系有三類
? 實體之間的聯系的數量,即一個實體通過一個聯系集能與另一實體集相關聯的實體的數目
? 一對一聯系(1:1)
? 如:“系”與“系主任”(一個系只有一個系主任,一個系主任只負責管理一個系)
? 一對多聯系(1:n)
? 如:“系”與“學生”(一個系招收若干學生,一個學生只屬于一個系)
? 多對多聯系(m:n)
? 如:“學生”與“課程”(一名學生可選修多門課程,每門課程可被多名學生選修)
E-R模型的表示
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pSF29XKU-1582357290408)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200478627.png)]
-
? E-R圖示例
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SkCc6pLx-1582357290409)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200466991.png)]
4.IEDF1X建模方法
- IDEF1X與第二章中介紹的IDEF0是一個系列的建模工具。IDEF0是功能建模方法。IDEF1X是數據建模的方法
5.概念設計實例(商場經營管理系統)
- 建模目標:支持顧客管理、采購與庫存觀念里、人力資源管理、財務管理等多項業務活動
- 定義實體集:顧客、會員卡、員工、收銀臺、銷售單據、供應商、商品、采購入庫單據。
- 定義聯系(難點):依據語義約束定義
- 建立信息模型
- 確認實體屬性
- 對信息模型進行集成與優化
第二節:數據庫邏輯設計
1.邏輯設計的任務:
? 將概念模型(如ER圖)轉化為DBMS支持的數據模型(如關系模型),并對其進行優化。
2.邏輯設計的依據和階段目標
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ejLZQgFt-1582357290409)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200422307.png)]
- 關系模型
- 數據依賴
- 候選碼、主碼、外碼
- 數據規范化
- 范式
關系模型
? 有三種主要的數據模型:層次模型、網狀模型、關系模型。其中關系模型簡單靈活,并有著堅實的理論基礎,已成為當前最流行的數據模型。
? 關系模型就是用二維表結構來表示實體與實體之間的聯系的模型
? 關系的描述稱為關系模型。關系模型由五部分組成,即他的五個元組:R(U,D,DOM,F)
? R:關系名 U:組成蓋棺內西的屬性名集合 D:屬性組U中屬性所來自的域 DOM:屬性到域的映射
F:屬性組U上的一組數據依賴
? 由于D、DOM對模式設計的關系不大,這里吧關系模型簡化為一個三元組:R<U,F>,當且僅當U上的一個關系R滿足F時,R稱為關系模型R<U,F>的一個關系
1.關系數據庫設計的核心:關系模式的設計
2.關系模式的設計目標
? 按照一定的原則及數量眾多而又相互關聯的數據中,構造出一組既能較好的反映現實世界,而又有良好的操作性能的關系模式。
? 新奧爾良發,數據庫設計步驟:
? 需求分析->概念那結構設計(ER圖)->邏輯結構設計(關系模式設計)->物理結構設計
3.數據依賴
? 定義:設R(U)是一個屬性集U上的關系模式,X和Y是U的子集。若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性組不等,則稱“X函數確定Y”或“Y函數依賴于X”,記作X—>Y。
? 關系內部屬性與屬性之間的一種約束關系,是現實世界屬性相互聯系的抽象,數據的內在性質,語義的體現
完整約束的表現形式
? 限定屬性的取值范圍,如年齡<60
? 定義屬性間值的相互關聯(主要體現于值的相等與否)這就是數據依賴
4.數據依賴的類型
? 函數依賴(Functional Dependency,FD)
? 普遍存在于生活中,這種依賴關系類似于數學中的函數y=f(x),自變量x確定之后,相應的函數值也就唯一地確定了。
? 如關系:公民(身份證號碼,姓名,地址,工作單位)
? 身份證號碼一確定,則地址唯一確定,因此地址函數依賴身份證號碼
? 而姓名一確定,不一定確定地址。
? 多值依賴(Multivalued Dependency,MD)
? 教師號可能多值依賴課程號,因為給定一個(課程號,參考書號)的組合,可能有對應多個教師號。這是因為多個老師可以使用相同或不同參考書上同一門課。
? 簡單點講,函數就是唯一確定的關系:多值依賴卻不能唯一確定
? 完全依賴與部分函數依賴
? 傳遞函數依賴
5.候選碼、主碼、外碼
? 我們已經知道,如果某屬性組的值能唯一確定整個元組的值,則稱該屬性組為候選碼或候選關鍵字。
? 例如(學號,姓名,性別,年齡)中學號是關鍵字,(學號,姓名)不是關鍵字。性別不是關鍵字。候選碼如果有多個,可以選其中一個作為主碼(Primary key)。
? 屬性或屬性組X不是關系模式R的碼(既不是主碼也不是候選碼),但X是另一個關系模式的碼,則稱X是R的外部碼,也稱外碼(Foreign key)
? 例如:在SC(Sno,Cno,Grade)中,Sno既不是碼,但Sno是關系模型S(Sno.Sdept,Sage)的碼,則Sno是關系模式SC的外碼
6.數據規范化
? 關系數據庫的設計主要是關系模式設計。關系模式設計的好壞直接影響到數據庫設計的成敗。將關系模式規范化,是設計較好的關系模式的唯一途徑。
? 關系模式的規范化主要是由關系范式來完成的。
? 關系模式的規范化:把一個的低一級的關系模式分解為高一級的關系模式的過程。
? 關系數據庫的規范化理論是數據庫邏輯設計的工具。
? 目的:盡量消除插入、刪除異常、修改復雜、數據冗余的問題。
-
范式
? 范式:關系模式滿足的約束條件稱為范式。根據滿足規范化的程度不同,范式由低到高分為1NF,2NF,3NF,BCNF,4NF,5NF.
? 1NF:如果關系模式R,其所有屬性都是不可再分的基本數據項,則稱R屬于第一范式
? 2NF: 如果關系模式R屬于1NF,且每個非主屬性完全函數依賴于主碼,則稱R屬于第二范式 例:判斷R(學號,姓名,年齡,課程,名稱,成績,學分)是否屬于第二范式(否)
? 3NF:如果關系模型R為2NF,且R中的每個非主屬性不傳遞依賴于R的主碼,則稱關系R是屬于第三范式 例:判斷R(學號,姓名,年齡,所在學院,學院地點,學院電話)是否屬于第三范式(否,傳遞依賴)。
4.數據庫邏輯設計的方法
設計邏輯結構分為三步:
- 將概念結構轉化為一般的關系模型-
將轉化來的關系模型向特定的DBMS支持下的數據模型轉化
-
對數據模型進行優化
如果是關系型數據庫管理系統,就應將概念模型轉化為關系模型,即將E-R圖中的實體和聯系轉化為關系模式。
數據庫邏輯模型的產生
? 概念模型按照一定的規則可以轉化成數據模型。這種轉換的原則如下:
- 一個實體轉換成一個關系模式
- 一個1:1聯系也可以轉化成一個獨立的關系模式,也可以與任意一端對應的關系模型合并。
- 一個1:n聯系可以轉化成一個獨立的關系模式,也可以與N端對應的關系模式合并。
- 一個m:n聯系轉為為一個關系模式
- 三個或三個以上實體間的一個多元聯系轉換為一個關系模式
第三節:數據庫物理設計
1.物理設計概述
? 物理數據庫設計是設計數據庫的存儲結構和物理實現方法。
? 目的:將數據的邏輯描述轉換為實現技術規范,設計數據存儲方案,以便提供足夠好的性能并確保數據庫數據的完整性,安全性,可靠性。
2.數據庫的物理結構
? 物理設備上的存儲結構與存取方法稱為數據庫的物理結構。
? 數據庫中的數據以文件形式存儲在外設存儲介質上。
? 一個文件在物理上可看作是存放記錄的一系列磁盤塊組成的,稱為物理文件。
? 數據庫的物理結構需要解決如下問題:文件組織、文件結構、文件存取、索引技術
3.索引
? 索引(Index)是數據庫中獨立的存儲結構,其作用是提供一種無需掃描每個頁面(存儲表格數據的物理塊)而快速訪問數據頁的方案。索引技是一種快速數據訪問技術。
? 索引技術的關鍵:建立記錄域取值到記錄的物理地址(如頁碼)間的映射關系,即索引。索引能提高性能,但是有代價的。設計和創建索引是,應確保對性能的提高程度大于在存儲空間和處理資源方面的代價。
1、索引技術的分類
-
有序索引
索引文件機制,利用索引文件(索引記錄組成)實現記錄域(查找嗎,排序域)取值到記錄物理地址之間的映射關系。
數據文件和索引文件(索引記錄或索引項的集合)是有序索引技術中的兩個主體,數據文件常采用順序文件結構
- (1)聚集索引(索引項與數據記錄排列順序一致,索引順利文件)和非聚集索引。一個數據文件只可建立一個聚集索引,但可建立多個非聚集索引。
- (2)稠密索引(數據文件中每個查找嗎都對應索引記錄)和稀疏數組(部分查找碼的值對應索引記錄)
- (3)主索引(主碼屬性集上建立的索引)與輔索引(非主屬性上建立的索引)
- (4)唯一索引(索引列不包含重復值)
- (5)單層索引(線性索引,每個索引項的順序排列直接指向數據文件中的數據記錄)和多層索引(大數據量文件中的多層樹型(B,B+樹)索引快速定位)。
-
散列索引
哈希(Hash)索引計指,利用散列函數實現記錄域取值到記錄物理地址間的直接映射關系
4.數據庫的物理設計
目標:目標是得到存儲空間占用少,數據訪問效率高和維護代價低的數據庫物理模式,數據庫底層物理存儲與存取,與DBS所依賴的硬件環境、操作系統和DBMS密切相關。目前絕大部分DBS都是關系數據庫系統
環節:數據庫物理設計包括五個環節。
-
(1)數據庫邏輯模式的描述
根據數據庫邏輯結構信息設計目標DBMS可支持的 關系表(這款i稱為基本表)的模式信息,這個過程稱為數據庫邏輯模式描述。
? 關系模式及其視圖轉換成基本表 和視圖,利用完整性計指(如觸發器)設計面向應用的業務規則。
? SQL Server采用T-SQL語言
? 為基本表選擇合適的文件結構(堆文件,順序文件,聚集文件,索引文件和散列文件)
-
(2)文件的組織與存取設計
? 基本原則
? 根據應用情況將易變部分與穩定部分、存取頻率較高部分與存取頻率較低部分分開存放,以提高系統性能。
? 分析理解數據庫事務訪問特性:使用事務-基本表交叉引用矩陣;估計各事務執行頻率;匯總每張基本表各十五操作頻率信息;根據結果設計文件結構。
什么是存取路徑:
? 在關系數據庫中,選擇存取路徑主要指確定如何建立索引。
? 對同一個關系要建立多條存取路徑才能滿足多用戶的多種應用要求。
? 物理設計的第一個 任務就是要確定選擇那些存取方法。
DBMS常用存取方法:
? 索引方法,目前主要是B+樹索引方法
? 聚簇方法
? HASH方法
建立索引原則:
? 一個(組)屬性經常在操作條件中出現
? 一個(組)屬性經常在連接操作的連接條件中
? 一個(組)屬性經常作為聚集函數的參數
-
(3)數據分布設計
? 不同類型的數據的物理分布
? 將應用數據(基本表)、索引、日志、數據庫備份數據等合理安排在不同介質中。
? 應用數據的劃分與分布
? 根據數據的使用特征劃分
? 根據時間、地點劃分
? 分布式數據庫系統(DDBS中的數據劃分)
? 派生屬性數據劃分
? 關系模式的去規范化
-
(4)確定系統的配置
? DBMS產品一般都提供了一些存儲分配參數:條設使用數據庫的用戶數、數據庫大小、時間片大小…
-
(5)物理模式評估
? 對數據庫物理設計結果從存取時間、存儲空間、維護代價等方面進行評估,重點是時間和空間效率
? 如果評價結果滿足原設計要求則可進入到物理實施階段,否則,就需要重新設計或修改物理結構,有時甚至要返回邏輯設計階段修改數據模型。
第四章:數據庫應用系統功能設計與實施
內容概要
1、了解軟件體系結構與設計過程
2、了解DBAS總體設計
3、了解DBAS功能概要設計
4、了解DBAS功能詳細設計
5、了解DBAS安全架構設計
6、了解DBAS實施的過程及內容
? DBAS功能設計包括應用軟件中的數據庫事務設計和應用程序設計
? 功能設計過程一般被劃分為總體設計、概要設計和詳細設計。而具體到數據庫事務設計部分,又可分為事務概要設計和事務詳細設計。
? 完成系統設計工作之后,就進入系統實現與部署階段。
第一節:軟件的體系結構與設計過程
軟件體系結構
- 又稱軟件架構,軟件體系結構={構件,連接件,約束}
- 軟件體系結構是軟件系統中最本質的東西。良好的體系結構必須是普適,高效和穩定的。
- 軟件體系結構有多值風格和類型,如分層體系結構,模型-視圖-控制器(MVC)體系結構、客戶端/服務端體系結構。
第二節:軟件設計過程
軟件設計過程
- 軟件開發由設計、實現、測試三個環節組成,設計又包含概要設計和詳細設計。
- 概要設計的任務是進行軟件設計總體結構設計,可采用層次結構圖建立軟件總體結構圖。詳細設計的任務有是
進行數據設計、過程設計及人機界面設計。
- 設計原則:模塊化、信息隱藏、抽象與逐步求精。
- 軟件設計可選用結構化設計方法、面向對象設計方法或面向數據設計方法等。
第三節:DBAS總體設計的任務是確定系統總體框架
主要內容包括:
- DBAS體系結構設計
- 軟件體系結構設計
- 軟件硬件選型與配置設計
- 業務規則初步設計
1、DBAS體系結構設計
- 將系統從功能、層次/結構、地理分布等角度進行分解,將劃分為多個子系統、定義各子系統功能,設計系統的全局控制,明確各子系統間的交互和接口關系。
- 兩種常見的DBAS體系結構:
- 客戶/服務器體系結構(C/S)
- 瀏覽器/服務器體系結構(B/S)
2、軟件體系結構設計
- DBAS軟件包括操作系統、數據庫管理系統、開發環境、中間件、應用軟件(數據庫事務和應用程序)。
- 從需求分析出發分解成各子系統、分配相應功能,定義相互間交互機制,完成子系統結構設計,將子系統從功能上分成數據庫事務模塊(事務自身處理邏輯)與粒度大的應用程序模塊(業務規則),確定全局控制和調用關系。可用模塊結構圖(模塊+調用+數據+控制+轉接)表示系統主體結構和分層模塊結構。
3、軟件硬件選型與配置設計
- 規劃分析階段提出系統功能、性能及實現的約束對硬件做了評估和選擇建議:需求對系統功能性能提出了具體要求,保證了DBAS功能性能順利實現,總體設計階段需要對軟硬件設備做出合理選擇,并進行初步配置設計。
- 軟硬件選型涉及的內容:
- 網絡及設備選型;數據存儲及備份方案:服務器選型;終端軟件環境;軟件開發平臺和語言、工具;系統中間件及第三方軟件選型。
4、業務規則初步設計
- 任務:從系統的角度,規劃DBAS的業務流程,和客戶的實際業務需要。
- DBAS的各項業務活動具有邏輯上的先后關系。他們表示成一個操作序列,并用業務流程圖表示。
- 在總體設計結果基礎上,將DBAS應用軟件進一步細化為模塊/子結構,組成應用軟件的系統-子系統=子模塊層次結構,并從結構、行為、數據三方面進行設計。
- 從功能角度,DBAS系統通常分為四個層次實現
- 表示層
- 業務邏輯層
- 數據訪問層
- 數據持久層
第四節:DBAS功能概要設計
1、表示層概要設計
- 人機界面設計,影響系統易用性。目前第四代是WIMP(窗口、圖標、菜單、指示器)與WEB技術、多任務處理技術相結合。
- 設計原則:‘用戶自主控制’;反饋及時上下文感知;容錯與錯誤恢復;界面標準常規;輸入靈活;界面簡潔交互及時…
2、業務邏輯層概要設計
- 設計原則:高內聚低(松)耦合,即架構單一原則;構建獨立功能;接口簡單明確;構建間關系簡單,過于復雜,就細化,分解。
- 設計內容:結構,行為,數據,接口,故障出安全設計,系統維護和保障等。
3、數據訪問層概要設計
- 任務:針對DBAS的數據處理需求設計用于操作數據庫的任務。
- 事務概要設計核心在于辨識和設計事務自身處理邏輯,注重流程,不考慮與平臺相關、具體操作方法和事務實現機制。
- 一個完整的事務概要設計包括事務名稱、訪問的關系表及數據項、事務邏輯(事務描述),事務用戶(使用、啟動、調用該事務的軟件模塊和系統)
補充:
- 事務:事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)
- 事務的特性:原子性、一致性、隔離性、持續性。稱為ACID特性。
- 原子性。一個不可分割的工作單位。
- 一致性。從一個一致狀態變到另一個一致性狀態
- 隔離性。執行不能被其他事務干擾
- 持久性。永久性,事務一旦提交,他對數據庫中數據的改變就應該是永久的。
4、數據持久層概要設計
- 屬于數據組織與存儲方面的設計內容
第五節:DBAS功能詳細設計
1、表示層詳細設計
人機界面采用原型迭代法合適,三個步驟:
- (1)初步設計:設計人機交互命令系統并優化。(總體設計)
- (2)用戶界面細節設計。如組織形式、風格,彩色,操作方式(概要設計)
- (3)原型設計與改進(詳細設計)
2、業務邏輯層詳細設計
設計各模塊內部處理流程和算法、具體數據結構、詳細接口等。
第六節:應用系統安全結構設計
1、數據安全設計
? 五個方面:
- 安全性保護:防止非法用戶對數據庫的非法使用、避免數據泄露、篡改或破壞。
- 完整性保護:保證數據源的準確性、一致性和相容性。
- 并發性控制:保證多個用戶能共享數據庫,并維護數據一致性。
- 數據備份與恢復:系統失效后的數據恢復,配合定時備份數據庫。
- 數據加密傳輸:將一些高級的敏感數據通過一定的加密算法后傳輸。
2、環境安全設計
- 漏洞與補丁:定期查找漏洞更新補丁
- 計算機病毒防護:殺毒軟件;實時監控;
- 網絡環境安全:防火墻;入侵檢測系統;網絡隔離(邏輯隔離與物理隔離)
- 物理環境安全:如防盜設施;UPS;溫濕度
3、制度安全設計
DBAS實施階段主要包括以下工作
1、創建數據庫
考慮因素:初始空間大小;數據庫增量大小;訪問性(并發數,訪問頻率)
2、數據裝載
步驟:篩選數據-轉換數據格式-輸入數據-校驗數據
3、編寫與調試應用程序
4、數據庫系統試運行(功能測試與性能測試)
第五章:UML與數據庫應用系統
內容概要:
1、了解DBAS建模方法
2、掌握DBAS業務流程與需求表達方法
3、掌握DBAS系統內部結構與表達方法
4、掌握DBAS系統微觀設計的表達方法
5、了解DBAS系統宏觀設計的表達方法
6、了解DBAS系統實現與部署的表達方法
第一節:DBAS建模
1、統一建模語言(UML):Unified Modeling Language
? UML是一種基于面向對象的可視化通用建模語言,該方法結合了Booch,OMT,和OOSE方法的有點,統一了符號體系,并從其他方法和工程實踐中吸收了許多經過實際校驗的概念和技術,UML只是一種建模語言,不是一種建模方法。
? 建模方法應包括建模語言和建模過程兩部分:
- 建模語言:提供這種方法用于表示建模結果的符號(圖形符號:可視化)
- 建模過程:描述建模時需遵循的步驟。
2、UML的組成
? 由語義(自然語言)與表示法(可視化標準符號)組成。其語義定義在一個四層建模概念框架中:
? 元元模型(Meta-Meta Model),代表要定義的所有事物。
? 元模型(Meta Model),UML的基本元素 ,“事務概念”的實例。
? 模型層(Model),UML的模型,類模型或類型模型。
? 用戶模型(User Model),UML模型的實例,對象模型或實例模型。
? UML的五種視圖:結構、實現、行為、環境和用例視圖
? 13鐘視圖(UML2.0):靜態結構圖及行為圖兩類 。
第二節:DBAS業務流程與需求表達
1、業務流程與活動圖
? 活動圖主要描述系統、用例和程序模塊中邏輯流程的執行次序,并行次序。
? 最適合描述系統或子系統的工作流程。
? 活動圖用于低層次程序模塊的作用類似于流程圖,但活動圖可以描述并行操作,而流程圖只能描述串行操作。
? 一張活動圖中有且只能由一個起點,可以有多個結束點。
2、系統需求與用例圖
? 系統需求:用戶心中的真正期望
? 用例模型是把滿足用戶需求的所用功能表示出來的工具。
? 用例模型由用例、角色、系統三部分組成。
? 系統:各種用力的“黑匣子”
? 角色:與系統交互的人或其他實體
? 用例:完整功能的所有動作(一次操作)集
第三節:DBAS系統內部結構的表達
1、系統結構與類圖
? 系統內部結構一般分為靜態結構和動態結構。
? 在UML中,用類圖來描述系統靜態結構,用順序圖和通信圖來表示系統動態結構。
? 類圖主要表達的是問題領域的概念模型。
? 類圖由類名、屬性及操作組成。
? 類和類之間的關系
? 關聯(聚集(共享聚集,組成或組合)),集成(泛化),依賴,精華(實現)
2、系統結構與順序圖
? 針對每一個特定用例,如何利用類圖規范的對象來完成用例交付的任務,必須要利用順序圖
? 順序圖主要用于描述系統內對象之間的消息發送和接收序列,
? 順序圖中所有的元素,都必須在類圖中存在。
3、系統結構與通信圖
? 通信圖是交互圖的一種,也稱為協作圖。
? 通信圖顯示對象間組織交互關系和鏈接。不側重交互順序,用序列號來確定消息及其并發線程順序。
? 順序圖強調時間,通信圖強調空間。
第四節:DBAS系統微觀設計的表達方法
1、微觀設計與對象圖
? 系統設計中,需要考慮細節部分。UML中,對于細節方面的內容可用對象圖。狀態機圖及時間圖來表達、分析和描述某個特定狀況下系統的運作情況。
? 對象圖是類圖的實例,描述特定時間中所有對象在系統中的結構,是一個快照。
2、微觀設計與狀態機圖
? 狀態圖用來描述有關事件或對象的狀態轉移
? 狀態圖只能有一個起始狀態,可有多個結束狀態。
? 狀態間的轉移由事件驅動。
3、微觀設計與時間圖
? 當狀態的轉換由時間因素決定時,使用時間圖來描述狀態的變化。
? 描述時間驅動的狀態轉換,即當狀態維持多少時間后轉移。
? 時間圖中,整個矩形框就是一個生命線。
第五節:DBAS系統宏觀設計的表達方法
1、宏觀設計與包圖
? 宏觀設計指將涉及的焦點放在研究比較大范圍中的元素之間的聯系,如包、命名空間、子系統等。
? 一個良好的命名空間,便于開發人員的理解,并使得各個命名空間之間 能夠松耦合,而命名空間內則可滿足高內聚的要求。
? 包圖表示系統中不同包、命名空間或不同項目間的彼此關系,也就是邏輯層次上與實體層次上的關聯性。
2、宏觀設計與交互概述圖
? 是將活動圖和順序圖嫁接在一起的圖。
? 以活動圖為基礎,在控制流間的連接交互圖,從而將所有的交互圖關系呈現出來。
? 交互概述圖可以把不同的交互圖結合在同一張圖中來表達。
3、宏觀設計與復合結構圖
? 外部系統的整合關系著項目的成敗。
? 在項目開始前,最好將待開發的系統與外部系統的關系做一個初步的定義。
? 復合結構圖適用于系統間的溝通接口,適合做架構師在初期階段評估系統復雜度的工具,也可以時系統維護的參考圖。
第六節:DBAS系統實現與部署的表達
1、系統實現與組件圖
? 組件圖用來表示系統的靜態實現視圖。
? 用來展現一組組件間的組織與依賴,用于對源代碼、可執行的發布、管理數據庫等的系統建模。
? 組件時邏輯設計中定義的概念和功能在物理架構中的體現。
2、系統實現與部署圖
? 部署圖又叫配置圖,描述系統中硬件和 軟件的物理配置情況與系統體系結構。
? 部署圖說明實體組件,如可執行程序,將如何部署到實際的計算機中。
? 部署圖要在項目中進行集成測試前提供。
第六章:數據庫及數據庫對象
內容概要
1、了解數據庫的組成及特點
2、掌握SQL Server2008的安裝與配置
3、掌握數據庫的創建及維護方法
4、掌握架構的定義與為維護方法
5、掌握分區表、索引及視圖的創建及維護方法
第一節:創建及維護數據庫
1、SQL Server數據庫概述
-
SQL Server的發展史
- SQL Serve7.0(1999年,正式躋身企業數據庫行列)
- SQL Serve2000(2000年,代表產品)
- SQL Serve2005(2005年,代號“YuKon")
- SQL Serve2008(2008年,重大的產品版本)
- SQL Serve2012
- SQL Serve2014
-
SQL Server的特色
- 保護數據庫查詢
- 在服務器的管理操作上花費更少的時間
- 增加應用程序穩定性
- 系統執行效能優化與預測功能
-
SQL Server版本
- 企業版
- 標準版
- 開發板
- 工作組版
- 網絡版
- 移動版
- 免費版
-
安裝SQL Server2008對資源的需求
-
最低硬件需求
-
要求32位64位 處理器 Pcntium Ⅲ或更高 Itanium、Opteron、Athcion或具有EM64T支持的Xcon/Pcntium 處理器速度 10GHz或更高 1.6GHz或更高 內存 512MB 512MB
-
-
SQL Server中的數據庫分類
- 系統數據庫(自動創建)
- master:所有系統級信息,元數據、端點、連接服務器及系統配置
- msdb:代理服務器調度報警和作業、記錄操作員時使用保存此類信息
- tempdb:用于保存臨時對象和中間結果,每次啟動會重新創建
- model:所有數據庫的模板,存放用戶數據庫公共信息
- resource:只讀數據庫。在對象資源管理器中看不到
- 用戶數據庫(保存于用戶業務有關的數據
- 系統數據庫(自動創建)
2、SQL Server數據庫的組成
- SQL Server將數據庫映射為一組操作系統文件:
- 數據文件.mdf :主要數據文件。.ndf:次要數據文件。
- 日志文件.ldf
- 數據庫存儲空間分配
- 創建用戶數據庫時,model數據庫被自動復制到新建庫。數據存儲的最小單位:數據頁(Page,簡稱頁)1頁是一塊8kb的連續磁盤空間。頁的大小決定了數據庫表中一行數據的最大大小。行不能跨頁存儲。
3、數據庫文件組
- 兩種類型的文件組
- 主文件組(PRIMARY):系統定義,包含主要數據文件和任何沒有明確分配的其他文件組的其他數據文件,系統表所有頁平均分配在主文件頁組中。
- 用戶定義文件組:在定義或修改數據庫時用FILEGROUP關鍵字指定。
- 注意
- 日志文件不在文件組中,日志空間與數據空間分開管理。
- 一個文件不可以是多個文件組成員。
- 若文件組包含多個文件,則在所有文件被填滿后才會自動循環增長。
- 文件加入數據庫后,不能移動到其他文件組。
- 只能指定一個文件組為默認文件組。
4、數據庫文件的屬性
-
定義數據庫的數據文件和日志文件所需信息:
-
文件名及其位置
邏輯文件名,物理文件名
-
初始大小
不能小于model數據庫主要數據文件大小
-
增長方式
可指定文件是否自增長(默認)
-
最大大小
文件增長的最大限制。默認無限制
-
5、用T-SQL創建數據庫
-
創建數據庫一般有兩種方式:
- 通過SQL Server Management Studio創建數據庫
- 通過T-SQL語句創建數據庫
-
舉例-創建學生數據庫
CREATE DATABASE Studentdb ON {NAME='Studentdb_Data',FILENAME='E:\Studentdb.mdf',SIZE=3MB,MAXSIZE=50MB,FILEGROWTH=10% } LOG ON {NAME='Studentdb_Log',FILENAME='E:\Studentdb.ldf',SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB } GO
6、修改數據庫
-
收縮數據庫空間
即釋放數據庫中未使用的空間,文件的收縮從末尾開始。
自動收縮:AUTO_SHRINK,默認false.
手工收縮:收縮數據庫中某個文件大小;按比例收縮整個數據庫
-
刪除和添加數據庫文件
-
擴大指定文件的大小:
ALTER DATABASE STU_DB MODIFY FILE(NAME=student_data,SIZE=8MB) -
添加新的數據文件:
ALTER DATABASE STU_DB ADD FILE(NAME=student_data2,FILENAME='E:\Data\student_data2.ndf',SIZE=6MB,FILEGROWTH=0) -
收縮整個數據庫大小:
DBCC SHRINKDATABASE -
收縮指定文件大小:
DBCC SHRINKFILE -
刪除數據庫文件:
ALTER DATABASE STU_DB REMOVE FILE student_log1 -
注意
添加文件時,每個文件組中的數據文件按比例填充,日志文件是依次增加的,文件空才能刪除。
7、分離和附加數據庫
-
分離數據庫
作用:實現將數據庫從一臺數據庫服務器移到另一臺,不需要重建。
從實例中刪除,不刪除數據文件和日志文件,保持了數據文件和日志文件完整一致性。使用sp_detach_db系統存儲過程實現。如:
EXEC sp_detach_db'student','true' -
附加數據庫
將分離的數據庫重新附加到數據庫管理系統中。必須指定主要數據庫文件的物理存儲位置和文件名
CREATE DATABASE…FOR ATTACH|ATTACH_REBUILD LOG
例如:
CREATE DATABASE students On(FILENAME-'F:\Data\students_data1.mdf') FOR ATTACH
第二節:架構
? 架構(Schema,也稱模式),是數據庫下的一個邏輯命名空間,是數據庫對象的容器,一個數據庫包含一個或多個架構,同一個數據庫內架構名唯一。
? 定義架構
CREATE SCHEMA[<架構名>] AUTHORIZATION<用戶名>? 刪除架構
DROP SCHEMA[<架構名>]第三節:分區表
1、基本概念
? 分區表是將表中的數據按照水平分割成不同子集,并將數據子集存儲在數據庫一個或多個文件組中。物理上將大表分成幾個小表,邏輯上還是一個大表。
? 合理使用分區能提高數據庫性能。
? 是否創建分區取決于表當前數據量大小,以及將來數據量,還取決與表中數據的操作特點。
? 表包含(或將包含)以多種不同方式使用的大量數據
? 數據是分段的,比如以年份分隔。
2、創建分區
三個步驟
-
創建分區函數:告訴DBMS以什么方式進行分區
CREATE PARTITION FUNCTION -
創建分區方案:作用是將分區函數生成的分區映射到文件組中
CREATE PARTITION SCHEME -
使用分區創建表
第四節:索引
1、創建索引:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name ON table_name(column_name...) [WITH FILLFACTOR=x]UNIQUE表示唯一索引,可選
CLUSTERED、NONCLUSTERED表示聚集索引還是非聚集索引,
可選FILLFACTOR表示填充因子,指定一個0-100之間的值,該值指示索引頁填滿的空間所占的百分比。
2、刪除索引:
DROP INDEX 'tablename.indexname|viewtable.indexname'[....n]第五節:索引視圖
1、基本概念
? 標準視圖也稱虛擬表,返回結果集與基本表一致。標準視圖的結果集不永久存放;
? 建立唯一聚集索引的視圖,稱為索引視圖,也成為物化視圖。建立索引后,視圖的結果集存放在數據庫中。
? 對基本表的修改會反映到索引視圖存儲的數據中。
2、適合建立索引視圖的場合
? 很少更新基礎數據,索引視圖效果更好
? 若基礎數據以批處理形式定期更新,且主要是作為只讀數據進行處理,可考慮在更新前刪除所有索引視圖,然后重建,提高更新性能。
- 索引視圖可以提高這些查詢類型的性能
- 處理大量行的連接和聚合
- 許多查詢經常執行的連接和聚合操作
- 索引視圖通常不會提高這些查詢類型性能
- 具有大量寫操作的OLTP系統
- 具有大量更新操作的數據庫
- 不涉及聚合或鏈接的查詢
- GROUP BY具有高基數度的數據聚合
3、定義索引視圖
-
創建聚簇索引前視圖必須符合的條件
定義索引視圖時,視圖只能引用基本表,不能時其他視圖。引用的所有基本表和視圖同一數據庫,所有者相同,必須用SCHEMABINDING選項建視圖,視圖中表達式引用的所有函數必須確定。對視圖建立的第一個索引時唯一聚簇索引,之后在創建其他。
4、例題
- 在SQL Server2008中,主要數據文件必須建立在(主)文件組中
- 不同的數據庫管理系統采用的日志文件格式完全不一樣。概括起來主要有以記錄為單位的日志文件和以(數據塊)為單位的日志文件兩種
- 在SQL Server2008中,每個數據頁可存儲8060字節的數據,設表T有10000行數據,每行占用4031字節,則存儲該表數據大約要(80)MB空間,其空間利用率大約是(50)%(存儲空間和空間利用率均保留到證書,小數點后按四舍五入處理)
第七章:高級數據庫查詢
內容提要
1、掌握一般數據庫查詢功能擴展
2、掌握查詢的并、交、差運算
3、掌握子查詢的使用
4、了解其他一些查詢功能
第一節:一般數據查詢功能擴展
1、SELECT語句
SELECT[DISTINCT][TOP n]select_list [INTO new_table] [FROM table_source] [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression[ASC|DESC]] [COMPUTE expression]2、使用top限制結果集
TOP n[percent][WITH TIES]- TOP n 前n行
- TOP n[percent] 前n%行
- [WITH TIES]:包括最后一行取值并列的結果。
【例一】查詢單價最高的前三種商品名、商品類別和單價,包括并列情況。
SELECT TOP 3 WITH TIES GoodsName,GoodsClassName,SaleUnitPrice,FROM Table_Goods a JOIN Table_GoodsClass bON a.GoodsClassID=b.GoodsClassID ORDER BY SaleUnitPrice DESC3、使用CASE函數
-
分情況顯示不同類型的數據。CASE函數時一種多分支表達式
-
兩種類型:
- 簡單CASE函數
- 搜索CASE函數
-
語法
CASEWHEN 布爾表達式1 then 結果表達式1WHEN 布爾表達式2 then 結果表達式2......WHEN 布爾表達式n then 結果表達式n[ELSE 結果表達式n+1] END
4、將查詢結果保存到新表中
SELECT 查詢列表序列 INTO <新表名> FROM 數據源......(其他行過濾、分組語句)注意:表名前加#為局部臨時表,##為全局臨時表,只有表名為永久表。
例子:
SELECT * INTO #HD_Customer FROM Table_Customer WHERE ......第二節:查詢結果的并、交、差運算
1、并運算
-
并運算(UNION):將多個查詢結果合并為一個結果集。
-
語法:
SELECT 語句1UNION [ALL] SELECT 語句2UNION [ALL] ...... -
使用UNION注意
- 要進行合并的查詢,SELECT中列數必須相同,語義相同。
- 每個相應列的數據類型隱式兼容,如char(20)與varchar(40)。
- 合并后結果采用第一個SELECT語句的列標題。
- 若需排序,則GROUP BY語句寫在最后一個SELECT之后。且排序的一句時第一個SELECT中的列名。
2、交運算
-
交運算:返回同時在兩個集合中出現的記錄。
-
語法:
SELECT 語句1 INTERSECT SELECT 語句2 INTERSECT...... SELECT 語句n
3、差運算
- 差運算:返回第一個集合中有而第二個集合中沒有的記錄。
- 語法:
第三節:相關子查詢
- 子查詢是一條包含在另一條SELECT語句里的SELECT語句。外層的SELECT語句叫外層查詢,內層的SELECT語句叫內層查詢(或子查詢)
- 子查詢總是寫在圓括號中。
- 包括子查詢的SELECT語句主要采用以下格式中的一種:
- WHERE expression [NOT] IN (subquery)
- WHERE expression comparion_operator [ANY|ALL]
- WHERE [NOT] EXITS (subquery)
1、使用子查詢進行基于集合的測試
實例:
SELECT Cname,Address FROM Tabel_Customer WHERE Address IN(SELECT Address FROM Table_Customer WHERE Cname='王曉') AND Cname!='王曉'2、使用子查詢進行比較測試
實例:查詢單價最高的商品的名稱和單價
SELECT Goodsname,SaleUnitPrice FROM Tabel_Goods a WHERE SaleUnitPrice= (SELECT MAX(SaleUnitPrice)FROM Table_Goods)3、使用子查詢進行存在性測試
實例:查詢購買了單價高于2000元商品額顧客的會員卡卡號
SELECT DISTINCT CardID FROM Table_SaleBill WHERE EXITS (SELECT * FROM Table_SaleBillDetail WHERE SaleBillID = Table_SaleBill.SaleBillID AND UnitPrice>2000)第四節:其他形式的子查詢
1、替代表達式的子查詢
? 在SELECT的選擇列表中嵌入了一個只返回一個標量值的子查詢。
? 實例:
SELECT Cname,Address(SELECT COUNT(*)FROM Table_Customer b ON a.CardID = b.CardID WHERE CustomerID='C001') AS TotalTimes FROM Table_Custmer WHERE CustomerID='C001'2、派生表
- 也稱為內聯視圖,是將子查詢作為一個表處理,產生的新表為“派生表”。
- 實例:查詢至少買了G001和G002兩種商品的顧客號和顧客名。
第五節:其他的一些查詢功能
1、開窗函數
-
在SQL Server中,一組行被稱為一個窗口。
-
與聚合函數一樣開窗函數也是對行集組進行聚合計算,但是他不像普通聚合函數那樣每組只返回一個值,開窗函數可以每組返回多個值,因為開窗函數所執行聚合計算的行集組是窗口。
-
與聚合函數不同的是,開窗函數在聚合函數后增加了一個OVER關鍵字。
-
開窗函數調用格式為:
? 函數名(列)OVER(選項)
- OVER關鍵字:表示把函數當成開窗函數而不是聚合函數
- SQL標準允許所有聚合函數用作開窗函數,使用OVER關鍵字來區分這兩種用法。
2、公用表表達式
- 公用表表達式(CommonTableExpression,CTE):將查詢結果集指定一個臨時名字,這些命名的結果集就是公用表表達式。
- 格式:
第八章:數據庫后臺編程技術
內容概要:
1、掌握存儲過程的定義和使用
2、掌握用戶定義函數的創建與使用
3、掌握觸發器的定義與使用
4、掌握游標的定義與使用
第一節:存儲過程
1、基本概念
? 使用T-SQL語言編寫代碼時,有兩種方式存儲和執行代碼:
-
在客戶端存儲代碼,通過客戶端程序或SQL命令向DBMS發出操作請求,由DBMS將結果返回給用戶程序。
-
以子程序的形式將程序模塊存儲在數據庫中,供有權限的用戶通過調用反復執行。存儲過程:即存儲在數據庫中供所有用戶程序調用的子程序
-
存儲過程分為三類:
-
系統存儲過程
-
用戶自定義存儲過程
? 用戶自定義存儲過程是由用戶創建并能完成某一特定功能(如查詢用戶所需數據信息)的存儲過程。本節將詳細介紹用戶自定義的存儲過程。
-
擴展存儲過程
? 擴展存儲過程時SQL Server可以動態裝載并執行的動態鏈接庫(DLL)。擴展存儲過程使您得以使用像C這樣的變成語言創建自己的外部例程。對用戶來說,擴展存儲過程與普通存儲過程一樣,執行方法也相同。
-
-
存儲過程的優點
- 極高的執行效率
- 增強代碼的重用性和共享性
- 使用存儲過程可以減少網絡流量
- 使用存儲過程保證安全性
- 在大型數據庫中,應用程序訪問數據庫最主要的方式就是存儲過程
- 存儲過程可以在系統啟動時自動執行
2、創建、執行和刪除存儲過程
存儲過程定義包含兩個主要組成部分
①過程名稱
②過程的主體(其中包含執行過程操作的Teansact-SQL語句)。創建存儲過程的語法格式如下:
CREATE PROCEDURE procedure_name[;number] /*定義過程名 [{@paramter data_type} /*定義參數的類型 [VARYING][=default][OUTPUT] /*定義參數的屬性 [,...n1] [WITH{RECONPILE|ENCRYPTION}|RECOMPILE] [FOR REPLICATION] AS sql_statement[,...n2]第二節:用戶定義函數
用戶定義函數:
? 類似于編程語言中的函數,其結構與存儲過程類似,但函數必須有一個RETURN字句,用于返回函數值。
兩類用戶定義函數:
? 標量函數和表值函數。前者返回單個數據值,表值函數返回一個表。
1、創建和調用標量函數
定義標量函數
CREATE FUCTION.......RETURNS return_data_type AS BEGIN 【函數體】RETURN scalar_expression END【實例】創建查詢指定商品類別的商品種類的標量函數
CREATE FUCTION dbo.f_GoodCount(@class varchar(10)) RETURNS int AS BEGIN DECLARE @x int SELECT @x=count(*)FROM Table_GoodsClass a JOIN Table_Goods b ON a.GoodsClassID = b.GoodsClassID WHERE GoodsClassName = @class RETRUN @x END調用標量函數:
注意:
? 調用時需要提供函數擁有者名和函數名;可以在任何出現表達式的SQL語句中調用類型一致的標量函數。
2、創建和調用內嵌表值函數
- 創建內聯表值函數:
參數說明:select_stmt是定義內聯表值函數返回值的單個select語句;表值函數沒有返回變量,沒有函數體,只返回一個查詢結果。
-
調用內聯表值函數:
使用內聯表值函數與視圖類似,其作用相當于帶參數的視圖。
3、創建和調用多語句表值函數
CREATE FUNCTION......RETURNS@return_variable TABLE<table_type_definition定義返回的表結構> AS BEGIN 【函數體:sql語句】RETURN END調用建多語句表值函數:在select的from子句中使用
4、刪除用戶自定義函數
DROP FUNCTION第三節:觸發器
1、基本概念
? 觸發器:特殊存儲過程,在對表中的數據進行UPDATE、INSERT、DELETE操作時自動觸發執行,常用于保證業務規則和數據完整性,增強數據完整性約束能力。
? SQL Server 2008支持三種類型的觸發器:
? DML、DDL、登陸觸發器。
? 使用場合:
? 完成比CHECK(只能實現同一表列之間取值約束)約束更復雜的數據約束。保證數據庫性能而維護的為規范化數據。可實現復雜的商業規則。評估數據修改前后的表狀態,并采取對策。
2、創建觸發器
CREATE TRIGGER trigger_name ON {table|view} [WITH ENCRYPTION] {FOR|AFTER|INSTEAD OF} {[INSERT][,][UPDATE][,][DELETE]} AS sql_statement[...n]參數說明:FOR或AFTER:后觸發型,操作、約束檢查完成后觸發。INSTEAD OF:前觸發型,數據操作語句最多定義一個觸發器,執行觸發器而非引發語句。若滿足完整性約束則需要重新執行這些數據操作。
3、刪除觸發器
DROP TRIGGER第四節:游標
游標:實現對select結果集的逐行處理
1、游標的組成
? 游標結果集(SELECT返回結果集)與游標當前行指針(指定結果集中某一行)
? 特點:定位特定行;從當前位置檢索一行或者多行;支持當前行數據修改;對修改結果提供不同級別的可見性支持。
2、使用游標
(1)聲明游標
? ISO標準語法:DECLARE cursor_name[1] CURSOR FOR select_statement[2]
(2)打開游標
? OPEN cursor_name
(3)提取數據
? FETCH [1]FROM cursor_name[into @ variable_name[,…n]]
(4)關閉游標
? CLOSE cursor_name可以再次打開。
(5)釋放游標
? DEALLOCATE cursor_name釋放分配給游標的所有資源
第九章:安全管理
內容概要:
1、理解安全控制的基本概念
2、了解SQL Server2008的存取控制
3、掌握SQL Server2008的安全控制實現方式
4、了解Oracle的安全管理
第一節:安全控制概述
數據庫安全性不同意數據的完整性
- 安全性:保護數據以防止不合法用戶故意造成破壞(確保用戶被允許做其想做的事情)
- 完整性:保護數據以防止合法用戶無意中造成的破壞(確保用戶做的事情是正確的)
1、數據庫安全控制的目標
? 保護數據免受意外或故意的丟失、破壞或濫用。
2、數據庫安全的威脅
? 安全計劃需要考慮:可用性損失,機密性數據損失,偷竊和欺詐,意外的損害
3、安全控制模型
? 包括四階段:
- 身份驗證(用戶)
- 操作權限控制(數據庫應用程序與數據庫管理系統)
- 文件操作控制(操作系統)
- 加密存儲與冗余(數據庫)
4、授權和認證
? 認證是一種鑒定用戶身份的機制。授權是將合法訪問數據庫或數據庫對象的權限授予用戶的過程。包括認證用戶對對象的訪問請求。
? DBMS通常采用自主存取控制和強制存儲控制兩種方案來解決安全控制問題。
第二節:存取控制
1、自主存取控制
- 又稱自主安全模式,通過SQL的GRANT,REVOKE,DENY語句來實現。
- 權限種類:維護權限與操作權限(語句權限與對象權限)
- 用戶分類:系統管理頁(sa)、數據庫對象擁有者、普通用戶。
2、強制存取控制
- 為避免自主存取控制模式下數據的“無意泄露”,采用強制存取控制。
- DBMS將全部實體分為主體和客體兩大類。
- 主體:系統活動實體,實際用戶和進程
- 客體:被動實體,受實體操縱,包括文件、基本表、視圖。
- 對于主體和客體,DBMS為他們的每個實例指派一個敏感度標記(Lable)。
- 敏感度標記:DBMS指派,主體為許可證級別,客體為密集。分絕密,秘密,可信和公開等若干級別。
- 強制存取控制遵循如下規則:
- 僅當主體許可證級別大于或等于客體密級,主體可以讀取相應客體
- 僅當主體許可證級別等于客體密級,該主體才能寫相應客體。
第三節:審計跟蹤
- 審計跟蹤實質上是一種特殊的文件或數據庫。系統自動記錄用戶對常規數據的所有操作。
- 審計跟蹤對數據安全由輔助作用
第四節:統計數據庫的安全性
- 統計數據庫提供基于各種不同標準的統計信息或匯總數據。
- 統計數據庫安全系統用于控制對統計數據庫的訪問。
- 統計數據庫允許用戶查詢聚合類型的信息,如總和、平均等,但不允許查詢個人信息。
第五節:SQL Server的安全控制
1、身份驗證模式
-
Windows身份驗證模式
SQL Server通過Windows操作系統獲得用戶信息,驗證登錄名和密鑰,一般推薦
-
混合身份驗證模式
Windows授權用戶和SQL授權用戶可以登錄
2、登陸賬戶
-
兩類
- SQL Server自身負責身份驗證的賬戶,內置系統賬戶與用戶自己創建
- 登錄到SQL Server的Windows網絡賬戶,可以是組賬戶或用戶賬戶。
-
建立登陸賬戶
CREATE LOGIN login_name -
修改登陸賬戶屬性
ALTER LOGIN login_name -
刪除登錄賬戶
DROP LOGIN login_name
3、數據庫用戶
-
用戶有了登陸賬戶,只能連接到SQL服務器,并不具有訪問數據庫的權限
-
映射:讓登陸賬戶成為數據庫用戶的操作成為映射。一個登錄賬戶可以映射為多個數據庫用戶默認情況下,新建數據庫只有一個用戶:dbo,數據庫用戶的擁有者。
-
建立數據庫用戶
CREATE USER user_name[|FOR|FROM] LOGIN login_name -
Guest用戶,特殊數據庫用戶,匿名訪問。沒有映射到登錄賬戶的時候使用
- GRANT CONNECT TO guest
- REVOKE CONNECT TO guest
-
刪除數據庫用戶
DROP USER user_name
4、權限管理
-
登錄賬戶成為合法用戶后沒有任何操作權限,就需要為用戶授予數據庫數據及其對象的操作權限
(1)對象級別權限(6種)SELECT、INSERT、UPDATE、DELETE、REFERENCES、EXECUTE
- 授權語句:GRANT對象權限ON對象TO(主體:數據庫用戶名或角色)[WITH GRANT OPTION]
- 拒絕權限:DENY對象權限ON對象TO(主體:數據庫用戶名或角色)[CASCADE][ AS主體]
- 受權語句:REVOKE對象權限ON對象TO(主體:數據庫用戶名或角色)[CASCADE][ AS主體]
(2)語句級別的權限CREATE DATABASE|PROCEDURE|TABLE|VIEW|FUNTION|BACKUP DATABASE|LOG
5、角色
-
定義:一組具有相同權限的用戶就是角色。
-
SQL Server2008中,角色分為預定義的系統角色和用戶角色兩種
- 系統角色又分為固定服務器角色(服務器級角色)和固定數據庫角色(數據庫級角色)
- 用戶角色均是數據庫級角色
-
固定服務器角色
- Bulkadmin:執行BULK INSERT語句權限
- Dbcreator:創建、修改、刪除還原數據庫權限
- Diskadmin:具有管理磁盤文件的權限
- Processadmin:管理運行進程權限
- Securtyadmin:專門管理登陸賬戶、讀取錯誤日志執行CREATE DATABASE權限的賬戶、便捷
- Serveradmin:服務器級別的配置選項和關閉服務器權限
- Setupadmin:添加刪除鏈接服務器
- Sysadmin:系統管理員,Windows超級用戶,自動映射為系統管理員
- Public:系統預定義服務器角色,每個登錄名都是這個角色的成員
-
固定數據庫角色
定義在數據庫級別上,存在于每個數據庫中,用戶加入固定數據庫角色就具有數據庫角色權限
-
用戶定義的角色
-
用戶定義的角色屬于數據庫一級
-
用來簡化使用數據庫時的權限管理
-
用戶定義的角色成員可以是用戶定義角色或數據庫用戶。注意:角色中的成員擁有的權限=成員自身權限+所在角色權限。但若某個權限正在角色中被拒絕,則成員不在擁有。
-
創建角色:CREATE ROLE
實例:
CREATE ROLE MathDept[AUTHORIZATION Software]注意:為用戶定義角色授權、添加、刪除用戶定義的角色中的成員與固定數據庫角色一致。
-
刪除用戶定義角色:DROP ROLE
實例:
DROP ROLE MathDept
-
第六節:Oracle的安全管理
- Oracle的安全機制分為數據庫級安全控制、表級、列級、行級的安全控制
- 數據庫級的安全性通過用戶身份認證和授予用戶相應的系統權限來保證;
- 表級、列級、行級的安全性通過授予或回收對象權限保證。支持集中式、分布式、跨平臺應用
- Oracle系統通常設置兩級安全管理員
- 全局級:負責管理、協調、維護數據一致性和安全性;
- 場地級:負責本屆點數據庫安全性,用戶管理,系統特權與角色管理
1、用戶與資源管理
- 按權限大小劃分為DBA用戶與普通用戶
- DBA用戶由DBMS自動創建,sys與sysyem用戶,擁有全部系統特權
- 普通用戶:由DBA用戶或有相應特權的用戶創建,并授予系統特權
- 建立用戶
- 管理用戶和資源
- DBA特權用戶可以改變一個用戶資源使用限額、密碼、登錄次數等
- 刪除用戶DROP USER
2、權限管理
-
(1)系統特權三種默認特權
- Connect:不能建立任何對象,可以查詢數據字典及訪問數據庫
- Resource:可建立數據庫對象(表、視圖、索引)
- BDA:擁有預定義的全部權限
-
(2)對象特權
用于維護表級、行級、列級數據的安全性
第十章:數據庫運行維護與優化
內容概要:
1、了解數據庫運行維護的基本原理
2、了解運行狀態監控與分析
3、了解數據庫存儲空間管理
4、掌握數據庫性能優化的方法
第一節:數據庫運行維護的基本任務
DBAS進入運行維護階段的主要任務:
? 保證數據庫系統安全、可靠且高效率地運行。
? 數據庫的運行除了DBMS與數據庫外,還需要各種系統部件協同工作。
? 首先必須有各種相應的應用程序
? 其次各應用程序與DBMS都需要在操作系統(OS)支持下工作。
維護工作包括:
- 數據庫轉儲與恢復
- 數據庫安全性、完整性控制
- 檢測并改善數據庫性能
- 數據庫的重組和重構
- 重組不修改數據庫原有設計結構和物理結構
- 重構部分修改模式和內模式
第二節:運行狀態監控與分析
數據庫的監控分析:指管理員借助工具檢測DBMS的運行情況,掌握系統當前或以往的負荷、配置、應用等信息,并分析檢測數據的性能參數和環境信息,評估DBMS的整體運行狀態。
根據監控分析實現不同,分為:
- 數據庫系統建立的自動監控機制
- 由DBMS自動監測數據庫的運行情況
- 管理頁手動實施的監控機制
根據監控對象不同,分為:
-
數據庫構架體系的監控
監控空間基本信息、空間使用率與剩余空間大小等。
-
數據庫性能監控
監控數據緩沖區命中率、庫緩沖、用戶鎖、索引使用、等待事件等。
第三節:數據庫存儲空間管理
對數據庫使用空間來進行管理時一項非常重要的工作。
空間使用情況變化帶來的問題:
- 降低數據庫系統服務性能
- 空間溢出導致災難停機事故
數據的存儲結構分為:
- 邏輯存儲結構
- 物理存儲結構
SQL Server數據庫中一個邏輯上的數據庫直接和一組物理上的數據文件對應,沒有表空間概念
DBMS對空間的管理包括:創建數據庫空間、更改文件大小、刪除空間、修改空間狀態,新建、移動、關聯數據文件等。
第四節:數據庫性能優化
? 數據庫性能優化是DBAS系統上線后最常見的運行維護任務之一。
? 進行數據庫性能優化時,首先要確定優化目標,一般從數據庫運行環境,參數調整、模式調整、數據庫存儲優化、查詢優化幾個方面考慮。
1、數據庫運行環境與參數調整
? 一般來說,可以從外部環境、調整內存分配、調整磁盤I/O、調整資源競爭等幾個方面著手改變數據庫參數,提高其性能。
? 外部調整:數據庫性能和外部環境有很大的關系,主要外部條件包括:CPU、網絡(大量的SQL數據在網絡上傳輸會導致網速變慢)。
? CPU使用情況判斷依據:對于一臺數據庫服務器,如業務空閑時使用率超過90%。說明服務器缺乏CPU資源,如高峰時CPU使用了仍然低,說明服務器CPU資源充足。
? 解決方案:增加CPU數量或者終止需要很多資源的進程。
? 調整內存分配:調整相關參數控制數據庫內存分配,很大程度改善數據庫系統性能
? 調整磁盤I/O:數據庫性能優劣的重要度量是響應時間。
? 改善方法:令I/O時間最小化,減少磁盤上文件競爭帶來的瓶頸。
? 調整競爭:
- 修改參數以控制連接到數據庫的最大進程數
- 減少調度進程的競爭
- 減少多線程服務進程競爭
- 減少重做日志緩沖區競爭
- 減少回滾段競爭
2、模式調整與優化
? 數據庫的規范化過程:高效率利用存儲空間,減少數據的冗余,減少數據的不一致性。
? 問題:規范化關系解決了數據庫維護的異常,并使數據冗余最小化。但會導致數據處理性能下降。
? 反規范化:將規范化關系轉換為非規范化關系的過程。
? 反規范化方法:增加派生冗余列、增加冗余列、重新組表、分割表和新增匯總表方法。都會破壞數據完整性。
? 采用反規范化技術從實際出發均衡利弊
? (1)增加派生性冗余列
增加的列由表中的一些數據項經過計算生成。
作用:查詢時減少連接操作,避免使用聚合函數。
例如:銷售單據明細表(單據編號,商品編號,單價,數量,總價),總價=單價*數量,屬于派生性增加冗余列
? (2)增加冗余列
在多個表中增加具有相同語義的列,常用來在查詢時避免連接操作。(外碼不屬于這種情況)
? (3)重新組表
當用戶經常查看的某些數據是由多個表連接之后才能得到,就可以考慮先把這些數據重新組成一個表,這樣在查詢時會減少連接提高效率。
? (4)分割表(重點)
水平分割:根據行的使用特點進行分割,分割之后所有表的結構都相同。而存儲的數據不同。使用并(Union)操作。
垂直分割:根據列的特點分割,分割后所得表除了都包含主碼外其他列都不相同。通常將常用列與不常用列分別放在不同表中,查詢減少I/O次數。缺點是使用連接(Join)操作
? (5)新增匯總表
? 大量執行報表等匯總操作會影響性能。
? 為降低匯總操作的三級,將頻繁使用的統計中間結果或最終結果存儲在匯總表中,從而降低數據訪問量和匯總操作的CPU計算量
? 如:日銷售額統計表
3、存儲優化
(1)物化視圖(索引視圖)
? 定義:包括一個查詢結果的數據庫對象,是預先計算并保存表連接或聚集等耗時多的操作結果。(一個定期刷新數據的視圖,自動刷新或人工刷新)
? 適用于多個數據量較大的表進行連接操作及數據庫中在多個站點的表進行連接時使用。
? 物化視圖還可以進行遠程數據的本地復制(物化視圖的存儲也稱為快照),用于實施數據庫間的同步。
(2)聚集
聚集是物理存儲表中數據的可選擇的方法。
一個聚集是一組表,將經常一起使用的具有同一公共列值的多個表中的數據行存儲在一起,由公共列構成聚集碼。
作用:最小化必須執行的I/O次數。
注意:將記錄插入聚集的表之前,必須建立聚集索引,且按聚集碼進行索引;對于劇集中的多個表,聚集值只存儲一次。
劣勢:聚集表的插入、更新、刪除性能差,具體使用要權衡。
4、查詢優化
效率低下的SQL語句常常是系統效率不佳的主要原因。常用優化方法如下:
? (1)合理使用索引
權衡:索引提高查詢效率,索引增加系統開銷。
建立索引原則:
- 是否為一個屬性建索引:該屬性是碼或存在某個查詢中被使用。
- 在哪些屬性建立索引:若一個關系的多個屬性共同出現在若干個查詢中,一般會采用多屬性索引。
- 是否建立聚簇索引:聚簇索引適合范圍查詢,可建立多屬性索引。優點體現在數據記錄存取過程中。
- 使用散列還是樹索引:散列適合等值查詢;關系數據庫多使用B+索引,支持作為搜索碼的屬性上的等值查詢和范圍查詢。
索引使用原則:
- 經常在查詢中作為條件被使用的列,應為其建立索引。
- 頻繁進行排序或分組的列,應為其建立索引。
- 一個列的值域很大時,應為其建立索引。
- 如果待排列的列有多個,建復合索引。
- 可以使用系統工具來檢查索引完整性,必要時進行修復。當數據表更新大量數據后,刪除并重建索引以提高查詢。
- 索引建立完成后,運行期間還需調優。
- 調優的目的:動態地評估需求。
索引調整和修改的原因:
-
由于缺少索引,某些查詢語句執行時間過長。
-
某些索引自始至終沒有使用,卻占用了較多磁盤空間。
-
某些索引建立在被頻繁改變的屬性上,導致系統開銷過大。
(2)避免或簡化排序
ORDER BY和GROUP BY語句的執行涉及排序,磁盤排序開銷很大,應利用索引自動以適當的次序產生輸出。
影響優化器的因素:
由于現有索引不足,導致排序索引中不包括一個或幾個待排序的列。
Group by和order by子句中列的次序與索引次序不一致。
排列的列來自不同的表。
為避免不必要的排序,要正確地增建索引,合理合并數據庫表,如排序不可避免,則簡化它,如縮小排序列的范圍。
? (3)消除對大型表數據的順序存取
嵌套查詢中,對表的順序存取嚴重影響查詢效率。
優化方法:對連接列進行索引,或使用并集來避免順序存取。
? (4)避免復雜正則表達式
原因:消耗較多CPU資源進行字符串匹配。
? (5)使用臨時表加速查詢
將表的一個子集進行排序并創建臨時表。
? (6)用排序來取代非順序磁盤存取
原因:非順序磁盤存取最慢。使用以數據庫排序功能為基礎的SQL替代非順序存取。
? (7)不充分的連接條件。
原因:左(右)外連接包含與NULL數據匹配,相比內連接,代價可能很高。
? (8)存儲過程
盡量使用自帶返回參數,而非自定義返回參數,減少不必要參數,避免數據冗余。
? (9)不要隨意使用游標
原因:占用較多系統資源。尤其是大規模并發情況下,很容易使得系統資源耗盡而崩潰。
? (10)事務處理
一旦將多個處理放入事務,會降低系統處理速度。將頻繁操作的多個可分割的處理過程放入多個存儲過程中,這樣就大大提高系統響應速度。
5、SQLServer 性能工具
SQLServer Profiler
用來監視SQL Server事件的多用途監控工具(性能、存儲過程、T-SQL語句運行等監控)。結果存儲在一個跟蹤文件中,可通過分析文件診斷問題。
數據庫引擎優化顧問
測試數據庫工作負荷(一組在數據庫中執行的T-SQL語句),給出優化建議。
第十一章:故障管理
內容提要:
1、了解故障管理類型及數據庫恢復技術
2、了解數據轉儲技術
3、了解如何利用日志文件進行數據恢復
4、了解硬件容錯方案
第一節:故障管理概述
1、故障類型及其解決方案
-
DBMS中常見的4類故障:
- 事務內部故障
- 系統故障
- 介質故障
- 計算機病毒故障
-
事務內部故障
事務故障導致數據不一致,分為預期的(大部分)和非預期的。
(1)預期的事務內部故障
可通過事務過程本身發現的。解決辦法:事務回滾
(2)非預期的事務內部故障
不能由事務程序處理的故障,如運算溢出等。
事務故障的恢復由系統自動完成。
-
系統故障
又稱軟故障,運行期間,由于硬件故障、數據庫軟件及OS漏洞、突然斷電等故障,導致數據不一致。
解決辦法:重啟后,撤銷(UNDO)所有未提交的事務;重做(REDO)所有已提交的事務;
-
介質故障
又稱硬故障,運行期間由于磁頭碰撞、磁盤損壞、強磁干擾、天災人禍等,使得數據丟失的一類故障。導致物理存儲設計損壞,數據文件及數據全部丟失,破壞性最大。
容錯策略:軟件容錯及硬件容錯。
-
軟件容錯:
使用數據庫備份及事務日志文件,通過恢復技術,恢復數據庫到備份結束時的狀態。若故障導致事務日志文件丟失,則不能完全恢復。
-
硬件容錯:
一種方案是使用雙物理存儲設備,如雙硬盤鏡像。缺點:自然災害或機房水災、火災導致雙硬盤同時損壞,則失去保護作用。
另一種方案是設計兩套相同的數據庫系統,通過數據庫軟件機制,同步變化數據。
-
計算機病毒故障
病毒是惡意的計算機程序,破壞OS及數據庫系統(破壞數據文件為主)。
解決辦法:防火墻、殺毒軟件、數據庫備份文件。
2、數據庫恢復技術概述
無論哪種故障,恢復的基本原理是冗余。
數據庫恢復:把數據庫從錯誤狀態恢復到某一已知的正確狀態。
在DBMS中,數據庫恢復子系統占10%以上。
恢復機制涉及兩個問題:如何建立冗余數據;如何利用這些冗余數據實施數據庫恢復。
-
建立冗余據的技術:
數據備份、登記日志文件、數據庫復制、數據庫鏡像、為段設立保存點以及使用后備段與現行頁表來支持對段的保存等。
最常用的是數據備份和登記日志文件。
第二節:數據轉儲
-
數據轉儲即數據備份:
指DBA或DBMS定期復制數據庫,并將其存放到其他介質的過程。
這些保存的副本被稱為后援副本或后備副本。
1、靜態轉儲和動態轉儲
靜態轉儲:期間系統不能運行其他事務,不允許任何存取、修改活動。
靜態轉儲保證數據的一致性,但降低了數據庫的可用性。轉儲和事務是互斥的。
動態轉儲:即允許轉儲和事務并發執行。
動態轉儲不能保證轉儲數據的一致性。
動態轉儲+日志文件(記錄轉儲期間各事務對數據庫的修改活動記錄):既保證數據一致性又提高了數據庫的可用性。
2、數據轉儲機制
完全轉儲:對數據庫中所有數據進行轉儲。占據較多時間和空間,但恢復時間短。
增量轉儲:只復制上次轉儲后發生變化的文件或數據塊。所需時間及空間短,但只能和完全轉儲配合才能對數據庫進行恢復。
差量轉儲:對最近一次數據庫完全轉儲以來發生的數據變化進行轉儲。
3、多種轉儲方法結合使用
僅使用完全轉儲:占據時間和空間多,代價大。
完全轉儲+增量轉儲:恢復時間較長。
完全轉儲+差量轉儲:恢復時間短。
第三節:日志文件
1、日志文件的概念
DBMS運行中,將所有事務的修改操作登記到日志文件。
作用:事務故障恢復和系統故障恢復必須使用日志文件。
在動態轉儲方式中必須建立日志文件。
在靜態轉儲方式中也可使用日志文件。
2、日志文件的格式與內容
兩種格式:
- 以記錄為單位的日志文件
? 需要記錄的內容:
各個事務的開始標記 BEGIN TRANSACTION
各個事務的結束標記 COMMIT OR ROLLBACK
各個事務的所有更新操作
- 以數據塊為單位的日志文件
? 日志記錄的內容包括:
事務標識和被更新的數據塊
3、登記日志文件的原則
- 登記的次序嚴格按并行事務執行的時間次序。
保證事務對數據庫的操作的可再現性和正確性。
- 必須先寫日志文件,后寫數據庫。
先后順序導致必然性。
4、檢查點
檢查點的作用
最大限度地減少數據完全恢復時必須執行的日志部分。
-
檢查點的引入
在日志中增加檢查點記錄,增加一個“重新開始文件”。
檢查點記錄的內容:建立檢查點時刻正執行的事務清單;這些事務最近一個日志記錄的地址。
重新開始文件記錄的內容:各個檢查點記錄在日志中的地址。
-
基于檢查點的恢復步驟
①從“重新開始文件”中找到最后一個檢查點記錄在日志文件中的地址,從而找到最后一個檢查點記錄。
②由該檢查點記錄得到執行的事務清單ACTIVE_LIST。
③從檢查點開始正向掃描文件。
④對UNDO-LIST中的事務執行UNDO, 對REDO-LIST中的事務執行REDO。
第四節:硬件容錯方案
1、概述
? 由于數據庫運行的硬件故障、機房電力故障、機房自然災害等,要求從硬件級別對DBMS進行保護。
? 從DBMS運行所需要的各種環境出發,分析支撐數據庫系統運行的環節。
? 相關度最緊密的技術:數據庫存儲保護技術,服務器容錯技術及數據庫鏡像與容災技術。
2、磁盤保護技術
- RAID:廉價冗余磁盤陣列,多塊磁盤構成的一個整體。
RAID依靠冗余技術 數據保護:
- 鏡像冗余
即把所有的數據復制到其他設備。
額外開銷大:更多的磁盤、控制器、電纜。
- 校驗冗余
對成員磁盤的數據執行異或(XOR)操作,得到其校驗值,并存放在另外的校驗盤上。
實現復雜,但比鏡像冗余占據的空間小。
-
RAID根據所采用的方法不同,分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6, RAID-7,RAID-10,RAID-50,RAID-60。
RAID-0:將多個磁盤合并成一個大的磁盤,不具有冗余,并行I/O,速度最快。
RAID-1:兩組以上的N個磁盤相互作鏡像,在一些多線程操作系統中能有很好的讀取速度,理論上讀取速度等于硬盤數量的倍數,另外寫入速度有微小的降低。只要一個磁盤正常即可維持運作,可靠性最高。
RAID-5:RAIDLevel 5是一種儲存性能、數據安全和存儲成本兼顧的存儲解決方案。它使用的是Disk Striping(硬盤分區)技術。RAID5至少需要三顆硬盤,RAID5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上。
RAID-10:RAID0與RAID-1的組合體,繼承了前者的快速,后者的安全。 RAID-10冗余度為50%。
3、服務器容錯技術
- 引入服務器容錯原因
解決服務器硬件異常問題。
- 服務器容錯技術簡介
采用兩臺相同的服務器,共享存儲設備。(雙機熱備,Active-Standby)
兩臺服務器之間會有私有網絡進行心跳檢測
-
其他服務器容錯技術
硬件級別:自行設計制造的專用軟硬件架構。
軟件級別:專門的服務器級別容錯技術,如Oracle提供了RAC架構。
4、數據庫鏡像與數據庫容災
- 引入數據庫鏡像原因
前面幾種恢復技術都必須及時正確地轉儲數據庫。
- 數據庫鏡像簡介
是一種用于提高數據庫可用性的解決方案,它根據DBA的要求,自動把整個數據庫或關鍵數據復制到另一個磁盤上。
-
數據庫鏡像分類
- 雙機互備援模式
兩臺機器均為工作機。正常狀況下均為系統提供支持,互相監視對方的運行情況。
- 雙機熱備份模式
一臺為工作機,一臺為備份機。工作機為系統提供支持,備份機監視工作機的運行情況
-
工作方式
“數據庫鏡像會話”中,主體服務器和鏡像服務器作為“伙伴”進行通信和協作。在會話中扮演互補角色。一旦出現故障,使用“角色切換”過程來互換主體服務器和鏡像服務器。
5、SQL Server數據庫鏡像簡介
SQLServer數據庫鏡像是將數據庫事務處理從一個SQLServer數據庫移到不同的SQLServer數據庫。
鏡像的復制是一個備用的復制,不能直接訪問,只用來進行錯誤恢復。
“見證服務器”使鏡像服務器自動識別。
兩種運行模式 :“高安全性模式”及運行模式。
? SQL Server數據庫鏡像提供三種實現方式:
高可用性。兩臺服務器同步事務寫入,支持自動錯誤恢復。
高保護性。兩臺服務器同步事務寫入,手工錯誤恢復。
高性能。兩臺服務器寫入不同步,手工錯誤恢復。
第十二章:備份與恢復數據庫
內容概要:
1、理解備份與恢復的概念
2、了解SQL Server的備份與恢復機制
3、了解Oracle的備份與恢復機制
第一節:備份與恢復的概念
1、備份數據庫
數據庫備份的原因:
? 防止數據丟失(存儲介質故障、用戶的操作錯誤、服務器故障、病毒侵害、自然災害),一旦出現問題、能夠根據備份進行恢復。
? 是數據轉移的一種方式。(將數據庫從一臺服務器復制到另一臺服務器、設置數據庫鏡像、文件歸檔和災難恢復)
2、恢復數據庫
? 恢復數據庫指數據庫系統出現故障時,利用備份副本將數據庫恢復到某個正確、一致的狀態的過程。
? 兩種類型:介質故障恢復、非介質故障恢復
第二節:SQL Server的備份與恢復機制
1、恢復模式
? 恢復模式是一個數據庫屬性,它用于數據庫備份和還原操作的基本行為。
? 恢復模式決定備份類型和還原方案。備份類型決定數據庫備份的內容。
? 三種恢復模式:簡單恢復模式、完整恢復模式、大容量日志恢復模式
-
簡單恢復模式
此模式簡略的記錄大多數事務,不備份事務日志。所記錄的信息只是為了確保在系統崩潰或還原數據備份之后數據庫的一致性。
-
完整恢復模式
此模式完整的記錄了所有事務,并保留所有事務日志記錄,直到將他們備份
-
大容量日志恢復模式
此模式簡略的記錄大多數大容量操作(例如索引創建和大容量加載),完整地記錄其他事務。大容量日志恢復模式提高了大容量操作的性能,常用完整恢復模式的補充。
2、備份內容及時間
- 備份內容
- 用戶數據庫
- 系統數據庫
- 備份時間
- 系統數據庫:修改之后進行備份
- 用戶數據庫:周期性備份
進行下列操作后,立刻進行備份
- 創建數據庫之后,或批量加載數據之后
- 創建索引之后。
- 執行清理事務日志的操作之后
- 執行大容量數據操作之后。
3、SQL Server的備份機制
(1)備份設備
? SQL Server將備份數據庫的場所稱為備份設備。支持將數據庫備份到磁帶或磁盤上。
備份設備類型:
- 永久備份設備:在備份之前需要建立。
- 臨時備份設備:不需要預先建立,在備份時將數據庫直接備份到物理文件上
(2)備份類型
- 數據庫備份
- 完整數據庫備份
- 差異數據庫備份
- 文件備份
- 文件備份
- 差異文件備份
- 事務日志備份
完整數據庫備份(也稱完全轉儲)
? 完整備份將備份整個數據庫,包括事務日志部分(以便可以恢復整個備份)。完整備份代表備份完成時的數據庫。是恢復的基線,備份數據文件、數據庫對象和數據的信息,備份備份過程中發生的活動,備份未提交的事務到日志。
差異數據庫備份(也稱差異轉儲)
? 備份從上次完整備份之后數據的改變
? 備份差異備份過程中發生的活動
? 備份未提交的事務到日志
? 比完整備份節約時間
? 以前一次完整備份為基準點(成為差異基準)
? 在還原從差異備份前,應先還原最新的完整備份,在還原基于該完整備份的最新的差異備份。
文件備份
? 可以分別備份和還原數據庫中的文件。使用文件備份可以僅還原已損壞的文件,而不必還原數據庫的其余部分,從而提高恢復速度。
差異文件備份
? 創建文件或文件組的完整備份后,可以基于該完整備份創建一系列的差異備份。
? 差異文件備份只捕獲自上一次文件備份以來更改的數據
事務日志備份
? 備份從上次日志備份之后的日志記錄,備份完成后要截斷日志
? 事務日志備份僅用于完整恢復模式或大容量日志恢復模式
三種類型的事務日志備份:
純日志備份,大容量操作日志備份,結尾日志備份。
(3)常用備份策略
完整備份
完整備份+日志備份
完整備份+差異備份+日志備份
-
完整備份
適用于數據庫數據不是很大,而且數據更改不是很頻繁的情況。
完整備份一般可以幾天進行一次或幾周進行一次。
當對數據庫數據的修改次數不是很頻繁,而且允許一定量的數據丟失時,可以選擇只用完整備份策略。
完整備份包括了數據和日志的備份
-
完整備份+日志備份
如果允許丟失太多的數據,而且又不希望經常地進行完全備份(因為完全備份進行的時間比較長),則可以在完全備份中間加一些日志備份。
例如,可以每天0:00點進行一次完全備份,每隔幾小時進行一次日志備份。
-
完整備份+差異備份+日志備份
完全備份加差異備份和日志備份的策略,即在完全備份中間加一些差異備份,在差異備份中間加一些日志備份。
比如每周周日0:00進行一次完全備份,然后每天0:00進行一次差異備份,然后再兩次差異備份之間增加一些日志備份
這種策略的好處是備份和恢復的速度都比較快,而且當系統出現故障時,丟失的數據也比較少。
(4)實現備份
- 使用SQL Server管理平臺
- 使用T-SQL語句
4、SQL Server的恢復機制
SQL Server支持在一下級別恢復(還原)數據:
- 數據庫(數據庫完整還原)
- 數據文件(文件還原)
還原順序
- 恢復最近的完全備份;
- 恢復最近的差異備份(如有);
- 恢復自差異備份之后的所有日志備份(按備份的先后順序)
- 恢復數據庫
實現還原
- 使用SQL Server管理平臺
- 使用T-SQL語句
示例:
? 假設已對pubs數據庫進行了完全備份,并備份到MyBK_1備份設備上,假設此備份設備只含有對pubs數據庫的完全備份。則恢復pubs數據庫的語句為:
RESTORE DATABASE pubs FROM MyBK_1第三節:Oracle的備份與恢復機制
####1、Oracle數據庫邏輯備份與恢復
Oracle數據庫常見的故障類型:
- SQL語句錯誤
- 進程失敗
- 實例失敗
- 網絡失敗
- 用戶失敗
- 介質失敗
邏輯備份:
? 指通過工具將數據庫中的數據轉換成專用或通用格式的文件,保存在文件系統中。
? 工具:
- EXP/IMP
- EXPDP/IMPDP
####2、Oracle數據庫物理備份與恢復
物理備份:
? 指對數據物理文件所實施的備份。物理備份管理方法:用戶管理的備份,Recover Manager備份,第三方備份軟件。
恢復數據庫
兩個過程:
? Restore:從備份數據中找到完整備份文件,恢復完整文件的過程。
? Recover:將日志和增量備份的改變應用到數據備份文件,使數據文件恢復到指定時間點上的過程。
第十三章:大規模數據庫架構
內容概要:
1、了解分布式數據庫技術
2、了解并行數據庫技術
3、了解云數據庫技術
4、了解xml數據庫技術
第一節:分布式數據庫
1、分布式數據庫系統概述
分布式數據庫系統與分布式數據庫的區別:
- 分布式數據庫系統——數據分布存儲與若干場地,并且每個場地由獨立于其他場地的DBMS進行數據管理。物理上分散、邏輯上集中的數據庫系統。
- 分布式數據庫——分布式數據庫系統中各場地上數據庫的邏輯集合。
2、分布式數據庫目標與數據分布策略
分布式數據庫目標:
12個目標:
? 本地自治、非集中式管理、高可用性。(最基本特征)
? 位置獨立性、數據分片獨立性、數據復制獨立性。(透明性)
? 分布式查詢、事務管理。(復雜性)
? 硬件獨立性、操作系統獨立性、網絡獨立性、
? 數據庫管理系統獨立性。
數據分布策略:
? 從數據分片和數據分配考慮
? 數據分片(對關系操作)
按一定規則將某一個全局關系劃分為多個片段。四種基本方法:
- 水平分片-每個分片是原始關系所有數據行的子集合
- 垂直分片-每個分片是原始關系所有數據列的子集合
- 導出分片-導出水平分片
- 混合分片-以上三種的混合
數據分配(對分片結果操作)
? 將分片產生的片段分配存儲在各個場地上。解決數據分配的方法:
- 集中式-所有數據片段安排在一個場地上
- 分割式-所有全局數據有且只有一份,分割成若干被分配在特定場地上的片段
- 全復制式-全局數據有多個副本,每個場地上有一個完整的數據副本
- 混合式-介于分割與全復制式之間。
3、分布式數據庫系統的體系結構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WBYpUGaD-1582357290412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580363563834.png)]
分布透明性
? 分片透明性。用戶無需考慮數據分片
? 位置透明性。用戶只需考慮數據分片情況,無需考慮數據分片位置。
? 局部數據模型透明性。用戶既要了解全局數據的分片情況還要了解各片段的副本復制情況及位置分配情況。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JXFt7EfM-1582357290412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580363916824.png)]
4、分布式數據庫的相關技術
分布式查詢
? 用戶與分布式數據庫系統的接口。分布式查詢優化需考慮:
①操作執行的順序。
②操作的執行算法(連接操作和并操作)。
③不同場地間的數據流動的順序。
分布式事務管理
主要包括:
- 恢復控制:基于兩階段提交協議
- 并發控制:基于封鎖協議
第二節:并行數據庫
1、并行數據庫概述
? 并行數據庫——通過并行實現各種數據操作,如數據載入、索引建立、數據查詢,可以提高系統的性能。
? 優勢:增強的可用性:當存儲某個關系的場地系統崩潰時,可繼續使用存儲在別的場地的副本。
2、并行數據庫系統結構
實現并行DBMS的三種硬件結構:
(1)共享內存系統(Shared Memory)
(2)共享磁盤系統(Shared Disk)
(3)無共享資源系統(Shared Nothing)
(4)層次結構(Hierachical)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ygk1GBlD-1582357290413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364390101.png)]
(1)共享內存系統:多個cpu通過連接網絡進行通信,并能訪問公共的主存。
? 隨著cpu增加,造成內存沖突
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bmjDwoZg-1582357290413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364503454.png)]
(2)共享磁盤系統:每個cpu擁有自己的私有磁盤內存,并通過連接網絡直接訪問所有磁盤。
? 通過網絡實現cpu之間的數據交換,增加了通信代價。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-tJ9IIPxI-1582357290414)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364624509.png)]
(3)無共享資源系統:每個cpu擁有自己的內存和磁盤空間,并無公共區域,cpu之間所有通信通過連接網絡來完成。
存在通信代價,非本地磁盤訪問代價高。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-O6gJ456Y-1582357290414)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364679878.png)]
(4)層次結構:前三種體系的結合。分為兩層,頂層是無共享結構,底層是共享內存或共享磁盤結構。
集成了以上三種結構的優缺點。
####3、數據劃分與并行算法
一維數據劃分:將大數據集水平劃分到多個磁盤上,可以通過并行讀寫有效地利用多磁盤的I/O帶寬。
(1)輪轉法——如果系統有n個cpu,將第i條記錄劃分到第i mod n 處理器的方法稱為輪轉劃分方法。
(2)散列法——使用特定的哈希函數,作用于選定的屬性,將記錄劃分到不同的處理機。
(3)范圍劃分法——首先對記錄進行排序,然后按照排序碼將其劃分成n個區域,使每個區域中近似含有相同數目的記錄,處于第i個區域的記錄分布于處理機i。
優勢劣勢:
(1)輪轉法可有效應用于需要訪問整個關系的查詢處理,當需要訪問部分記錄時,散列法和范圍更優。
(2)范圍法可能會導致數據偏斜,也就是不同分片含有的記錄數目差別很大。數據偏斜會造成存有大片數據分片的處理機的性能瓶頸問題。
(3)散列法優點是:即使數據隨時間增加或減少,也能保持均勻分布。
多維數據劃分:
-
CMD多維劃分法
-
BERD多維劃分法
-
MAGIC多維劃分法。
并行算法:
(1)并行排序:
a.用區域劃分法先將關系的所有記錄重新分布再進行排序。
b.每個cpu使用排序算法對分配給它的記錄排序。每個處理機得到分配給它的所有記錄的有序序列。
c.通過按照區域劃分的對應次序訪問處理機得到完整的有序關系。
難點:如何進行區域劃分來使得每個處理機分布的記錄數目近似相等。否則,對具有大量記錄的處理機排序時將產生性能瓶頸,從而限制并行排序的可擴展性。
(2)并行連接:
假設:對關系A和B進行劃分時,連接屬性為age,關系初始分布在若干磁盤上,但不是基于連接屬性分布的。
方法:對關系A和B重新劃分:把連接屬性age的取值分成k個區域
第三節:云計算數據庫架構
1、云間算概述
? 云計算時一種商業計算模型。它將計算任務分布在大量計算機構成的資源池上,使各種應用系統能夠根據需要獲取計算力、存儲空間和信息服務。
云(cloud):即云計算提供商的數據中心的軟硬件設施。
云分為:
- 公共云:以即用即付的方式提供給公眾。
- 私有云:不對公眾開放的云。
- 混合云
2、云數據體系結構
云數據庫(CloudDB,簡稱云庫):云+數據庫。目前主要的云計算平臺:
AWS、GAE、Hadoop
谷歌云 計算基礎架構模式(4個子系統)
Google File System文件系統
Map/Reduce分布式編程環境
Chubby分布式鎖機制
BigTable大規模分布式數據庫
3、云數據庫與傳統數據庫比較
云數據庫的缺點:
數據安全問題
對云的管理問題
對因特網的依賴
第四節 :XML數據庫
1、XML數據庫概述
XML,eXtensible Markup Language.可擴展標識語言。
XML數據庫——支持對XML文檔格式進行存儲和查詢等操作的數據庫管理系統。
三種類型的XML數據庫 :
XML Enabled Database(XEDB) )——能處理XML的數據庫。
Native XML Database(NXD) )——純XML數據庫。
Hybird XML Database(HXD)——混合XML數據庫。
與傳統數據庫比較,XML數據庫 的優勢:
能夠對半結構化數據進行處理。
提供 對標簽和路徑的操作。
能清晰地表達數據的層次特征。
2、SQL Server 2008 與 XML
SQL Server中的XML語句:
FOR XML:將返回結果變為XML格式。
示例:
SELECT * FROM Table_cus WHERE …. FOR XML RAWSQL Server中的XML數據類型:
XML類型的字段
示例:
CREATE TABLE T_info ( cid int , Content xml )例題講解
1、Google的云數據庫是一個分布式的結構化數據存儲系統,稱作( )。
答案:Bigtable
2、在分布式數據庫中,使用( )模式來描述各片段到物理存放場地的映像。
答案:分配
3、在并行數據庫中,有關系R(A, B)和S(A, C),需要將它們根據A屬性拆分到不同的磁盤上。現有查詢SELECT B FROM R, S WHERE R.A = S.A。下列拆分方式中最適合該查詢的是( )
A.散列劃分
B.輪轉法
C.范圍劃分
D.列表劃分
答案:A
4、關于分布式數據庫,下列說法錯誤的是( )
A.分布式數據庫系統的目標是利用多處理機結點并行地完成數據庫任務,以提高數據庫系統的整體性能
B.分布式數據庫中位置透明性是指數據分片的分配位置對用戶是透明的,使得用戶在編程時只需考慮數據分片情況,而不用關心具體的分配情況
C.分布式數據庫的事務管理包括恢復控制和并發控制,恢復控制一般采用的策略是基于兩階段的提交協議
D.分布式數據庫的查詢代價需要考慮站點間數據傳輸的通信代價,一般來說導致數據傳輸量大的主要原因是數據間的連接操作和并操作
答案:A
5、在分布式數據庫應用系統中,對全局關系進行分片設計時,下列說法正確的是( )
A.對于一個全局關系中的任意數據,不允許其不屬于任何一個片段,也不允許某些數據同時屬于不同的片段
B.對于一個全局關系中的任意數據,可以允許其不屬于任何一個片段,也允許某些數據同時屬于不同的片段
C.對于一個全局關系中的任意數據,不允許其不屬于任何一個片段,但允許某些數據同時屬于不同的片段
D.對于一個全局關系中的任意數據,對于一個全局關系,可以允許某些數據屬于不同片段,但不允許某些數據同時屬于不同的片段
答案:A
第十四章:數據倉庫與數據挖掘
內容概要:
1、了解數據倉庫相關技術
2、了解數據倉庫的設計、建造、運行及維護
3、了解OLAP及多維數據模型
4、了解數據挖掘技術
第一節:決策支持系統的發展
-
如何利用日益增長的數據為企業的管理和決策服務?
經過研究和實踐產生了數據倉庫和數據挖掘技術。
1、決策支持系統及其演化
- 一般將數據分為:
- 分析型數據
- 操作型數據:由于企業的基本業務系統產生的數據,用于聯機處理環境(OLTP)。
- 決策支持系統(DSS):綜合利用大量數據,有機組合眾多模型(數學模型和數據處理模型),通過人機交互,輔助各級決策者實現科學決策的系統
- Keen和Scott Morton于70年代中期首次提出了“決策支持系統”(Decision Support System,簡稱DSS)一詞,標志著利用計算機與信息支持決策的研究與應用進人了一個新的階段,并形成了決策支持系統新學科。
- 20世紀80年代,個人計算機和第四代編程語言的出現,使得最終用戶可以對數據和系統直接控制,很多管理信息系統(MIS)開始出現,用以支持企業管理決策。MIS被用戶和開發人員改稱為決策支持系統,即DSS。
- 傳統的DSS一般建立在OLTP環境下。
- 演化過程進行到抽取程序階段大型OLTP出現后,使用抽取程序解決性能和歷史數據問題。 用抽取程序能將數據從高性能聯機事務處理方式中轉移出來,所以,在需要總體分析數據時就與OLTP處理性能不發生沖突。
- 自然演化體系結構——貫穿于公司或組織的抽取處理模式很常見,這種由失控的抽取過程產生的結構被稱為“自然演化體系結構”。
- 自然演化體系結構的問題
- 忙碌的IT人員
- 蜘蛛網問題
- 數據缺乏可信性
- 生產率問題
- 從數據到信息的轉換的不可行性
2、基于數據倉庫的決策支持系統
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PXAzE3d7-1582357290415)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580529280966.png)]
? 數據倉庫是核心,操作型系統是數據源,決策支持系統是數據的需求者。
第二節:數據倉庫技術概述
1、數據倉庫的概念與特性
- 建立數據倉庫的目的:根據決策需求對企業數據采取適當的手段進行集成,形成一個綜合的、面向分析的數據環境,用于支持企業的信息型、決策型的分析應用。
- 數據倉庫的特性:面向主題性、集成性、不可更新性和時間特性等。
- 主題和面向主題
- 數據倉庫的數據是以面向主題的方式進行組織的
- 肢體也稱為分析主題或分析領域,用于表示某一宏觀的分析領域所涉及的對象,以及與對象有關的 數據集合。
- 目前,數據倉庫主題數據的實現采用關系型數據庫。
- 數據倉庫的其他特征
- 集成:數據倉庫最重要的特征。分為數據抽取、轉換、清理(過濾)和裝載4項任務。
- 不可更新:數據倉庫中的數據以批量方式處理,不進行一般意義上的數據更新
- 隨時間變化:不斷捕捉數據
2.數據倉庫的體系結構與環境
- 從數據層次角度來看,典型的數據倉庫的數據體系結構包括:操作型數據、操作型數據存儲(Operation Data Store)、數據倉庫(Data Warehouse)和數據集市(Data Mart)。也可以包括個體層數據。
- 從功能結構看可分為數據處理、數據管理和數據應用三個層次。
3.數據倉庫的數據組織
-
粒度
數據倉庫的數據單位中保存數據的細化或綜合程度的級別。細化程度越高,粒度越小。
- 粒度影響到數據倉庫的數據量及系統能回答的查詢的類型。
- 進行數據倉庫的數據組織時,應根據當前應用的需求進行多粒度級設計。滿足多角度、多層次數據查詢要求。
-
數據分區(分割)
數據分散到各自的物理單元中去,它們能獨立地處理。
- 最常見的是按照時間標準分區。
- 數據分區的方式可以分成系統層分區(數據庫系統提供的機制)和應用層分區(由應用代碼實現)兩種。
- 如何分區由開發者和程序員控制。
-
元數據
關于數據的數據,或叫描述數據的數據。用于構造、維持、管理、和使用數據倉庫,在數據倉庫中尤為重要。
- 元數據描述了數據的結構、內容、鏈和索引等內容。
- 在數據倉庫中,元數據分成技術型元數據和業務型元數據。
- 元數據解決了人在何時何地為了什么原因及如如何使用數據倉庫的問題。
-
Data Mart
數據集市 – 小型的,面向部門或工作組級數據倉庫。
-
Operation Data Store
操作型數據存儲 — ODS是能支持企業日常的全局應用的數據集合,是不同于DB的一種新的數據環境, 是DW 擴展后得到的一個混合形式。四個基本特點:面向主題的( Subject –Oriented )、集成的、可變的、 當前或接近當前的。
-
ODS分成4類:
- ODSⅠ:數據更新頻率秒級。
- ODSⅡ:數據更新頻率小時級。
- ODSⅢ:數據更新頻率天級。
- ODSⅣ:根據數據來源方向和類型區分。
第三節 設計與建造數據倉庫
1.數據倉庫設計的需求與方法
-
SDLC是典型的需求驅動開發生命周期,CLDS是典型的數據驅動開發生命周期。
-
傳統的系統開發生命周期支持操作型環境,為建立系統,必須首先理解需求,然后進入到設計和開發階段。
-
CLDS由數據開始,一旦數據到手,就集成數據,然后,如果數據有偏差,就檢驗看看數據存在什么偏差,再針對數據寫程序,分析程序執行結果,最后,系統需求才得到理解。
2.數據倉庫的數據模型
-
數據倉庫的數據模型分為概念(E-R圖)、邏輯(關系型模型或多維數據模型)、物理三級數據模型。與普通數據庫系統的數據模型不同:
①一般不包含純操作型數據。
②一般需要擴充關鍵字結構,在其中加入時間屬性。
③需要增加導出數據。
3.數據倉庫設計步驟
- 數據倉庫的設計過程分為:
概念模型設計、技術評估與環境準備工作、邏輯模型設計、物理模型設計、數據生成與應用實現、數據倉庫運行與維護
第四節:數據倉庫的運行與維護
####1.數據倉庫數據的更新與維護
- 數據倉庫維護的基本思路:
根據某種維護策略,在一定條件下觸發維護操作;維護操作捕捉到數據源中的數據變化;通過一定策略對數據倉庫中的數據進行相應的更新操作,以保持兩者的一致性。
-
維護策略
-
實時維護
在數據源發生變化時,立即更新。
-
延時維護
在數據倉庫中的視圖被查詢時完成更新。
-
快照維護
定期對數據倉庫進行維護,觸發條件是時間
-
-
捕捉數據源的變化
當數據源發生變化時,告知數據倉庫源數據發生變化的機制,就是源數據變化的監聽及捕獲問題 。典型的方法有:
-
觸發器
-
修改數據源應用程序
-
通過日志文件
-
快照比較法
-
-
導出數據的刷新
兩種:
-
根據維護對象的數據源對其進行重新計算。
-
根據數據源的變化量在維護對象原有數據的基礎上進行添加和修改,即增量式維護。
用戶不可存取數據倉庫時間的長短是衡量數據維護效率的重要指標。將維護分為“聚集”和“更新”兩個部分。
2.數據倉庫監控與元數據管理
- 數據倉庫監控
對數據倉庫的數據量、各種數據的使用率、用戶和安全狀況、網絡通信情況、網絡數據流量、數據源數據變化情況、集成和維護工具運行效率、查詢響應時間、應用支持效率等進行必要的監控。
-
元數據管理
一般采用元數據庫來存儲和管理元數據。
###第五節 聯機分析處理與多維數據模型
1.OLAP簡介
- OLAP——聯機分析處理或在線分析處理
主要用于支持復雜的分析操作,側重對決策人員和高層管理人員的決策支持。
- OLAP工具一般具有快速、可分析和多維的特點。
2.多維分析的基本概念
-
維——人們觀察數據的角度。
-
數據的多維分析——針對數據倉庫中以多維形式組織起來的數據,從多個角度、不同層次,采取各種數據分析技術,對數據進行剖析,以使用戶能從多角度和不同層次觀察和分析數據。
3.多維分析的基本操作
-
鉆取與卷起
OLAP分析最基本的操作。鉆取指對應于某一維逐步向更細節層方向觀察數據,卷起則反之。
-
切片和切塊
實現局部數據的顯示。
-
旋轉
改變一個報告或頁面顯示的維方向,得到不同視角的數據。最簡單的旋轉就是數據交叉。
4.OLAP的實現方式
OLAP的實現方式有三種:
-
基于多維數據庫的OLAP(MOLAP)
以多維數組為基本存儲結構。
-
基于關系數據庫的OLAP(ROLAP)
采用關系表表示和存儲。(星形模式或雪花模式)
-
混合型的OLAP(HOLAP)
結合MOLAP與ROLAP。具有最好的查詢性能。
-
數據挖掘(Data Mining)——就是從大量的、不完全的、有噪聲的、模糊的、隨機的實際應用數據中,提取隱含在其中的、人們事先不知道的、但又是潛在有用的信息和知識的過程。
-
數據源必須是真實的、大量的、含噪聲的;發現的是用戶感興趣的知識;發現的知識要可接受、可理解、可運用。
第六節 數據挖掘技術
1.數據挖掘步驟
數據挖掘作為知識發展的過程,分為三個階段:
- 數據準備
三個子步驟:數據選取;數據預處理;數據變化。
-
數據挖掘
首先確定挖掘的任務,其次決定挖掘算法。
-
結果解釋評估
剔除冗余或無關的模式。
-
常見的數據挖掘任務
-
分類預測任務
常見的方法:決策樹、神經網絡、規則歸納、支持向量機、貝葉斯、粗糙集、回歸分析、K-最近鄰等。
-
描述型任務
典型的方法:聚類、關聯、分析等。
-
2.關聯規則挖掘
“啤酒和尿布”
- 關聯規則挖掘過程主要包含兩個階段:
- 第一階段必須先從資料集合中找出所有的高頻項目組(Frequent Itemsets),
- 第二階段再由這些高頻項目組中產生關聯規則(Association Rules)。
3.分類挖掘
-
分類挖掘方法——用于預測數據對象的離散類別。一般分為兩個步驟:
-
通過已知數據集,建立分類函數,構造分類器。
-
利用所獲得的分類函數對未知類別標記的數據項進行分類操作。
-
4.聚類挖掘
-
聚類挖掘方法——用于對集中的數據進行分組,使得每組內的數據盡量相似而不同組間的數據盡可能不同。
-
聚類方法包括統計方法、機器學習方法、神經網絡方法和面向數據庫的方法等。
5.時間序列分析
-
時間序列——用時間排序的一組隨機變量。
-
時間序列分析——又稱為數據演變分析,描述行為隨時間變化的對象的規律或趨勢,并對其進行建模。
-
從不同角度可分為:一元時間序列和多元時間序列;等間隔時間序列和不等間隔時間序列;平穩時間序列和非平穩時間序列。
總結
以上是生活随笔為你收集整理的全国计算机三级数据库技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2363):发送get请求
- 下一篇: 存储器的分类及层次结构