索引 / 001 ZH-TW
Database System Concepts(資料庫系統概念) cover

電腦科學

電腦科學

Database System Concepts(資料庫系統概念)

Abraham Silberschatz; Henry F. Korth; S. Sudarshan

英文原名: Database System Concepts

本書面向電腦科學學生,全面介紹資料庫設計與實作,涵蓋關聯模型與 SQL、查詢處理、交易、並行控制、復原和分散式資料系統。序言假定讀者熟悉基本資料結構、計算機組織與一種高階程式語言。

需要的基礎: 熟悉基本資料結構、計算機組織與一種高階程式語言;不需要事先接觸過資料庫。

難度等級
中級
學術層次
大學部
database systemsSQLdata modelingtransactions教科書

01 / 導讀

導讀

引用

Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw Hill.

章節概要

第7版有9個部分共26章印刷章節,一個給出完整大學綱要的附錄,以及6個僅在作者網站上提供的補充章節(第27–32章)。印刷章節約1280頁。作者說,本書面向大學部三、四年級或研究生一年級的第一門資料庫課程,同時包含可用作補充材料或進階課程導引的進階內容。書中大部分例子取自同一個貫穿始終的例子:一所有系、教師、學生和課程的大學。

第1章:引言

兼具引導性、歷史性和說明性的一章。它闡述資料庫系統的目的、資料觀點、資料庫語言與設計、資料庫引擎、應用架構、使用者與管理員,並簡述歷史。大學這個例子也在此引入。

第2–5章:關聯式模型介紹;SQL介紹;中級SQL;進階SQL

第一部分。第2章講關聯式資料庫的結構、綱要、鍵、綱要圖和關聯代數;關聯代數在本版中被移到了這一章。第3章到第5章講SQL:基本查詢、集合運算、空值、聚合和巢狀子查詢(第3章);連線、檢視、交易、完整性約束、資料型別、索引和授權(第4章);從程式語言存取、函式和過程、觸發器、遞迴查詢和進階聚合(第5章)。

第6–7章:使用E-R模型的資料庫設計;關聯式資料庫設計

第二部分。第6章介紹設計過程和實體—聯絡模型,包括映射基數、轉換為關聯綱要、擴充E-R特性和其他表示法(UML類別圖也在其中)。第7章講函數相依、分解和正規形,附有分解演算法以及一節時態資料建模。作者說,正規化先從直觀的角度引入,因此可以略去更完整的相依理論而不影響連貫性。

第8–9章:複雜資料型別;應用開發

第三部分。第8章處理半結構化資料(XML、JSON、RDF和SPARQL)、物件導向、文字資料和空間資料。第9章講Web基礎、Servlet、其他伺服器端框架、客戶端程式碼與Web服務、應用架構與效能,以及應用安全與加密。

第10–11章:大資料;資料分析

第四部分。第10章從使用者的角度講大資料儲存系統、MapReduce正規形、Hadoop和Spark、流資料和圖資料庫。第11章講資料倉儲、線上分析處理和資料探勘。

第12–14章:實體儲存系統;資料儲存結構;索引

第五部分。講儲存介質(包括快閃記憶體和RAID)、檔案與記錄的組織、緩衝區、列式儲存和記憶體資料庫中的儲存,以及用有序索引、B+樹、雜湊、寫最佳化結構、點陣圖索引和空間索引做索引。

第15–16章:查詢處理;查詢最佳化

第六部分。第15章講查詢代價的度量,以及選擇、排序和連線的演算法。第16章講關係表示式的變換、統計資訊的估計、評估計劃的選擇和實體化檢視。

第17–19章:交易;併發控制;復原系統

第七部分。第17章引入交易、隔離和可序列化。第18章講基於鎖、基於時間戳、基於驗證和多版本的協定以及快照隔離。第19章講日誌與復原,直到ARIES。序言說,只想概覽交易的課程可以單獨使用第17章。

第20–23章:資料庫系統架構;並行與分散式儲存;並行與分散式查詢處理;並行與分散式交易處理

第八部分。序言稱這一部分在本版中被徹底改寫。內容從架構和雲服務開始,經過分區、複製和分散式檔案系統,直到並行與分散式查詢處理、提交協定和共識。

