RT,為了提高自己在資料庫方面的知ci識hui儲備,我決定做一點翻譯,用作練習。 第一部分 導論 資料庫管理系統(DBMS)是相互關聯的數據的集合以及一套用於訪問那些數據的程式。數據集合,通常指的是資料庫,包含和企業相關的數據。DBMS的基本目標是提供既方便又高效的存儲和檢索資料庫信息的方式。 數據 ...
RT,為了提高自己在資料庫方面的知ci識hui儲備,我決定做一點翻譯,用作練習。
第一部分 導論
資料庫管理系統(DBMS)是相互關聯的數據的集合以及一套用於訪問那些數據的程式。數據集合,通常指的是資料庫,包含和企業相關的數據。DBMS的基本目標是提供既方便又高效的存儲和檢索資料庫信息的方式。
資料庫管理系統被設計用來管理大量的信息。數據的管理涉及到定義信息的存儲結構和提供操作數據的機制。此外,資料庫系統必須確保數據存儲的安全,即便是在系統崩潰或者嘗試未授權訪問的情況下。如果數據在幾個用戶間共用,系統必須避免可能的異常結果。
因為在絕大多數機構中,信息是很重要的,電腦科學家發展出了大量用於管理數據的概念和技術。這些概念和技術組成了這本書的焦點。本章簡要地介紹了資料庫系統的原理。
第二部分 關係資料庫
數據模型是用於描述數據、數據關係、數據語義和一致性約束的概念工具。在這部分,我們關註關係模型。我們將於第二章學習的關係模型,它使用表集合代表數據和數據之間的關係。概念上的簡單性使關係型資料庫得到了廣泛的採納應用;今天絕大多數資料庫產品都是基於關係模型的。關係模型在邏輯和視圖的層面描述資料庫,抽象於低層的數據存儲細節。將在第七章(第二部分)討論的實體-關係模型,是一個更高層次的關係模型,廣泛用於資料庫設計。
為了讓關係型資料庫中的數據對用戶可用,我們不得不解決某些問題。最重要的問題是用戶如何指定檢索和更新數據的請求;人們發明瞭幾種查詢語言用以執行該任務。第二,也是最重要的一點,是數據的完整性和保護。資料庫需要保護數據免於受到用戶操作的傷害,無論是有意的操作還是無意的操作。
第三、第四和第五章涵蓋了SQL語言的內容,SQL語言是當今最常用的查詢語言。第三章和第四章提供了介紹和初級和中級水平的SQL語言描述。第四章也包含了資料庫的強制完整性約束和許可權檢查機制,它們控制用戶會實施的訪問和更新行為。第五章包含更多高級主題,其中有在編程語言中訪問SQL和使用SQL進行數據分析等。
第六章涵蓋了三種形式查詢語言,關係代數,元組關係演算和域關係演算,是建立在數學邏輯上的三種聲明式查詢語言。這些形式語言基於SQL。還有另外兩種用戶友好的語言,QBE和Datalog,會在附錄B(可以通過db-book.com線上訪問)中描述。
第三部分 數據存儲和查詢
雖然資料庫系統提供數據的高層級視圖,數據最終還是必須在一個或多個設備上存儲為比特。當今的絕大多數資料庫將數據存儲於磁碟(以及越來越多的固態硬碟)上並且將數據抓取到記憶體中進行處理,或者把數據複製在磁帶和其它的備份設備上存檔。存儲設備的物理特性在數據存儲方式上起到了主要作用,特別是因為隨機訪問硬碟上的一塊數據會比在記憶體中進行同樣的操作慢太多:磁碟訪問花費數十毫秒,而記憶體訪問只需要數十微妙。
第十章從物理存儲沒接的概覽將其,包含用於減少因為設備失敗造成數據丟失的機制。接下來這章描述記錄如何映射到文件中,這種映射是按順序映射到硬碟上的。
很多查詢只參考了一個文件中的小部分記錄。索引是一種可以幫助快速定位需要的記錄的關係的結構,通過它就不需要檢查所有的記錄。這部教材中的索引例子不是像資料庫中的索引,而是用於人的使用。第十一章描述了集中資料庫中使用的索引類型。
用戶查詢必須在資料庫內容上運行,資料庫的內容位於存儲設備上。通常,把查詢分割為更小的操作,即對應的關係代數操作。第十二章描述了查詢被處理的方式、實現單獨操作演算法,和有關這些操作如何同步執行以處理查詢的概述。
處理查詢的時候,有不少方式可以選用,它們的成本相當不同。查詢優化的用處是在評估一個給定的查詢時找出最小成本。第13章描述了查詢優化的工作過程。
第四部分 事務管理
術語“事務”指的是工作中一系列操作的集合形成的單一邏輯單元。例如,將金錢從一個賬戶轉移到另一個的行為就是一個包含兩個更新的事務,每個賬戶都有一個更新。
一個事務的所有行為都被完全執行,或者,為了防止某些失敗,每個不完全事務部分的效果需要可以被撤銷,這是很重要的。這個屬性叫做“原子性”。進一步地,一旦一個事務成功執行,他的效果必須在資料庫中保持著——系統錯誤不應該導致資料庫忘記曾經成功完全執行的事務。這個屬性被成為持久性。
在一個當前正在執行多個事務的資料庫系統中,如果更新共用數據的行為不受控制,就會有潛在的可能性使得事務們看到其它事務創建的更新導致的不一致的中間狀態。這樣的情節可能會導致對資料庫中存儲的數據進行錯誤的更新。因此,資料庫系統必須提供一個機制來使得每一個事務不受其它正在執行的事務的效果影響。這個屬性叫做孤立性。
第十四章描述了事務原理的細節,包含原子性,持續性,孤立性和其它由事務抽象提供的屬性。特別地,本章通過被稱為可串列化的概念來精確說明瞭孤立性的原理。
第十五章描述了多個用於實現孤立性的併發控制技術。第十六章描述了資料庫的恢復管理組件,它實現了原子性和持久性的屬性。
總的來說,資料庫系統的事務管理組件允許應用開發者聚焦於各自的事務實現,可以忽視併發和容錯問題。
第五部分 系統架構
資料庫系統架構收到其運行所在的底層電腦系統的深刻影響。資料庫系統可以是集中式的,在一個伺服器上運行資料庫操作。資料庫系統也可以設計為利用並行電腦的架構。分散式資料庫跨越了多個地理上分離的機器。
第十七章首先概述了在伺服器系統上運行的資料庫系統的架構,這是使用了集中式的和客戶端-伺服器的架構。多種共同實現了資料庫功能的過程也在這裡得到了描述。接下來該章節概述了並行電腦架構,和為了各種類型的並行電腦設計的並行資料庫架構。最後,該章概述了建立分散式資料庫系統時的架構問題。
第十八章描述了資料庫的各種行為——特別是查詢過程——可以通過利用並行處理來實現。
第十九章提出了一系列在分散式資料庫中出現的問題,描述了處理每個問題的方法。這些問題包括如何存儲數據,如何確保運行在多地點的事務的原子性,如何執行併發控制,以及如何在失敗發生時提供高可用性。這章也描述了一個基於雲的數據存儲系統、它的分散式查詢處理和字典系統。
第六部分 數據倉庫,數據挖掘和信息檢索
資料庫查詢通常用於提取特別的信息,比如賬戶餘額和一個客戶的賬戶餘額之和。然而,用於幫助制定企業戰略的查詢通常需要訪問源於多種來源的大量數據。
數據倉庫是將不同來源搜集的數據以一個共同的、統一的資料庫模式存儲的庫。存儲在數據倉庫的數據被一系列複雜的聚合和靜態分析所分析,通常利用我們第五章講過的SQL構建資料庫分析。更進一步地,知識發現技術也可能用於嘗試發現數據中的規則和模板。例如,一個零售商也許會發現某些商品更容易放在一起銷售,並且也許會用這種信息來制定市場戰略。這種從數據中發現知識的方式被成為數據挖掘。第二十章解決有關數據倉庫和數據挖掘的問題。
到目前為止的討論中,我們關註過關係簡單、結構良好的數據。然而,互聯網上、企業的內部網中和個人用戶的電腦中有巨大數量的非結構化文本數據。用戶希望找到這些體積巨大的、絕大多數都是文本化內容中的相關信息,並且是通過簡單的查詢機制,比如關鍵詞查詢。信息檢索領域可以處理這種無結構數據的查詢,並且特別關註查詢結果的分級。雖然相關領域的研究已經有幾十年的歷史,它還是隨著萬維網的發展經歷了巨大的成長。21章提供了信息檢索領域的介紹。
第七部分 特殊資料庫
資料庫系統的幾個應用領域受著關係數據模型的約束的限制,因此,研究者發展了多種基於面向對象方法的數據模型,以處理這些應用領域。
對象-關係模型,在第二十二章中描述,它結合了面向對象模型和關係模型的特點。這個模型提供了面向對象語言的富類型系統,同關係結合在一起,作為數據存儲的基礎。它應用了關係的繼承,而不僅僅是類型。對象-類型數據模型提供了和關係資料庫之間的平滑遷移路徑,這對關係資料庫供應商們很著吸引力。因此,從SQL:1999開始,SQL標準的類型系統包含了一系列的對象-關係特征,同時也在繼續使用關係模型作為底層模型。
屬於面向對象資料庫用於描述支持直接從面向對象編程語言訪問的資料庫系統,而不是需要一個關係查詢語言作為資料庫界面。第二十二章也提供了面向對象資料庫的簡單概覽。
XML語言最早用於添加文本文檔的標記信息,但是卻因為其在數據交換中的應用變得重要起來。XML提供了一種通過嵌套結構表示數據的方法,並且也進一步地允許數據結構中的大量的可伸縮性。這對於某些類型的非傳統數據來說是很重要的。第二十三章描述了SML語言,包含XQuery XML查詢語言,和SQL/XML,一種SQL的擴展,它允許創建嵌套的XML輸出。
第八部分 高級主題
第二十四章涵蓋了應用發展中的大量高級主題,從用於改善應用速度的性能調優開始。接著討論用於作為商業資料庫系統性能測量的標準基準。接下來是應用發展中的問題,比如應用測試和應用遷移。這章總結了標準化過程和現有的資料庫語言標準概覽。
第二十五章描述空間和時間數據類型,以及多媒體數據,還有在資料庫中存儲這些類型的數據時的問題。和移動電腦操作系統相關的資料庫問題也會在這章描述。
最後,第二十六章描述了幾個高級事務處理技術,包含事務處理監測器,事務流,和電商中的事務處理問題。這章接下來會討論主記憶體資料庫系統和實時交易系統,並以一個關於長事務的討論作為結束。