DBMS-基本概念


文件處理系統(file-processing system)的主要弊端:

數據冗余和不一致(data redundancy and inconsistency)、數據訪問困難(difficulty in accessing data)、數據孤立(data isolation)、完整性問題(integrity problem)、原子性問題(atomicity problem)、並發訪問異常(concurrent-access anomaly)、安全性問題(security problem)。

 

 

數據抽象的三個層次

 

1)物理層(physical level):詳細描述復雜的底層數據結構

2)邏輯層(logical level):描述數據庫中存儲什么數據及這些數據間存在的關系。

物理數據獨立性(physical data independence):應用程序不依賴於物理模式,即使物理模式改變也無須重寫應用程序,邏輯層用戶不必知道邏輯層結構實現可能涉及的復雜物理層結構。

3)視圖層(view level):只描述數據庫的某個部分,系統可以為同一數據庫提供多個視圖,使用戶與系統交互更簡單。

 

 

數據庫模式

實例(instance):特定時刻存儲在數據庫中的信息的集合稱作數據的一個實例。

數據庫模式(schema):數據庫的總體設計,即使發生變化,也不頻繁。

數據庫系統可分為幾種不同的模式:e.g.物理模式、邏輯模式、子模式(subschema,描述數據庫的不同視圖)。

 

 

數據模型(data model):描述數據、數據聯系、數據語義及一致性約束的概念工具的集合,提供一種描述物理層、邏輯層及視圖層數據庫設計的方式。

數據模型可被划分為四類:

關系模型(relational model):一種基於記錄的模型,用表的集合來表示數據和數據間的聯系,每個表有多個列,每列有唯一的列名。

實體-聯系模型(entity-relationship model,a.k.a. E-R):基於對現實世界的一種認識——現實世界由一組基本對象(實體)及這些對象間的聯系構成。實體是現實世界中可區別於其他對象的一件事情或一個物體。

E-R提供一種方便的圖形化方式來觀察數據、聯系和約束。

數據庫中實體通過屬性(attribute)集合來描述;

聯系(relationship)是幾個實體之間的關聯;

同一類型的所有實體的集合稱為實體集(entity set),同一類型的所有聯系的集合稱作聯系集(relationship set);

基於對象的數據模型(object-based data model):可看作E-R模型增加了封裝、方法和對象標志等概念后的擴展。對象-關系數據模型結合了面向對象的數據模型和關系數據模型的特征。

半結構化數據模型(semistructured data model):允許相同類型的數據項含有不同的屬性集的數據定義。

網狀數據模型(network data model)、層次數據模型(hierarchical data model)如今已經很少使用。

 

 

數據庫語言

數據庫系統提供數據定義語言(data-definition language)和數據操縱語言(data-manipulation language),構成了單一數據庫語言的不同部分。

1. 數據操縱語言(DML):使用戶可以訪問或操縱那些按某種適當的數據模型組織起來的數據。

DML的訪問類型包括:增、刪、查、改。

查詢(query):要求對信息進行檢索的語句,DML中涉及信息檢索的部分稱作查詢語言(query language)。

通常有兩類基本的DML:

1)過程化DML(procedural DML):要求用戶指定需要什么數據以及如何獲得這些數據。

2)聲明式DML(declarative DML):也稱非過程化DML,還要求用戶指定需要什么數據,而不指明如何獲得這些數據。

2. 數據庫定義語言(DDL):用於表達說明數據庫模式的一系列定義(定義數據庫模式),也可用於定義數據的其他特征。

數據存儲和定義(data storage and definition)語言:一系列特殊的DDL語句,用於說明數據庫系統所使用的存儲結構和訪問方式,定義了數據庫模式的實現細節。

存儲在數據庫中的數據值必須滿足某些一致性約束(consistency constraint),DDL語言提供指定這種約束的工具,每當數據庫更新時數據庫系統都會檢查這些約束。

·域約束(domain constraint):每個屬性都對應於一個所有可能的取值構成的域。

·參照完整性(referential integrity):一個關系中給定屬性集上的取值也在另一關系的某一屬性集的取值中出現。

·斷言(assertion):數據庫需要時刻滿足某一條件。斷言創建后系統會監測其有效性,如果斷言有效,則以后只有不破壞斷言的數據庫更新才被允許。

·授權(authorization):對於不同用戶在數據庫中的不同數據值上允許不同的訪問類型,這些區別以授權來表達。如:a. 讀權限(read authorization)允許讀取數據但不能修改數據;b. 插入權限(insert authorization)允許插入新數據但不允許修改已有數據;更新權限(update authorization)允許修改但不能刪除數據;刪除權限(delete authorization)允許刪除數據。

數據字典:DDL以指令(語句)作為輸入,生成輸出放在數據字典(data dictionary)中。數據字典包含元數據(metadata)。數據字典可以看做一種特殊的表,只能由數據庫系統本身來訪問和修改,在讀取和修改實際數據前數據系統要先參考數據字典。

 

 

關系數據庫:基於關系模型,使用一系列表來表達數據以及這些數據之間的關系。一種基於記錄的模型,數據庫的結構時幾種固定格式的記錄。

表:每個表包含一種特定類型的記錄,每種記錄類型定義固定數目的字段或屬性(每個表有多個列),表的列對應記錄類型的屬性(每個列有唯一的名字)。

 

來自應用程序的數據庫訪問