第24–26章:進階索引技術;進階應用開發;區塊鏈資料庫

第九部分。第24章回到索引(布隆過濾器、LSM樹、點陣圖索引、空間索引、雜湊),第25章講效能調優與基準測試。第26章是新增的一章,從資料庫的角度講區塊鏈。

線上章節(第27–32章)

形式化關聯式查詢語言、進階關聯式資料庫設計、基於物件的資料庫、XML、資訊檢索和PostgreSQL,提供線上版本。

核心概念

第1–9章:模型、語言與設計

  • 關聯式模型與關聯代數:SQL背後的資料模型和形式化運算。
  • SQL:用三章講授,從查詢到觸發器和遞迴。
  • E-R建模與正規化:從需求到綱要的設計。
  • 半結構化資料(XML、JSON、RDF/SPARQL)與Web應用開發。

第10–26章:大資料、內部實作與分散式

  • MapReduce、Hadoop和Spark,資料倉儲,OLAP。
  • B+樹與LSM樹:適應不同負載的索引結構。
  • 查詢最佳化:變換規則與代價估計。
  • ACID交易、可序列化與快照隔離。
  • ARIES復原。
  • 共識與提交協定(兩階段提交、Paxos、Raft)和 CAP定理。
  • 區塊鏈資料庫。

評析

優點

  • 貫穿全書的同一個例子。 大學資料庫反覆出現,附錄A和網站提供了完整的綱要,以及建立並填充它的SQL 陳述式,讀者可以執行書中的查詢。
  • 有意以直觀取代形式化。 序言說重要的結果都會講到,但略去形式化證明,轉而用圖和例子說明結果為什麼成立。
  • 模組化的結構。 序言指出了課程可以提前停下的地方(例如第7章最初的正規化部分,以及只講交易時單獨使用第17章)。
  • 免費的配套材料。 作者的網站提供投影片、練習題解答、範例表、實驗練習和可在瀏覽器中執行的SQL工具,另有6個線上章節和一份PostgreSQL概述。
  • 涵蓋當前的系統。 固態硬碟、列式儲存、記憶體資料庫、大資料系統和區塊鏈都各有專門講述。

侷限

  • 篇幅。 印刷版9個部分約1280頁,遠遠超出一門課程能涵蓋的範圍;教師和自學者都需要取捨。
  • 理論有意從簡。 形式化證明留給研究論文和進階教材。第6版中詳細印刷的關聯演算、基於物件的資料庫、XML和資訊檢索,現在或被簡化,或移到了線上章節。
  • 與具體技術相關的部分容易過時。 第9章點名了具體工具(Servlet、JSP、Django、Hibernate),大資料章節點名了Hadoop和Spark,所以工具變化後這些部分需要補充。

在課程中的定位

Database System Concepts 是一本涵蓋範圍廣的核心教材,從SQL和設計一直講到內部實作和分散式系統,自然適合作為第一門資料庫課程的主教材。Elmasri 和 Navathe 的 Fundamentals of Database Systems 是書單中另一本綜合性教材,更強調概念建模;兩者重疊很多,都可以作主教材。

Hernandez 的 Database Design for Mere Mortals 是一套通俗的關聯式設計方法,適合需要先學設計、後學理論的讀者。Ramakrishnan 和 Gehrke 的 Database Management Systems 是與本書同一領域的基礎性指南,Coronel 和 Morris 的 Database Systems 面向商業導向的設計、實作與管理。Gray 和 Reuter 的 Transaction Processing 是第17–19章內容的更深入的參考書。

如何使用本書

對先修知識的要求不高。序言假定讀者熟悉基本資料結構、電腦組織和一種高階程式語言,如 Java、C、C++ 或 Python。

一個學期的實用安排:

  • 核心: 第1章;第2–5章(關聯式模型與SQL);第6–7章(設計)。
  • 內部實作: 第12–14章(儲存與索引),然後是第15–16章(查詢處理),再是第17章以及第18–19章的部分內容(交易)。
  • 選讀: 應用與大資料看第8–11章;進階課程看第20–23章和第24–26章。

作者強烈推薦加入動手實作的環節。從網站上建立大學綱要,對照公布的答案做練習題,並在閱讀的同時,在真實的資料庫系統上執行實驗材料。