做網站在哪個地方買空間網絡營銷是網上銷售嗎
文章目錄
- 5.1 數據庫管理系統(tǒng)
- 5.1.1 概述
- 5.1.2 三級劃分法
- 5.1.3 數據筷型
- 5.2 關系數據庫
- 5.2.1 關系的基本概念
- 5.2.2 關系模型
- 5.2.3 規(guī)范化理論
- 5.3 數據庫控制功能
- 5.3.1 并發(fā)控制
- 5.3.2 數據庫的完整性
- 5.3.3 數據庫的安全性
- 5.3.4 備份與恢復技術
- 5.3.5 數據庫性能優(yōu)化
- 5.4 數據庫設計與建模
- 5.4.1 數據庫設計階段
- 5.4.2 實休聯(lián)系模型
- 5.5 分布式數據庫系統(tǒng)
- 5.5.1 分布式數據庫概述
- 5.5.2 數據分片
- 5.6 數據倉庫技術
- 5.6.1 聯(lián)機分析處理
- 5.6.2 數據倉庫概述
- 5.6.3 數據倉庫的設計方法
- 5.7 數據挖掘技術
- 5.7.2 常用技術與方法
- 5.7.3 數據挖掘技術的應用
- 5.8 非關系數據庫
- 5.8.1 概述
- 5.8.2 相關理論基礎
- 5.8.3 列數據庫
- 5.8.4 文檔數據庫
- 5.8.5 鍵值數據庫
- 5.8.6 圖數據庫
在當今的知識經濟時代,信息是經濟發(fā)展的戰(zhàn)略資源,信息技術已經成為社會生產力中重 要的組成部分。人們充分認識到,數據庫是信息化社會中信息資源管理與開發(fā)利用的基礎,當 今的計算機信息系統(tǒng)也都以數據庫技術為基礎。對千一個國家來說,數據庫的建設規(guī)模和使用 水平已成為衡量該國信息化程度的重要標志。因此,數據庫課程是計算機領域中的一門重要課程,也是系統(tǒng)分析師必須要掌握的專業(yè)知識與技能。
5.1 數據庫管理系統(tǒng)
數據庫是長期存儲在計算機內的、有組織的、可共享的數據集合
,數據庫系統(tǒng)是指在計算機信息系統(tǒng)中引入數據庫后的系統(tǒng),一般由數據庫、數據庫管理系統(tǒng) (DataBase Management System, DBMS) 、應用系統(tǒng)、數據庫管理員 (DataBase Administrator, DBA) 和用戶構成。
5.1.1 概述
數據庫管理系統(tǒng)是一種操縱和管理數據庫的大型軟件,用千建立、使用和維護數據庫。 它對數據庫進行統(tǒng)一的管理和控制,以保證數據庫的安全性和完整性。用戶通過 DBMS 訪問 數據庫中的數據,數據庫管理員也通過 DBMS 進行數據庫的維護工作。 DBMS 可以支持多個 應用程序和用戶用不同的方法在同時或不同時刻去建立、修改和詢問數據庫。大部分 DBMS 提供數據定義語言 (Data Definition Language, DDL) 和數據操作語言 (Data Manipulation Language, DML), 供用戶定義數據庫的模式結構與權限約束,實現對數據的追加、刪除等 操作。
簡單地說,數據庫管理系統(tǒng)是一個能夠提供數據錄入、修改、查詢的數據操作軟件,具有數據定義、數據操作、數據存儲與管理、數據維護、通信等功能,且能夠允許多用戶使用。
5.1.2 三級劃分法
數據庫系統(tǒng)的結構劃分可以有多種不同的層次或不同的角度,典型的是三級劃分法,就是 把數據庫系統(tǒng)劃分為三級模式,在三級模式之間提供兩級映射,這兩級映射保證了數據庫中的 數據具有較高的物理獨立性和邏輯獨立性。
1 .三級模式
數據庫系統(tǒng)的三級模式如圖 5-1 所示,從圖 5-1 中可以看出,數據庫系統(tǒng)由外模式、概念模式和內模式
三級構成。
外模式
:也稱為子模式或用戶模式,對應千用戶級數據庫。外模式用以描述用戶(包括程 序員和終端用戶)看到或使用的那部分數據的邏輯結構,是數據庫用戶的數據視圖,是與某 一應用有關的數據的邏輯表示。
概念模式
:也稱為模式或邏輯模式,對應于概念級數據庫。概念模式是數據庫中全體數據的 邏輯結構和特征的描述,是所有用戶的公共數據視圖,用以描述現實世界中的實體及其性質與 聯(lián)系,定義記錄、數據項、數據的完整性約束條件及記錄之間的聯(lián)系。
內模式
:對應千物理級數據庫,是數據物理結構和存儲方式的描述,是數據在數據庫內部的 表示方式。內模式不同于物理層,它假設外存是一個無限的線性地址空間。內模式定義的是存 儲記錄的類型、存儲域的表示和存儲記錄的物理順序,以及索引和存儲路徑等數據的存儲組織。 一個數據庫只有一個內模式。
2.兩級獨立性
數據庫系統(tǒng)的兩級獨立性是指物理獨立性和邏輯獨立性。三個抽象級別之間通過兩級映射(外模式/模式映射和模式/內模式映射)進行相互轉換,使得數據庫的三級模式形成一個統(tǒng)一的整體。
5.1.3 數據筷型
數據模型是現實世界數據特征的抽象。通過這種抽象,可以將現實世界的問題轉化到計算 機上進行分析與解決。數據模型所描述的內容包括 3 個部分,分別是數據結構、數據操作和數 據約束。其中,數據結構主要描述數據的類型、內容、性質和數據間的聯(lián)系等。數據結構是數 據模型的基礎,數據操作和數據約束都建立在數據結構上。不同的數據結構具有不同的操作和 約束。數據操作主要描述在相應的數據結構上的操作類型和操作方式。數據約束主要描述數據 結構內數據間的語法和詞義聯(lián)系、它們之間的制約和依存關系,以及數據動態(tài)變化的規(guī)則,以 保證數據的正確、有效和相容。人們提出過很多種基本數據模型,其中最著名的有層次模型、 網狀模型、關系模型和面向對象模型。
1 .層次模型
層次模型是最早出現的數據模型,由于它采用了樹狀結構作為數據的組織方式,在這種結構中,每一個結點可以有多個孩子結點,但只能有一個雙親結點,這樣,整體結構也是分層狀 的,所以稱其為層次模型。層次模型數據庫系統(tǒng)的典型代表是 IBM 公司的 IMS 數據庫管理系 統(tǒng),該系統(tǒng)是 1968年推出的,曾經作為大型商用數據庫系統(tǒng)被廣泛使用。
2. 網狀模型
網狀模型用有向圖表示實體類型和實體之間的聯(lián)系。網狀模型的優(yōu)點是記錄之間的聯(lián)系通 過指針實現,多對多的聯(lián)系容易實現,查詢效率高;其缺點是編寫應用程序比較復雜,程序員 必須熟悉數據庫的邏輯結構。由圖和樹的關系可知,層次模型是網狀模型的一個特例。
3.關系模型
關系模型用表格結構表達實體集,用外鍵表示實體之間的聯(lián)系。關系模型建立在嚴格的數學概念基礎上,概念單—、結構簡單、清晰,用戶易懂易用;存取路徑對用戶透明,從而數據獨立性和安全性好,能簡化數據庫開發(fā)工作。其缺點主要是由千存取路徑透明,查詢效率往往 不如非關系數據模型關系模型是目前應用最廣泛的一種數據模型,例如, Oracle、 DB2、 SQL Server、 Sybase 和MySQL等都是關系數據庫系統(tǒng)。
4.面向對象模型
面向對象模型是用面向對象的觀點來描述現實世界實體的邏輯組織、對象之間的限制和 聯(lián)系等的模型。目前,已有多種面向對象數據庫產品,例如, ObjectStore、 Versant Developer、 Suite Poet和 Objectivity等,但其具體的應用并不多。目前主流的方式是在現有的關系模型數據 庫系統(tǒng)中增加對對象模型的支待,如 Oracle等。
5.2 關系數據庫
關系數據庫是目前應用非常廣泛的數據庫之一,有一套完整的理論做支持。關系模型是關 系數據庫的基礎,由關系數據結構、關系操作集合和關系完整性規(guī)則三部分組成。本節(jié)介紹關 系模型的基本概念、關系代數和關系演算以及關系規(guī)范化理論方面的內容。
5.2.1 關系的基本概念
關系數據庫應用數學方法來處理數據庫中的數據。最早提出將這類方法用于數據處理的是CODASYL (數據系統(tǒng)語言會議)于1962年發(fā)表的“信息代數”一文,之后DavidChild千 1968年在 7090機上實現了集合論數據結構,但系統(tǒng)而嚴格地提出關系模型的是美國 IBM公司 的 E.F.Codd。
關系數據庫中涉及的基本術語有:
(1)屬性 (Attribute)
。在現實世界中,要描述一個事物常常取若干特征來表示,這些特征稱為屬性。例如,學生用學號、姓名、性別、系別、年齡、籍貫等屬性來描述。
(2) 域 (Domain)
。每個屬性的取值范圍所對應的值的集合,稱為該屬性的域。例如,學號的域是 6 位整型數,姓名的域是 10 位字符,性別的域為{男,女}等。一般在關系數據模型 中,對域還加了一個限制,所有的域都應是原子數據 (AtomicData)。例如,整數、字符串是原子數據,而集合、記錄、數組是非原子數據。
(3)目或度 (Degree)
。二維表關系R (DI’ D2, …隊)中的R表示關系的名字, n是關系的目或度。
(4) 候選碼(CandidateKey)
。若關系中的某一屬性或屬性組的值能唯一地標識一個元組,則稱該屬性或屬性組為候選碼。
(5) 主碼 (PrimaryKey)
?;蚍Q主鍵,若—個關系有多個候選碼,則選定其中一個為主碼。 (6) 主屬性 CPrime Attribute) 。包含在任何候選碼中的屬性稱為主屬性。不包含在任何候
選碼中的屬性稱為非主屬性 (Nonprime Attribute) 。
(7) 外碼( Foreign Key)
。如果關系模式 R 中的屬性或屬性組非該關系的碼,但它是其他關系的碼,那么該屬性集對關系模式 R 而言是外碼。例如,客戶與貸款之間的借貸聯(lián)系 c-1 (c- id, loan-no), 屬性 c-id是客戶關系中的碼,所以 c-id是外碼:屬性 loan-no是貸款關系中的碼。
(8) 全碼 (All-key)
。關系模型的所有屬性組是這個關系模式的候選碼,稱為全碼。例如,關系模式 R (T, C, S), 屬性 T表示教師,屬性 C表示課程,屬性 S表示學生。假設一個教師 可以講授多門課程,某門課程可以由多個教師講授,學生可以聽不同教師講授的不同課程,那 么,要想區(qū)分關系中的每一個元組,這個關系模式 R 的碼應為全屬性 T、 C 和 S, 即 All-key。
5.2.2 關系模型
在關系模型中,實體以及實體間的聯(lián)系都是用關系來表示的。在一個給定的現實世界領域中,所有實體及實體間的聯(lián)系的關系的集合構成了一個關系數據庫。關系的描述稱為關系模式,關系模 式通??梢院営洖?R(A1, A2, … ,An), 其中 R 為關系名, A1、 A2、…、 An 為屬性名。關系實際上 就是關系模式在某一時刻的狀態(tài)或內容。也就是說,關系模式是型,關系是它的值。關系模式是 靜態(tài)的、穩(wěn)定的,而關系是動態(tài)的、隨時間不斷變化的,因為關系操作在不斷地更新著數據庫中 的數據。但在實際應用中,通常將關系模式和關系統(tǒng)稱為關系,讀者可以從上下文中加以區(qū)別。
1. 關系運算
關系代數的基本運算主要有并、差、交、笛卡兒積、投影、選擇、連接和除。
2. 元組演算
在元組演算中,元組演算表達式簡稱為元組表達式,其一般形式為{t IP(t)}'其中,t是元 組變量表示一個元數固定的元組; P(t)是公式,在數理邏輯中也稱為謂詞,也就是計算機語言 中的條件表達式。{t IP(t)}表示滿足公式 P 的所有元組t的集合。
5.2.3 規(guī)范化理論
設有一個關系模式 R(SNAME, CNAME, TNAME, TADDRESS), 其屬性分別表示學生姓名、 選修的課程名、任課教師姓名和任課教師地址。仔細分析一下,就會發(fā)現這個模式存在下列異 常問題:
(I)數據冗余。如果某門課程有 100 個學生選修,那么在 R 的關系中就要出現 100 個元組, 這門課程的任課教師姓名和地址也隨之重復出現 100次。
(2) 修改異常。由千上述冗余問題,當需要修改這個教師的地址時,就要修改 100 個元組中的地址值,否則就會出現地址值不一致的現象。
(3)插入異常。如果不知道聽課學生名單,這個教師的任課情況和家庭地址就無法進入數據庫,否則就要在學生姓名處插入空值。
(4) 刪除異常。如果某門課程的任課教師要更改,那么原來任課教師的地址將隨之丟失。
因此,關系模式 R 雖然只有 4 個屬性,但卻是性能很差的模式。產生這些異常的原因與關 系模式屬性值之間的聯(lián)系直接相關。在關系模式 R 中,學生與課程有直接聯(lián)系,教師與課程有 直接聯(lián)系,而教師與學生無直接聯(lián)系,這就產生了關系模式 R 的異常問題。如果將 R 分解成下 列兩個關系模式,即 Rl (SNAME, CNAME) 和 R2 (CNAME, TNAME, TADDRESS), 則能消 除上述的存儲異?,F象。
1. 函數依賴與鍵
函數依賴是數據庫的一種約束,決定了關系模式屬于哪種范式。
2. 范式
為了設計一個好的數據庫,人們定義了一些好的關系模式標準, 稱它們?yōu)橐?guī)范的關系模式或范式 (Normal Form, NF) 。目前共定義了多個范式,分別為 lNF、 2NF、 3NF、 BCNF、 4NF和 5NF。但在實際應用中,一般只要達到 3NF。
(1)第一范式 (lNF) 。在關系模式 R 中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的數據項,則稱 R 滿足 lNF。
(2) 第二范式 (2NF) 。當且僅當關系模式 R 滿足 lNF,且每個非鍵屬性(即不屬千任何 候選鍵的屬性,也稱為非主屬性)完全依賴千候選鍵時,則稱 R 滿足 2NF。例如,有選課關系 模式 SC(Sno, Cno, Grade, Cre小t),其中,(Sno, Cno)- Grade, Cno 一 Credit。因此, SC 的 候選鍵為 (Sno, Cno)。這樣, Cno 一 Credit就構成了 Credit對候選鍵 (Sno, Cno) 的部分函數依 賴。因此, SC 不滿足 2NF。若要將 SC 轉化為 2NF, 可以將它拆分為 SCI (Sno, Coo, Grade) 和SC2(Cno, Credit)。
(3)第三范式 (3NF) 。當且僅當關系模式 R 滿足 2NF, 且 R 中消除了非鍵屬性傳遞依賴于候選鍵時,則稱R滿足3NF。
(4) BCNF。如果關系模式 R 滿足 lNF,且 R 中沒有屬性傳遞依賴 千候選鍵時,則稱 R 滿足 BCNF。
(5) 第四范式 (4NF) 。第四范式是 BCNF 的推廣,是針對有多值依賴的關系模型所定義的規(guī)范化形式。
3.關系模式分解
如果某關系模式存在修改異常等問題,則可通過分解該關系模式來解決問題。將一個關系 模式分解成幾個子關系模式,需要考慮的是該分解是否保持函數依賴,是否是無損聯(lián)接。
5.3 數據庫控制功能
要想使數據庫中的數據達到應用的要求,必須對其進行各種控制,這就是 DBMS 的控制功 能,包括并發(fā)控制、性能優(yōu)化、數據庫的完整性和安全性,以及數據備份與恢復等。這些技術 雖然給人們的感覺是邊緣性技術,但對 DBMS 的應用而言卻是至關重要的。
5.3.1 并發(fā)控制
在多用戶共享系統(tǒng)中,許多事務可能同時對同一數據進行操作,稱為并發(fā)操作。此時, DBMS 的并發(fā)控制子系統(tǒng)負責協(xié)調并發(fā)事務的執(zhí)行,保證數據庫的完整性不受破壞,同時,避 免用戶得到不正確的數據。
1.事務的基本概念
DBMS 運行的基本工作單位是事務,事務是用戶定義的一個數據庫操作序列,這些操作序 列要么全做,要么全不做,是一個不可分割的工作單位。事務具有以下特性:
(l) 原子性 (Atomicity)
。事務是數據庫的邏輯工作單位,事務的原子性保證事務包含的 一組更新操作是原子不可分的,也就是說,這些操作是一個整體,不能部分地完成。
(2) 一致性 (Consistency)
。一致性是指使數據庫從一個一致性狀態(tài)變到另一個一致性狀 態(tài)。例如,在轉賬的操作中,各賬戶金額必須平衡。一致性與原子性是密切相關的,一致性在 邏輯上不是獨立的,它由事務的隔離性來表示。
(3)隔離性 Osolation)
。隔離性是指一個事務的執(zhí)行不能被其他事務干擾,即一個事務內部的操作及使用的數據對并發(fā)的其他事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
它要求即使有多個事務并發(fā)執(zhí)行,但看上去每個事務是按串行調度執(zhí)行一樣。這一性質也稱為 可串行性,也就是說,系統(tǒng)允許的任何交錯操作調度等價于一個串行調度。
(4) 持久性 (Durability)
。持久性也稱為永久性,是指事務一旦提交,改變就是永久性的, 無論發(fā)生何種故障,都不應該對其有任何影響。
事務的原子性、一致性、隔離性和持久性` 通常統(tǒng)稱為 ACID 特性。
2.數據不一致問題
數據庫的并發(fā)操作會帶來一些數據不一致問題,例如,丟失修改、讀"臟數據“和不可重復讀等。
(l) 丟失修改
。事務 A 與事務 B 從數據庫中讀入同一數據并修改,事務 B 的提交結果破壞 了事務 A 提交的結果,導致事務 A 的修改被丟失。
(2) 讀“臟數據“
。事務 A 修改某一數據,并將其寫回磁盤,事務 B 讀取同一數據后,事 務 A 由于某種原因被撤銷,這時事務 A 已修改過的數據恢復原值,事務 B 讀到的數據就與數據庫中的數據不一致,是不正確的數據,稱為"臟數據“。
(3)不可重復讀
。不可重復讀是指事務 A 讀取數據后,事務 B 執(zhí)行了更新操作,事務 A 使 用的仍是更新前的值,造成了數據不一致性。
3. 封鎖協(xié)議
處理并發(fā)控制的主要方法是采用封鎖技術,主要有兩種封鎖,分別是 X 封鎖和 S 封鎖。
在多個事務并發(fā)執(zhí)行的系統(tǒng)中,主要采取封鎖協(xié)議來進行處理。常見的封鎖協(xié)議如下:
(1)一級封鎖協(xié)議。事務 T 在修改數據 R 之前必須先對其加 X 鎖,直到事務結束才釋放。 一級封鎖協(xié)議可防止丟失修改,并保證事務 T 是可恢復的,但不能保證可重復讀和不讀“臟 數據“。
(2) 二級封鎖協(xié)議。一級封鎖協(xié)議加上事務 T 在讀取數據 R 之前先對其加 S 鎖,讀完后即 可釋放 S 鎖。二級封鎖協(xié)議可防止丟失修改,還可防止讀“臟數據“,但不能保證可重復讀。
(3)三級封鎖協(xié)議。一級封鎖協(xié)議加上事務 T 在讀取數據 R 之前先對其加 S 鎖,直到事務 結束才釋放。三級封鎖協(xié)議可防止丟失修改、讀“臟數據“,且能保證可重復讀。
(4) 兩段鎖協(xié)議。所有事務必須分兩個階段對數據項加鎖和解鎖。
4. 死鎖問題
采用封鎖的方法雖然可以有效防止數據的不一致性,但封鎖本身也會產生一些麻煩,最主
要的就是死鎖問題。死鎖是指多個用戶申請不同封鎖,由千申請者均擁有一部分封鎖權,而又 需等待其他用戶擁有的部分封鎖而引起的永無休止的等待。
5.3.2 數據庫的完整性
數據庫的完整性是指數據庫中數據的正確性和相容性。數據庫的完整性由各種各樣的完整 性約束來保證,完整性約束可以通過 DBMS 或應用程序來實現,基于 DBMS 的完整性約束作為 關系模式的一部分存入數據庫中。
1.完整性約束條件
完整性約束條件是指對數據庫中數據本身的某些語法或語義限制、數據之間的邏輯約束,以及數據變化時應遵守的規(guī)則等。
2.實體完整性
實體完整性要求主鍵中的任一屬性不能為空,所謂空值是“不知道”或“無意義”的值。
3. 參照完整性
若基本關系 R 中含有與另一基本關系 S 的主鍵 PK 相對應的屬性組 FK (FK 稱為 R 的外 鍵),則參照完整性要求,對 R 中的每個元組在 FK 上的值必須是 S 中某個元組的 PK 值,或者為空值。
4.用戶定義的完整性
實體完整性和參照完整性適用千任何關系型 DBMS。除此之外,不同的數據庫系統(tǒng)根據其 應用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性就是針對某一具體數據 庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求。
5.觸發(fā)器
觸發(fā)器是在關系型 DBMS 中應用得比較多的一種完整性保護措施,其功能比完整性約束要強得多。一般而言,在完整性約束功能中,當系統(tǒng)檢查出數據中有違反完整性約束條件時,僅 給出必要提示以通知用戶。
5.3.3 數據庫的安全性
就整個信息系統(tǒng)的安全而言,數據的安全是最重要的。數據庫系統(tǒng)的安全性在技術上依賴 千兩種方式:一種是 DBMS 本身提供的用戶身份識別、視圖、使用權限控制和審計等管理措施, 大型 DBMS 均有此功能;另一種就是靠應用程序來實現對數據庫訪問進行控制和管理,也就是 說,數據的安全控制由應用程序里面的代碼來實現。目前,一些大型 DBMS 都提供了一些技術 手段來保證數據的安全,如表
下面主要介紹 用戶標識和鑒別、數據授權、視圖以及審計與跟蹤等措施。
1 .用戶標識和鑒別
用戶的身份認證是用戶使用 DBMS 系統(tǒng)的第一個環(huán)節(jié),是系統(tǒng)提供的最外層保護。進行用 戶標識和鑒別的常用方式有口令認證和強身份認證。
2.數據授權
當用戶通過身份認證以后,并不是所有的用戶都能操作所有的數據,要分不同的用戶角色來區(qū)別對待,例如,普通用戶只能查看自己的個入信息,而 DBA 則可以查看所有用戶的信息。 要達到這一效果,需要對不同用戶角色進行不同級別的數據授權。
3. 視圖
視圖可以被看成是虛擬關系或存儲查詢,可通過視圖訪問的數據不作為獨特的對象存儲在 數據庫內,數據庫內存儲的是 SELECT 語句。 SELECT 語句的結果集構成視圖所返回的虛擬關 系。用戶可以用引用關系所使用的方法,在 SQL 語句中通過引用視圖名稱來使用虛擬關系。
4. 審計與跟蹤
如果身份認證是一種事前的防范措施,審計則是一種事后監(jiān)督的手段。跟蹤也是 DBMS 提 供的監(jiān)視用戶動作的功能,然而,審計和跟蹤是兩個不同的概念,主要是兩者的目的不同。
5.3.4 備份與恢復技術
需要備份與恢復技術來進一步保障數據的安全,即當數據被破壞后, 在一定時間內將數據庫調整到破壞前的狀態(tài)。
數據庫備份有多種分類方式。
- 按備份的實現方式,可分為物理備份與邏輯備份,而物理備份又可以分為冷備份與熱備份。
- 按備份的數據量情況,可分為完全備份、增量備份與差異備份。 其中,完全備份是指將整個數據庫中的數據進行備份;增量備份是指備份上一次備份(包括完 全備份、增量備份和差異備份)后發(fā)生變化的數據;差異備份是指備份上一次完全備份后發(fā)生 變化的所有數據。由于備份方式存在多樣性,
因此,制定一個合適的可操作的備份和恢復策略至關重要,其基本原則是保證數據丟失得盡量少或完全不丟失,且備份和恢復時間盡量短,保 證系統(tǒng)最大的可用性。
1 .物理備份
物理備份是在操作系統(tǒng)層面上對數據庫的數據文件進行備份,可分為冷備份和熱備份兩種。 冷備份也稱為靜態(tài)備份,是將數據庫正常關閉,在停止狀態(tài)下,將數據庫的文件全部備份(復 制)下來。
2.邏輯備份
邏輯備份是指利用 DBMS 自帶的工具軟件備份和恢復數據庫的內容。
3. 日志文件
事務日志是針對數據庫改變所做的記錄,它可以記錄針對數據庫的任何操作,并將記錄結果保存在獨立的文件中。
4.數據恢復
將數據庫從錯誤狀態(tài)恢復到某一個已知的正確狀態(tài)的功能,稱為數據庫的恢復。數據恢復 的基本原理就是冗余,建立冗余的方法有數據備份和登錄日志文件等??筛鶕收系牟煌愋?#xff0c;
采用不同的恢復策略。
5.3.5 數據庫性能優(yōu)化
通常,對一個集中式數據庫的性能進行優(yōu)化,可以從硬件升級、數據庫設計、索引優(yōu)化策
略和查詢優(yōu)化等方面入手。
5.4 數據庫設計與建模
數據庫設計是指對一個給定的應用環(huán)境,提供一個確定最優(yōu)的數據模型與處理模式的邏輯設計,以及一個確定數據庫存儲結構與存取方法的物理設計,建立起能反映現實世界信息和信 息聯(lián)系及滿足用戶數據要求和加工要求,以能夠被某個 DBMS 所接受,同時能實現系統(tǒng)目標, 并有效存取數據的數據庫。
5.4.1 數據庫設計階段
基于數據庫系統(tǒng)生命周期的數據庫設計可分為如下 5 個階段:規(guī)劃、需求分析、概念設計、邏輯設計和物理設計。
5.4.2 實休聯(lián)系模型
E-R 模型也稱為 E-R 圖,它是描述概念世界、建立概念模型的實用工具。在 E-R 圖中,主要包括以下三個要素:
- (1)實體(型)。實體用矩形框表示,框內標注實體名稱。
- (2) 屬性。單值屬性用橢圓形表示,并用連線與實體連接起來;如果是多值屬性,在橢圓 形虛線外面再套實線橢圓:如果是派生屬性,則用虛線橢圓表示。
- (3)實體之間的聯(lián)系
5.5 分布式數據庫系統(tǒng)
分布式數據庫系統(tǒng)是數據庫技術與網絡技術相結合的產物,其基本思想是將傳統(tǒng)的集中式 數據庫中的數據分布千網絡上的多臺計算機中。分布式數據庫系統(tǒng)通常使用較小的計算機系統(tǒng), 每臺計算機可單獨放在一個地方,每臺計算機中都有 DBMS 的一份完整的復制副本,并具有自已局部的數據庫,位于不同地點的許多計算機通過網絡互相連接,共同組成一個完整的、全局 的大型數據庫。
5.5.1 分布式數據庫概述
分布式數據庫是由一組數據組成的,這組數據分布在計算機網絡的不同計算機上,網絡中 的每個節(jié)點具有獨立處理的能力(稱為場地自治),它可以執(zhí)行局部應用,同時,每個節(jié)點也能 通過網絡通信子系統(tǒng)執(zhí)行全局應用。分布式數據庫系統(tǒng)是在集中式數據庫系統(tǒng)技術的基礎上發(fā) 展起來的,具有如下特點:
- (1)數據獨立性。在分布式數據庫系統(tǒng)中,數據獨立性這一特性更加重要,并具有更多的 內容。除了數據的邏輯獨立性與物理獨立性外,還有數據分布獨立性(分布透明性)。
- (2) 集中與自治共享結合的控制結構。各局部的 DBMS 可以獨立地管理局部數據庫,具有 自治的功能。同時,系統(tǒng)又設有集中控制機制,協(xié)調各局部 DBMS 的工作,執(zhí)行全局應用。
- (3) 適當增加數據冗余度。在不同的場地存儲同一數據的多個副本,這樣可以提高系統(tǒng)的可靠性和可用性,同時也能提高系統(tǒng)性能。
- (4) 全局的一致性、可串行性和可恢復性。
1.分布式數據庫的體系結構
在分布式數據庫中,局部 DBMS 中的內模式和概 念模式與集中數據庫中是完全一致的,不同之處在千新增的全局 DBMS, 而整個全局 DBMS 可以看作是相對于局部概念模式的外模式。
外模式部分由一系列的分布模式、分片模式、全局概念模式和全局外模式以及多級映射組成,這樣用戶在使用分布式數據庫時,可以使用與集中式數據庫相同的方式。
2 分布式數據庫的優(yōu)點
分布式數據庫的物理層面分布、邏輯層面統(tǒng)一的特色,讓它具有一些集中式數據庫所不可及的優(yōu)點:
(1) 分布式數據庫可以解決企業(yè)部門分散而數據需要相互聯(lián)系的問題。例如,就銀行系統(tǒng)而言,總行與各分行處于不同的城市或城市中的不同地區(qū),在業(yè)務上它們需要處理各自的數據,也需要彼此之間的交換和處理,這就需要分布式數據庫系統(tǒng)。
(2) 如果企業(yè)需要增加新的相對自主的部門來擴充機構,則分布式數據庫系統(tǒng)可以在對當前機構影響最小的情況下進行擴充。
(3)分布式數據庫可以滿足均衡負載的需要。數據的分片使局部應用達到最大,這使得各服務器之間的相互干擾降到最低。負載在各服務器之間分擔,可以避免臨界瓶頸。
(4) 當企業(yè)已存在幾個數據庫系統(tǒng),而且實現全局應用的必要性增加時,就可以由這些數據庫自下而上構成分布式數據庫系統(tǒng)。
(5) 相等規(guī)模的分布式數據庫系統(tǒng)在出現故障的概率上不會比集中式數據庫系統(tǒng)低,但由于其故障的影響僅限于局部數據應用,因此,就整個系統(tǒng)來說,它的可靠性是比較高的。
5.5.2 數據分片
數據分片將數據庫整體邏輯結構分解為合適的邏輯單位(片段),然后由分布模式來定義片段及其副本在各場地的物理分布,其主要目的是提高訪問的局部性,有利千按照用戶的需求, 組織數據的分布和控制數據的冗余度。
分片的方式有多種:
水平分片和垂直分片
是兩種基本的分片方式;混合分片和導出分片
是較復雜的分片方式。
5.6 數據倉庫技術
數據倉庫是一個面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數據集合,用于支待 管理決策。近年來,人們對數據倉庫技術的關注程度越來越高,其原因是過去的幾十年中,建 設了無數的應用系統(tǒng),積累了大量的數據,但這些數據沒有得到很好的利用,有時反而成為企 業(yè)的負擔。如圖所示為數據倉庫的體系結構。
在圖中,數據源是數據倉庫系統(tǒng)的基礎,是整個系統(tǒng)的數據源泉。 OLAP (On-L ine Analytical Processing,聯(lián)機分析處理)服務器對分析需要的數據進行有效集成,按多維模型予以組織,以便進行多角度、多層次的分析,并發(fā)現趨勢。前端工具主要包括各種報表工具、 查詢工具、數據分析工具和數據挖掘工具,以及各種基千數據倉庫或數據集市的應用開發(fā)工 具。其中,數據分析工具主要針對 OLAP 服務器,報表工具、數據挖掘工具主要針對數據 倉庫。
5.6.1 聯(lián)機分析處理
數據處理大致可以分成兩大類,分別是聯(lián)機事務處理 (On-Line Transaction Processing, OLTP) 和聯(lián)機分析處理 (OLAP) 。
- OLTP 是傳統(tǒng)數據庫的主要應用,支持基本的、日常的事務 處理;
- OLAP 是數據倉庫系統(tǒng)的主要應用,支待復雜的分析操作,側重決策支持,并且提供直觀 易懂的查詢結果。
下表列出了 OLTP 與 OLAP 之間的比較。
5.6.2 數據倉庫概述
企業(yè)數據倉庫的建設,是以現有企業(yè)業(yè)務系統(tǒng)和大量業(yè)務數據的積累為基礎的。數據倉庫不是靜態(tài)的概念,只有將信息及時交給需要這些信息的使用者,供他們做出改善其業(yè)務經營的決策,信息才能發(fā)揮作用。而將信息加以整理歸納和重組,并及時提供給相應的管理決 策人員,是數據倉庫的根本任務。因此,從產業(yè)界的角度看,數據倉庫建設是一個工程,是 一個過程。
1. ETL 過程
針對現有各業(yè)務系統(tǒng)的數據,進行抽取、清理,并有效集成,按照主題進行組織,整個過 程可以簡稱為抽取、轉換和加載 (Extraction-Transformation-Loading, ETL) 過程。 ETL 負責將 分布的、異構數據源中的數據(例如,關系數據、平面數據文件等)抽取到臨時中間層后進行清洗、轉換和集成,最后加載到數據倉庫或數據集市中,成為 OLAP 和數據挖掘的基礎。
2.數據倉庫的分類
從結構的角度看,有三種數據倉庫模型,分別是企業(yè)倉庫 (Enterprise Warehouse)、數據集市 (Datamart)和虛擬倉庫 (Virtual Warehouse) 。
3.非結構化數據與數據倉庫
對于一個用于決策分析的系統(tǒng)而言,僅有企業(yè)內部數據是不夠的。合理地采用外部數據(例如,報紙、期刊、電視等媒體的報道,一些商業(yè)機 構的調查報告)能使分析和決策更為準確。而這些外部數據通常都是非結構化的數據。因此, 如何用數據倉庫管理非結構化數據,也是數據倉庫應用中的一個重要問題。
5.6.3 數據倉庫的設計方法
數據倉庫的設計方法通常有三種,分別是自頂向下的方法、自底向上的方法,以及兩者結合的混合方法。
5.7 數據挖掘技術
數據挖掘是采用數學的、統(tǒng)計的、人工智能和神經網絡等領域的科學方法,從大量數據中挖掘出隱含的、先前未知的、對決策有潛在價值的關系、模式和趨勢,并用這些知識和規(guī)則建立用于決策支持的模型,為商業(yè)智能系統(tǒng)服務的各業(yè)務領域提供預測性決策支持的方法、工具和過程。
數據挖掘與傳統(tǒng)的數據分析(例如,查詢、報表、聯(lián)機應用分析)的本質區(qū)別是數據挖掘 是在沒有明確假設的前提下去挖掘信息、發(fā)現知識。數據挖掘所得到的信息應具有先前未知、 有效和可實用三個特征。先前未知的信息是指該信息是預先未曾預料到的,即數據挖掘是要發(fā) 現那些不能靠直覺發(fā)現的信息或知識,甚至是違背直覺的信息或知識,挖掘出的信息越是出乎 意料,就可能越有價值。
1.數據挖掘的體系結構
如圖所示為數據挖掘的體系結構,它展示了數據挖掘的流程,說明了數據挖掘是怎樣 找到新規(guī)律的。
2.數據挖掘的流程
數據挖掘是一個完整的過程,該過程從大型數據庫中挖掘先前未知的、有效的、可實用的 信息,并使用這些信息做出決策或豐富知識。數據挖掘的流程大致如下:
- (1) 問題定義。
- (2) 建立數據挖掘庫。
- (3) 分析數據。
- (4) 調整數據。
- (5) 模型化。
- (6) 評價和解釋。
5.7.2 常用技術與方法
從技術上來看,數據挖掘就是從大量的、不完全的、有噪聲的、模糊的、隨機的實際應用 數據中,提取隱含在其中的、人們事先不知道的、但又是潛在有用的信息和知識的過程。這個定義包括幾層含義:數據源必須是真實的、大量的、含噪聲的;發(fā)現的是用戶感興趣的知識; 發(fā)現的知識要可接受、可理解、可運用;并不要求發(fā)現放之四海而皆準的知識,僅支持特定地 發(fā)現問題即可。
從商業(yè)角度來看,數據挖掘是一種新的商業(yè)信息處理技術,其主要特點是對商業(yè)數據庫中的大痲業(yè)務數據進行抽取、轉換、分析和其他模型化處理,從中提取輔助商業(yè)決策的關鍵性數據。
1,數據挖掘的常用技術
數據挖掘中的關鍵技術是進行模式和關系識別的算法。下面介紹幾種數據挖掘和知識發(fā)現 的技術,它們分別從不同的角度進行數據挖掘和知識發(fā)現。
(l) 決策樹方法。
決策樹方法利用信息論中的互信息(信息增益)尋找數據庫中具有最大信息量的屬性,建立決策樹的一個結點,再根據屬性的不同取值建立樹的分支。
(2) 分類方法。
分類方法將數據按照含義劃分成組,可用該方法生成感興趣的側面,可用 于自動發(fā)現類,例如,模式識別、側面生成、線性聚簇和概念聚簇等。
(3)粗糙集 (Rough Set)方法。
粗糙集的研究主要基千分類。分類和概念 (Concept)同 義,一種類別對應于一個概念。知識由概念組成,如果某知識中含有不精確概念,則該知識就 不精確,粗糙集通過上近似概念和下近似概念來表示不精確概念。
(4) 神經網絡。
神經網絡通過學習待分析數據中的模式來構造模型,它可對隱式類型進行分析,適用千對非線性的、復雜的或高噪聲的數據進行建模。神經網絡技術模擬人腦神經元結構,由神經元互連或按層組織的結點構成。通常,神經模型由三個層次組成,分別是輸入層、中間層和輸出層。每個神經元求得輸入值,再計算總輸入值,由過濾機制(例如,闌值)比較總輸入,然后確定它自己的輸出值。
(5) 關聯(lián)規(guī)則。
關聯(lián)規(guī)則是指搜索業(yè)務系統(tǒng)中的所有細節(jié)和事務,從中找出重復出現概率很高的模式,它以大的事務數據庫為基礎,其中每個事務都被定義為一系列相關數據項。
(6) 概念樹方法。
對數據庫中記錄的屬性按歸類方式進行抽象,建立起來的層次結構稱為概念樹。
(7) 遺傳算法。
遺傳算法是模擬生物進化過程的算法,由繁殖、交叉和變異三個基本算子組成。繁殖也稱為選擇,是從一個舊種群(父代)選出生命力強的個體產生新種群(后代)的 過程;交叉也稱為重組,是指選擇兩個不同個體(染色體)的部分(基因)進行交換,形成新 個體;變異也稱為突變,是指對某些個體的某些基因進行變異 (1 變 0、 0 變 l)。遺傳算法可起 到產生優(yōu)良后代的作用,這些后代需滿足適應值,經過若干代的遺傳,將得到滿足要求的后代 (問題的解)。
(8) 依賴性分析。
依賴性分析是指在數據倉庫的條目或對象之間抽取依賴性,它展示了數 據之間未知的依賴關系,依賴性是一個帶有置信度因子的可能值??梢杂靡蕾囆苑治龇椒◤哪?個數據對象的信息來推斷另一個數據對象的信息。
(9) 公式發(fā)現。
在工程和科學數據庫中,對若干數據項(變量)進行一定的數學運算,求 得相應的數學公式。其基本思想是,對數據項進行初等數學運算,形成組合數據項,若它的值 為常數項,就得到了組合數據項等千常數的公式。
(l0) 統(tǒng)計分析方法。
在數據庫屬性之間通常存在兩種關系,分別是函數關系(能用某個函 數表示的確定性關系)和相關關系(不能用函數表示的確定性關系)。對這些關系的分析可以采 用回歸分析、相關分析或主成分分析等統(tǒng)計分析方法。
(11) 模糊論方法。
利用模糊集合理論對實際問題進行模糊評判、模糊決策、模糊模式識 別和模糊聚類分析。模糊性是客觀存在的,系統(tǒng)的復雜性越高,精確化能力就越低,即模糊性 越強。
(12) 可視化分析。
可視化分析可給出帶有多變量的圖形化分析數據,幫助用戶進行分析。
2.數據挖掘的分析方法
從功能上可以將數據挖掘的分析方法劃分為 6 種,即關聯(lián)分析、序列分析、分類分析、聚 類分析、預測分析和時間序列分析。
5.7.3 數據挖掘技術的應用
數據挖掘和數據倉庫的協(xié)同工作,一方面可以迎合和簡化數據挖掘過程中的重要步驟,提高數據挖掘的效率和能力,確保數據挖掘中數據來源的廣泛性和完整性;另一方面,數據挖掘技術已經成為數據倉庫應用中極為重要和相對獨立的一個方面和工具。 數據挖掘和數據倉庫的融合與互動發(fā)展,使數據挖掘得到了廣泛的應用。目前,數據挖掘已經形成了多個分支,例如,空間數據挖掘( Spatial Data Mining, SDM)
、多媒體數據挖掘 (MultimediaDataMining, MDM)
和文本數據挖掘 (TextDataMining, TDM)
等。
5.8 非關系數據庫
NoSQL 是非關系數據存儲的廣義定義,它打破了長久以來關系數據庫與 ACID 理論大一統(tǒng) 的局面。 NoSQL 數據存儲不需要固定的表結構,通常也不存在連接操作,在大數據存取上具備關系數據庫無法比擬的性能優(yōu)勢。該術語在 2009 年初得到了廣泛認同。
5.8.1 概述
隨著互聯(lián)網 Web 2.0 網站的興起,非關系數據庫成了一個極其熱門的新領域,非關系數據 庫產品的發(fā)展非常迅速。而傳統(tǒng)的關系數據庫在應對 Web 2.0 網站,特別是超大規(guī)模和高并發(fā)的 SNS (Soc ial Network Site, 社交網站)類型的 Web 2.0 純動態(tài)網站時已經顯得力不從心,暴露了很多難以克服的問題,例如,對數據庫高并發(fā)讀寫的需求,對海量數據的高效率存儲和訪問的需求,對數據庫的高可擴展性和高可用性的需求。
NoSQL數據庫分類與特點:
5.8.2 相關理論基礎
1. CAP 理論
簡單地說, CAP理論就是對千一個分布式系統(tǒng),一致性 (Consistency)、可用性 (Availability)和分區(qū)容忍性 (Partition tolerance) 三個特點最多只能三選二。
2. 分區(qū)
分區(qū)的一些主要方法如下:
- (1)內存緩存
- (2) 集群
- (3)讀寫分離
- (4) 范圍分割技術/分片 (Shading)
3.存儲布局
存儲布局確定了如何訪問磁盤,以及如何直接影響性能,主要分為 4種,分別是 基于行的存儲布局、列存儲布局、帶有局部性群組的列存儲布局、 LSM-Tree。
5.8.3 列數據庫
傳統(tǒng)的關系數據庫都是以行為單位來進行數據存儲的,擅長進行以行為單位的數據處理,比如特定條件數據的獲取。因此,關系數據庫也被稱為面向行的數據庫。相反,面向列的數據庫是以列作為單位來進行數據存儲的,擅長進行以列為單位的數據處理。
面向列的數據庫具有高擴展性,即使數據增加也不會降低相應的處理速度,所以它主要應 用千需要處理大噩數據的情況。另外,利用面向列的數據庫的優(yōu)勢,也可以把它作為批處理程 序的存儲器,來對大量數據進行更新。
列存儲數據庫的主要產品有 Google的BigTable、由 BigTable衍生的 HyperTable和 HBase、 Cassandra 等。
5.8.4 文檔數據庫
在傳統(tǒng)的數據庫中,數據被分割成離散的數據段,而文檔存儲則是以文檔為存儲信息的基 本單位。文檔存儲一般用類似JSON 的格式存儲,存儲的內容是文檔型的。面向文檔的數據庫 具有以下特征:即使不定義表結構,也可以像定義了表結構一樣來使用;面向文檔的數據庫可以通過復雜的查詢條件來獲取數據。雖然不具備事務處理和JOIN 等關系數據庫所具有的處理能 力,但其他的處理基本都可以實現。
5.8.5 鍵值數據庫
鍵值存儲模型是最簡單也是最方便使用的數據模型,它支持簡單的鍵對值的鍵值存儲和提 取。根據—個簡單的字符串(鍵)能夠返回一個任意類型的數據(值)。鍵值存儲最大的好處是 不用為值指定一個特定的數據類型,這樣就能在值里存儲任意類型的數據。系統(tǒng)將這些信息按 照 BLOB 大對象進行存儲,當收到檢索請求時,返回同樣的 BLOB。由應用來決定被使用的數 據是什么類型,如字符串、圖片和 XML 文件等。鍵值存儲數據庫的主要特點是具有極高的并 發(fā)讀寫性能。
鍵值存儲中存在三種操作:put、get和 delete。這三種操作規(guī)定了程序員與鍵值存儲交互的 基本方式。應用開發(fā)者使用put、get和 delete 函數訪問和操作鍵值存儲。
鍵值存儲產品主要有亞馬遜的 Memcached、 Redis、 Dynamo、 ProjectVoldemort、 Tokyo Tyrant、Riak、 Scalaries 這幾個數據庫,這里主要介紹一下 Redis。
Redis 是一種主要基千內存存儲和運行,能夠快速響應的鍵值數據庫。屬千臨時性保存和永久性保存兼具的類型,有點像 Memcached, 整個數據庫統(tǒng)統(tǒng)加載在內存當中進行操作,但是通過定期異步操作把數據庫數據flush 到硬盤上進行保存。因為是純內存操作, Redis 的性能非常 出色,每秒可以處理超過 10 萬次讀寫操作。
Redis 的數據庫存儲模式,是在鍵值 (Key-Value) 基本存儲原理
的基礎上進行細化分類, 構建了具有自身特點的數據結構類型。像 MySQL 這樣的關系數據庫,表的結構比較復雜,會包含很多字段,可以通過 SQL 語句來實現非常復雜的查詢需求。而 Redis客戶只包含“鍵”和 “值”兩部分,只能通過"鍵”來查詢“值“。正是因為這樣簡單的存儲結構,讓 Re小s 的讀寫 效率非常高。鍵的數據類型是字符串,但是為了豐富數據存儲的方式,方便開發(fā)者使用,值的 數據類型很多,它們分別是字符串、列表、字典、集合、有序集合。
5.8.6 圖數據庫
圖存儲在那些需要分析對象之間的關系或者通過一個特定的方式訪問圖中所有節(jié)點的應用中尤為重要。圖存儲針對有效存儲圖節(jié)點和聯(lián)系進行了優(yōu)化,讓你可以對這些圖結構進行查詢。 圖數據庫對千那些對象之間具有復雜關系的業(yè)務問題很有用,如社交網絡、規(guī)則引擎、生成組合和那些需要快速分析復雜網絡結果并從中找出模式的圖系統(tǒng)。
圖存儲是一個包含一連串的節(jié)點和關系的系統(tǒng),當它們結合在一起時,就構成了一個圖。 圖存儲有三個字段:節(jié)點、關系和屬性。圖節(jié)點通常是現實世界中對象的表現,如人名、組織、 電話號碼、網頁或計算機節(jié)點。而關系可以被認為是這些對象之間的聯(lián)系,通常被表示為圖中兩個節(jié)點之間連接線。 如果圖存儲的節(jié)點眾多、關系復雜、屬性很多,那么傳統(tǒng)的關系數據庫將要建很多大型的表,并且表的很多列可能是空的,在查詢時還極有可能進行多重 SQL 語句的嵌套。可是圖存儲 就可以很優(yōu)異,基于圖的很多高效的算法可以大大提高執(zhí)行效率。