DBMS-基本概念
文件處理系統(tǒng)(file-processing system)的主要弊端:
數(shù)據(jù)冗余和不一致(data redundancy and inconsistency)、數(shù)據(jù)訪問困難(difficulty in accessing data)、數(shù)據(jù)孤立(data isolation)、完整性問題(integrity problem)、原子性問題(atomicity problem)、并發(fā)訪問異常(concurrent-access anomaly)、安全性問題(security problem)。
?
?
數(shù)據(jù)抽象的三個層次
?
1)物理層(physical level):詳細描述復雜的底層數(shù)據(jù)結構
2)邏輯層(logical level):描述數(shù)據(jù)庫中存儲什么數(shù)據(jù)及這些數(shù)據(jù)間存在的關系。
物理數(shù)據(jù)獨立性(physical data independence):應用程序不依賴于物理模式,即使物理模式改變也無須重寫應用程序,邏輯層用戶不必知道邏輯層結構實現(xiàn)可能涉及的復雜物理層結構。
3)視圖層(view level):只描述數(shù)據(jù)庫的某個部分,系統(tǒng)可以為同一數(shù)據(jù)庫提供多個視圖,使用戶與系統(tǒng)交互更簡單。
?
?
數(shù)據(jù)庫模式
實例(instance):特定時刻存儲在數(shù)據(jù)庫中的信息的集合稱作數(shù)據(jù)的一個實例。
數(shù)據(jù)庫模式(schema):數(shù)據(jù)庫的總體設計,即使發(fā)生變化,也不頻繁。
數(shù)據(jù)庫系統(tǒng)可分為幾種不同的模式:e.g.物理模式、邏輯模式、子模式(subschema,描述數(shù)據(jù)庫的不同視圖)。
?
?
數(shù)據(jù)模型(data model):描述數(shù)據(jù)、數(shù)據(jù)聯(lián)系、數(shù)據(jù)語義及一致性約束的概念工具的集合,提供一種描述物理層、邏輯層及視圖層數(shù)據(jù)庫設計的方式。
數(shù)據(jù)模型可被劃分為四類:
關系模型(relational model):一種基于記錄的模型,用表的集合來表示數(shù)據(jù)和數(shù)據(jù)間的聯(lián)系,每個表有多個列,每列有唯一的列名。
實體-聯(lián)系模型(entity-relationship model,a.k.a. E-R):基于對現(xiàn)實世界的一種認識——現(xiàn)實世界由一組基本對象(實體)及這些對象間的聯(lián)系構成。實體是現(xiàn)實世界中可區(qū)別于其他對象的一件事情或一個物體。
E-R提供一種方便的圖形化方式來觀察數(shù)據(jù)、聯(lián)系和約束。
數(shù)據(jù)庫中實體通過屬性(attribute)集合來描述;
聯(lián)系(relationship)是幾個實體之間的關聯(lián);
同一類型的所有實體的集合稱為實體集(entity set),同一類型的所有聯(lián)系的集合稱作聯(lián)系集(relationship set);
基于對象的數(shù)據(jù)模型(object-based data model):可看作E-R模型增加了封裝、方法和對象標志等概念后的擴展。對象-關系數(shù)據(jù)模型結合了面向?qū)ο蟮臄?shù)據(jù)模型和關系數(shù)據(jù)模型的特征。
半結構化數(shù)據(jù)模型(semistructured data model):允許相同類型的數(shù)據(jù)項含有不同的屬性集的數(shù)據(jù)定義。
網(wǎng)狀數(shù)據(jù)模型(network data model)、層次數(shù)據(jù)模型(hierarchical data model)如今已經(jīng)很少使用。
?
?
數(shù)據(jù)庫語言
數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)定義語言(data-definition language)和數(shù)據(jù)操縱語言(data-manipulation language),構成了單一數(shù)據(jù)庫語言的不同部分。
1. 數(shù)據(jù)操縱語言(DML):使用戶可以訪問或操縱那些按某種適當?shù)臄?shù)據(jù)模型組織起來的數(shù)據(jù)。
DML的訪問類型包括:增、刪、查、改。
查詢(query):要求對信息進行檢索的語句,DML中涉及信息檢索的部分稱作查詢語言(query language)。
通常有兩類基本的DML:
1)過程化DML(procedural DML):要求用戶指定需要什么數(shù)據(jù)以及如何獲得這些數(shù)據(jù)。
2)聲明式DML(declarative DML):也稱非過程化DML,還要求用戶指定需要什么數(shù)據(jù),而不指明如何獲得這些數(shù)據(jù)。
2. 數(shù)據(jù)庫定義語言(DDL):用于表達說明數(shù)據(jù)庫模式的一系列定義(定義數(shù)據(jù)庫模式),也可用于定義數(shù)據(jù)的其他特征。
數(shù)據(jù)存儲和定義(data storage and definition)語言:一系列特殊的DDL語句,用于說明數(shù)據(jù)庫系統(tǒng)所使用的存儲結構和訪問方式,定義了數(shù)據(jù)庫模式的實現(xiàn)細節(jié)。
存儲在數(shù)據(jù)庫中的數(shù)據(jù)值必須滿足某些一致性約束(consistency constraint),DDL語言提供指定這種約束的工具,每當數(shù)據(jù)庫更新時數(shù)據(jù)庫系統(tǒng)都會檢查這些約束。
·域約束(domain constraint):每個屬性都對應于一個所有可能的取值構成的域。
·參照完整性(referential integrity):一個關系中給定屬性集上的取值也在另一關系的某一屬性集的取值中出現(xiàn)。
·斷言(assertion):數(shù)據(jù)庫需要時刻滿足某一條件。斷言創(chuàng)建后系統(tǒng)會監(jiān)測其有效性,如果斷言有效,則以后只有不破壞斷言的數(shù)據(jù)庫更新才被允許。
·授權(authorization):對于不同用戶在數(shù)據(jù)庫中的不同數(shù)據(jù)值上允許不同的訪問類型,這些區(qū)別以授權來表達。如:a. 讀權限(read authorization)允許讀取數(shù)據(jù)但不能修改數(shù)據(jù);b. 插入權限(insert authorization)允許插入新數(shù)據(jù)但不允許修改已有數(shù)據(jù);更新權限(update authorization)允許修改但不能刪除數(shù)據(jù);刪除權限(delete authorization)允許刪除數(shù)據(jù)。
數(shù)據(jù)字典:DDL以指令(語句)作為輸入,生成輸出放在數(shù)據(jù)字典(data dictionary)中。數(shù)據(jù)字典包含元數(shù)據(jù)(metadata)。數(shù)據(jù)字典可以看做一種特殊的表,只能由數(shù)據(jù)庫系統(tǒng)本身來訪問和修改,在讀取和修改實際數(shù)據(jù)前數(shù)據(jù)系統(tǒng)要先參考數(shù)據(jù)字典。
?
?
關系數(shù)據(jù)庫:基于關系模型,使用一系列表來表達數(shù)據(jù)以及這些數(shù)據(jù)之間的關系。一種基于記錄的模型,數(shù)據(jù)庫的結構時幾種固定格式的記錄。
表:每個表包含一種特定類型的記錄,每種記錄類型定義固定數(shù)目的字段或?qū)傩?#xff08;每個表有多個列),表的列對應記錄類型的屬性(每個列有唯一的名字)。
?
來自應用程序的數(shù)據(jù)庫訪問
大多數(shù)計算和動作必須用一種宿主語言(如C/C++/Java)來完成,再在其中使用嵌入式的SQL查詢來完成對數(shù)據(jù)庫的訪問。由宿主語言執(zhí)行DML訪問數(shù)據(jù)庫的兩種途徑包括:
1. 通過提供應用程序接口(過程集),將DML和DDL語句發(fā)送給數(shù)據(jù)庫再取回結果。e.g. C語言+ODBC、Java+JDBC
2. 通過擴展宿主語言的語法,在宿主語言的程序中嵌入DML調(diào)用。
?
規(guī)范化
設計關數(shù)據(jù)庫所用到的一種方法,通過設計一種符合適當范式(normal form)的模式,生成一個關系模式集合,使存儲信息時沒有不必要的冗余,同時又能輕易檢索數(shù)據(jù)。
?
數(shù)據(jù)存儲和查詢
數(shù)據(jù)庫系統(tǒng)的功能部件大致可分為存儲管理器和查詢處理部件。
1) 存儲管理器: 數(shù)據(jù)庫系統(tǒng)中負責在數(shù)據(jù)庫中存儲的低層數(shù)據(jù)與應用程序以及向系統(tǒng)提交的查詢之間提供接口的部件,負責數(shù)據(jù)庫中數(shù)據(jù)的存儲、檢索和更新。
存儲管理部件包括:
·權限及完整性管理器(authorization and integrity manager):檢測是否滿足完整性約束,檢查視圖訪問數(shù)據(jù)的用戶的權限。
·事務管理器(transaction manager):保證即使發(fā)生故障,數(shù)據(jù)庫也保持在一致(正確)的狀態(tài),并保證并發(fā)事務的執(zhí)行不發(fā)生沖突。
·文件管理器(file manager):管理磁盤存儲空間的分配,管理用于表示磁盤上所存儲信息的數(shù)據(jù)結構。
·緩沖管理器(buffer manager):負責將數(shù)據(jù)從磁盤取到內(nèi)存中來,并決定哪些數(shù)據(jù)應被緩沖存儲在內(nèi)存中。
存儲管理器實現(xiàn)了幾種數(shù)據(jù)結構,作為系統(tǒng)物理實現(xiàn)的一部分:
·數(shù)據(jù)文件(data files):存儲數(shù)據(jù)庫自身。
·數(shù)據(jù)字典(data dictionary):存儲關于數(shù)據(jù)庫結構的元數(shù)據(jù),尤其是數(shù)據(jù)庫模式。
·索引(index):提供對數(shù)據(jù)項的快速訪問(e.g. 指針、散列)
2)查詢處理器
查詢處理器負責編譯和執(zhí)行DDL和DML語句,組件包括:
·DDL解釋器(DDL interpreter):解釋DDL語句并將這些定義記錄在數(shù)據(jù)字典中。
·DML編譯器(DML compiler):將查詢語言中的DML語句翻譯為執(zhí)行方案,包括一系列查詢執(zhí)行引擎能理解的低級指令。
DML編譯器還進行查詢優(yōu)化(query optimization),從幾種等價的具有相同結果的執(zhí)行方案中選出代價最小的一種。
·查詢執(zhí)行引擎(query evaluation engine):執(zhí)行由DML編譯器產(chǎn)生的低級指令。
?
事務管理
事務(transaction):數(shù)據(jù)庫應用中完成單一邏輯功能的操作集合。每一個事務是一個既具有原子性又具有一致性的單元,。
事務的定義應使之不違反數(shù)據(jù)庫的一致性約束。一個事務可以被定義為由多個單獨程序組成,程序依次執(zhí)行可以保持一致性,但單個程序自身都不是把數(shù)據(jù)庫從一個一致狀態(tài)轉(zhuǎn)入一個新的抑制狀態(tài),因此這些程序不是事務。
事務管理器(transaction manager)包括并發(fā)控制管理器(concurrency-control manager,控制并發(fā)事物間的相互影響,保證一致性)和恢復管理器(recovery manager,事務失敗時進行故障恢復,保證原子性和持久性)。
?
數(shù)據(jù)庫體系結構
?
1. 兩層體系結構(two-tier architecture):應用程序駐留在客戶機上(前端),通過查詢語言表達式來調(diào)用服務器上的數(shù)據(jù)庫系統(tǒng)功能(后端)。(應用程序接口標準e.g.ODBC/JDBC用于進行客戶端和服務器的交互)
2. 三層體系結構(three-tier architecture):后端分為應用服務器和數(shù)據(jù)庫服務器;客戶機只作為前端,不包含任何直接的數(shù)據(jù)庫調(diào)用,通過一個表單界面與應用服務器(application server)通信;應用服務器與數(shù)據(jù)庫系統(tǒng)通信以訪問數(shù)據(jù),應用程序的業(yè)務邏輯(business logic)被嵌入到應用服務器中而不是分布在多個客戶機上。
?
?
數(shù)據(jù)庫用戶和管理員
使用數(shù)據(jù)庫的人員可分為數(shù)據(jù)庫用戶和數(shù)據(jù)庫管理員
1. 數(shù)據(jù)庫用戶
數(shù)據(jù)庫用戶可分為四種類型,系統(tǒng)為不同類型用戶設計不同類型的用戶界面
·無經(jīng)驗的用戶(na?ve user):通過激活事先寫好的應用程序同系統(tǒng)交互,典型用戶界面是表格界面。
·應用程序員(application programmer):開發(fā)用戶界面
·老練的用戶(sophisticated user):不通過編寫程序同系統(tǒng)交互,而是用數(shù)據(jù)庫查詢語言或數(shù)據(jù)分析軟件等工具表達要求。
·專門的用戶(specialized user):編寫專門的、不適合于傳統(tǒng)數(shù)據(jù)處理框架的數(shù)據(jù)庫應用的富有經(jīng)驗的用戶。
2. 數(shù)據(jù)庫管理員
對系統(tǒng)進行集中控制的人稱作數(shù)據(jù)庫管理員(DataBase Administrator,DBA),DBA的作用包括:
·模式定義(schema definition)。通過用DDL書寫一系列定義來創(chuàng)建最初數(shù)據(jù)庫模式。
·存儲結構及存取方法定義(storage structure and access-method definition)。
·模式及物理組織的修改(schema and physical-organization modification)。由DBA對模式和物理組織進行修改以反映機構的需求變化,或為提高性能選擇不同的物理組織。
·數(shù)據(jù)訪問授權(granting of authorization for data access)。DBA通過授予不同類型的權限來規(guī)定不同的用戶各自可以訪問數(shù)據(jù)庫的部分。
·日常維護(routine maintenance),包括:
a. 定期備份數(shù)據(jù)
b. 確保正常運轉(zhuǎn)所需的空余磁盤空間,并在需要時升級磁盤空間
c. 監(jiān)視數(shù)據(jù)庫的運行,并確保數(shù)據(jù)庫性能不因一些用戶提交了花費時間較多的任務就下降很多。
?
轉(zhuǎn)載于:https://www.cnblogs.com/RDaneelOlivaw/p/7803410.html
總結
- 上一篇: 造梦西游ol里唐僧怎么配招?
- 下一篇: 【题解搬运】PAT_L1-009 N个数