《數據庫系統概念》2-存儲、事務等的簡介

 

 

1、關係型數據庫簡介
a)DML
SQL語言是非過程的,一次查詢中,能夠輸入多張表,但結果只是一張表。好比
select instructor.name
from instructor
where instructor.dept_name=’history’,
查詢語句定義了要查找dept_name列爲history的數據,並顯示name列,執行後獲得的是一張表,只有一個name列,每一個符合dept_name=’history’篩選條件的數據做爲一行。
b) DDL
DDL能夠定義表、約束、斷言等,好比有以下建立表的語句:
create table department(
dept_name char(20),
building char(15),
budget numeric(12,2));
建立了表department和它的列,並指定了各列的數據類型。DDL語句會同時更新數據字典。

c) 從應用程序訪問數據庫
SQL語句沒有通用的圖靈機那麼強大,有不少計算是SQL沒法作到的,好比接收用戶輸入、顯示內容、網絡通信等,這些功能必須使用像c、c++等宿主(host)語言來實現,而後在程序中嵌入SQL語言來訪問數據庫。
從應用程序訪問數據庫有兩種方式:
提供應用程序接口來傳遞DML、DDL,而後取回結果。好比c語言的ODBC、java的JDBC等;
在應用程序中使用DML預編譯器,而後經過擴展宿主語言的語法來嵌入DML調用。

2、數據庫設計
需求分析階段、概念設計階段和實現階段。
a)在概念設計階段,要選擇數據模型,將需求轉化爲schema,這個階段的重點是對數據和數據關係進行描述。這個階段要解決使用哪些(what)字段和怎樣(how)組織這些字段的問題,前者是商業問題,後者纔是計算機科學問題。
關於組織字段的的方式一般有兩種,一種是使用E-R模型,一種是使用算法自動生成表。
這個階段設計的schema須要知足對數據增刪改查的要求,
b) 實現階段,包括邏輯設計和物理設計兩步,邏輯設計將高度抽象的概念模型轉換爲數據庫實現,而後物理設計則解決文件的組織、存儲結構等問題。
c) 很差的設計會形成信息的冗餘以及缺少表達某些信息的能力:java

好比這張表同時包含了教師(id,name,salary)和部門信息,history信息在兩行中都有,修改history的budget時須要兩行都修改;而若是咱們想增長一個部門時,就會暴露出這個設計表達能力不足的問題,由於只有先增長一個教師才能增長部門。

3、數據存儲和檢索
對一個數據庫系統來講,存儲管理器和查詢處理器是很是重要的兩部分。
a) 存儲管理器
數據存儲在硬盤上,CPU的和內存的速度大於硬盤的讀取速度,因此它須要儘量地減小數據在硬盤與內存之間的轉移,並負責將DML語句翻譯成物理層的命令。即存儲管理器負責數據的增刪改查,它包含的模塊或功能有:
權限及完整性管理器:負責檢查完整性約束、控制用戶訪問權限;
事務管理器:用於保證系統在發生故障時的一致(正確)狀態,以及保證併發事物無衝突地執行;
文件管理器:負責硬盤空間的分配並管理保存在硬盤上的數據結構;
緩存管理器:負責將數據從硬盤讀取到內存,並決定將哪些數據緩存到內存。緩存管理器是數據庫系統的重要部分,有了緩存管理器,數據庫纔可以處理比內存容積大得多的數據。
存儲管理器所操做的文件類型有:
數據文件:數據庫自己
數據字典:對schema的描述
索引:用於提升檢索效率,索引維護了一系列指向特定數據的指針

b) 查詢處理器
包含多個部分:
DDL翻譯器:翻譯DDL指令並記錄到數據字典
DML編譯器:將DML語句編譯成查詢評估引擎能理解的低級指令。DML語句每每能夠有不一樣的翻譯,這些翻譯的執行結果相同但性能不一,DML編譯器也負責查詢優化,選擇性能最高的翻譯方式。
查詢評估引擎:執行由DML編譯器生成的低級指令

4、事務管理
a) 某些對數據的的操做經常會造成單一的邏輯工做單元,好比轉帳,從A帳戶扣款M元,而後給B帳戶增長M元,這兩步操做必需要麼都成功,要麼都失敗,這樣的要求也稱爲原子性(atomicity);另外A、B帳戶的總和在操做事務先後保持不變,這稱爲一致性(consistency)。事務操做必須知足原子性和一致性,在操做過程當中容許暫時地違背一致性(好比轉帳,A、B帳戶的增減須要過程)。
b) 一致性由開發人員來保證,而原子性由數據庫自身來保證;
對於轉帳操做來講,開發人員須要合理地劃分操做步驟,好比講之分爲從A帳戶轉出和給B帳戶轉入兩步,若是將這兩步劃分爲一個事務,則符合一致性,若是任何一步獨立,則會違背一致性;

c) 數據庫的恢復管理器負(recovery manager)負責原子性,實際應用中,事務不免會失敗,這時要屏蔽失敗的事務對數據庫的影響(回滾到失敗前的狀態failure recovery)。
併發控制器(concurrency-control manager),在遇到事務須要併發執行時,沒法保存操做前的狀態,這時由併發控制器經過控制事務間的交互來保證一致性。
恢復管理器和併發控制器組成了事務管理器。

5、數據庫結構(database architecture)
數據庫的結構多種多樣,好比有集中式(centralize)、服務端-客戶端式、並行式(parallel)、分佈式(distrubuted)等。
數據庫的通用結構如圖:c++

6、數據庫的普通用戶和管理員
數據庫的用戶能夠分爲普通用戶(user)和管理員(administrator)
a)普通用戶及對應的用戶接口
依據用戶指望的與數據庫的交互方式能夠進一步分爲四類,對應有不一樣的用戶接口
無經驗的用戶(naive user):使用事先寫好的程序與數據庫交互,用戶接口一般爲表單;
開發者:負責編寫數據庫交互界面;
熟練的用戶(sophisticate):好比數據分析員,使用專業的分析軟件或直接寫SQL來與數據庫交互;
專門的用戶(specialized user),編寫特殊的數據庫應用的人員,好比計算機輔助設計系統、知識庫、專家系統、存儲複雜數據結構(聲音、圖像)的系統等。
b)管理員(DBA)
一般DBA能夠作的操做包括:
定義schema
定義數據的存儲結構和訪問方式
修改schema和數據的物理組織方式
訪問權限控制
平常維護,好比按期備份、確保硬盤空間充足、監控數據庫高效運行等

學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan算法

相關文章
相關標籤/搜索