索引 / 001 ZH-CN
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章。

作者强烈推荐加入动手实践的环节。从网站上建立大学模式,对照公布的答案做练习题,并在阅读的同时,在真实的数据库系统上运行实验材料。