大多數計算和動作必須用一種宿主語言(如C/C++/Java)來完成,再在其中使用嵌入式的SQL查詢來完成對數據庫的訪問。由宿主語言執行DML訪問數據庫的兩種途徑包括:

1. 通過提供應用程序接口(過程集),將DML和DDL語句發送給數據庫再取回結果。e.g. C語言+ODBC、Java+JDBC

2. 通過擴展宿主語言的語法,在宿主語言的程序中嵌入DML調用。

 

規范化

設計關數據庫所用到的一種方法,通過設計一種符合適當范式(normal form)的模式,生成一個關系模式集合,使存儲信息時沒有不必要的冗余,同時又能輕易檢索數據。

 

數據存儲和查詢

數據庫系統的功能部件大致可分為存儲管理器和查詢處理部件。

1) 存儲管理器: 數據庫系統中負責在數據庫中存儲的低層數據與應用程序以及向系統提交的查詢之間提供接口的部件,負責數據庫中數據的存儲、檢索和更新。

存儲管理部件包括:

·權限及完整性管理器(authorization and integrity manager):檢測是否滿足完整性約束,檢查視圖訪問數據的用戶的權限。

·事務管理器(transaction manager):保證即使發生故障,數據庫也保持在一致(正確)的狀態,並保證並發事務的執行不發生沖突。

·文件管理器(file manager):管理磁盤存儲空間的分配,管理用於表示磁盤上所存儲信息的數據結構。

·緩沖管理器(buffer manager):負責將數據從磁盤取到內存中來,並決定哪些數據應被緩沖存儲在內存中。

存儲管理器實現了幾種數據結構,作為系統物理實現的一部分:

·數據文件(data files):存儲數據庫自身。

·數據字典(data dictionary):存儲關於數據庫結構的元數據,尤其是數據庫模式。

·索引(index):提供對數據項的快速訪問(e.g. 指針、散列)

2)查詢處理器

查詢處理器負責編譯和執行DDL和DML語句,組件包括:

·DDL解釋器(DDL interpreter):解釋DDL語句並將這些定義記錄在數據字典中。

·DML編譯器(DML compiler):將查詢語言中的DML語句翻譯為執行方案,包括一系列查詢執行引擎能理解的低級指令。

DML編譯器還進行查詢優化(query optimization),從幾種等價的具有相同結果的執行方案中選出代價最小的一種。

·查詢執行引擎(query evaluation engine):執行由DML編譯器產生的低級指令。

 

事務管理

事務(transaction):數據庫應用中完成單一邏輯功能的操作集合。每一個事務是一個既具有原子性又具有一致性的單元,。

事務的定義應使之不違反數據庫的一致性約束。一個事務可以被定義為由多個單獨程序組成,程序依次執行可以保持一致性,但單個程序自身都不是把數據庫從一個一致狀態轉入一個新的抑制狀態,因此這些程序不是事務。

事務管理器(transaction manager)包括並發控制管理器(concurrency-control manager,控制並發事物間的相互影響,保證一致性)和恢復管理器(recovery manager,事務失敗時進行故障恢復,保證原子性和持久性)。

 

數據庫體系結構

 

1. 兩層體系結構(two-tier architecture):應用程序駐留在客戶機上(前端),通過查詢語言表達式來調用服務器上的數據庫系統功能(后端)。(應用程序接口標准e.g.ODBC/JDBC用於進行客戶端和服務器的交互)

2. 三層體系結構(three-tier architecture):后端分為應用服務器和數據庫服務器;客戶機只作為前端,不包含任何直接的數據庫調用,通過一個表單界面與應用服務器(application server)通信;應用服務器與數據庫系統通信以訪問數據,應用程序的業務邏輯(business logic)被嵌入到應用服務器中而不是分布在多個客戶機上。

 

 

數據庫用戶和管理員

使用數據庫的人員可分為數據庫用戶和數據庫管理員

1. 數據庫用戶

數據庫用戶可分為四種類型,系統為不同類型用戶設計不同類型的用戶界面

·無經驗的用戶(naïve user):通過激活事先寫好的應用程序同系統交互,典型用戶界面是表格界面。

·應用程序員(application programmer):開發用戶界面

·老練的用戶(sophisticated user):不通過編寫程序同系統交互,而是用數據庫查詢語言或數據分析軟件等工具表達要求。

·專門的用戶(specialized user):編寫專門的、不適合於傳統數據處理框架的數據庫應用的富有經驗的用戶。

2. 數據庫管理員

對系統進行集中控制的人稱作數據庫管理員(DataBase Administrator,DBA),DBA的作用包括:

·模式定義(schema definition)。通過用DDL書寫一系列定義來創建最初數據庫模式。

·存儲結構及存取方法定義(storage structure and access-method definition)。

·模式及物理組織的修改(schema and physical-organization modification)。由DBA對模式和物理組織進行修改以反映機構的需求變化,或為提高性能選擇不同的物理組織。

·數據訪問授權(granting of authorization for data access)。DBA通過授予不同類型的權限來規定不同的用戶各自可以訪問數據庫的部分。

·日常維護(routine maintenance),包括:

a. 定期備份數據

b. 確保正常運轉所需的空余磁盤空間,並在需要時升級磁盤空間

c. 監視數據庫的運行,並確保數據庫性能不因一些用戶提交了花費時間較多的任務就下降很多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM