编辑推荐
《数据库系统实现(第2版)》内容深入且全面,技术实用且先进,叙述深入浅出,是一本难得的高层次的教材,适合作为高等院校计算机专业研究生的教材或本科生的教学参考书,也适合作为从事相关研究或开发工作的专业技术人员的高级参考资料。
内容简介
《数据库系统实现(第2版)》是斯坦福大学计算机科学专业数据库系列课程第二门课的教科书。书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分——存储管理器、查询处理器和事务管理器的实现技术。此外,第2版充分反映了数据管理技术的新进展,对内容进行了扩充,除了在第1版中原有的“信息集成”一章(第10章)中加入了新的内容外,还增加了两个全新的章:“数据挖掘”(第11章)和“数据库系统与互联网”(第12章)。
《数据库系统实现(第2版)》适合作为高等院校计算机专业研究生的教材或本科生的教学参考书,也适合作为从事相关研究或开发工作的专业技术人员的高级参考资料。
作者简介
杨冬青,1969年毕业于北京大学数学力学系数学专业,现任北京大学信息科学技术学院教授,博士生导师,计算机科学技术系主任,中国计算机学会数据库专委会委员。多年来承担并完成973、863、国家科技攻关、国家自然科学基金等多项国家重点科研项目,曾获国家科技进步二等奖、三等奖和多项省部级奖励,在国内外杂志及会议上发表论文百余篇,著译作十余部。目前主要研究方向为数据库系统实现技术、Web环境下的信息集成与共享、数据仓库和数据挖掘等。
吴愈青分,别于1995年和1998年在北京大学计算机系获得学士学位和硕士学位;2004年于EECS Department,University 0f Michigan获得博士学位。现就职于美国Indiana University,任.Assistant Professor。主要研究方向为数据库系统及实现,包括数据库查询语言、查询优化、索引技术等,及其在半结构化数据上的应用与实现。在国际会议及期刊上发表论文三十余篇。
包小源,博士,副教授。兰州大学计算数学专业硕士、北京大学计算机应用专业博士。主要研究方向为数据库实现技术、XML数据管理、对等计算、服务计算等。
Hector Garcia-Molina,斯坦福大学计算机科学与电子工程系的Leona rd BoSack和SandraLerner教授。他在数据库系统、分布式系统和数字图书馆领域中发表了大量论文,研究兴趣包括分布式计算系统、数据库系统和数字图书馆。他是ACM会士、美国艺术与科学院会士和美国国家工程院成员。他在1999年获得了ACM SIGMOD创新奖。
Jeffrey D.Ullman,斯坦福大学计算机科学与电子工程系StanfordW.Asche rman教授,数据库技术专家。他独立或与人合作出版了15.v.k著作,发表了170多篇技术论文,研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础设施进行教育。他是美国国家工程院成员,曾获得Knuth奖、SIGMOD贡献奖、Karlstrom杰出教育家奖DEdgar F.Codd发明奖。
Jennifer Widom,美国康奈尔大学计算机科学博士,现为斯坦福大学计算机科学与电子工程系教授,研究兴趣包括半结构化数据的数据库系统问委员会的成员。她在2007年获得了ACM SIGMOD Edgar F.Codd发明奖。
内页插图
目录
出版者的话
译者序
译者简介
出版前言
第1章 DBMS系统概述
1.1 数据库系统的发展
1.1.1 早期的数据库管理系统
1.1.2 关系数据库系统
1.1.3 越来越小的系统
1.1.4 越来越大的系统
1.1.5 信息集成
1.2 数据库管理系统概述
1.2.1 数据定义语言命令
1.2.2 查询处理概述
1.2.3 主存和缓冲区管理器
1.2.4 事务处理
1.2.5 查询处理器
1.3 本书概述
1.4 数据库模型和语言回顾
1.4.1 关系模型回顾
1.4.2 SQL回顾
1.5 参考文献
第一部分数据库系统实现
第2章 辅助存储管理
2.1 存储器层次
2.1.1 存储器层次
2.1.2 在存储器层次间传送数据
2.1.3 易失和非易失存储器
2.1.4 虚拟存储器
2.1.5 习题
2.2 磁盘
2.2.1 磁盘结构
2.2.2 磁盘控制器
2.2.3 磁盘存取特性
2.2.4 习题
2.3 加速对辅助存储器的访问
2.3.1 计算的I/O模型
2.3.2 按柱面组织数据
2.3.3 使用多个磁盘
2.3.4 磁盘镜像
2.3.5 磁盘调度和电梯算法
2.3.6 预取和大规模缓冲
2.3.7 习题
2.4 磁盘故障
2.4.1 间断性故障
2.4.2 校验和
2.4.3 稳定存储
2.4.4 稳定存储的错误处理能力
2.4.5 从磁盘崩溃中恢复
2.4.6 作为冗余技术的镜像
2.4.7 奇偶块
2.4.8 一种改进:RAID5
2.4.9 多个盘崩溃时的处理
2.4.10 习题
2.5 组织磁盘上的数据
2.5.1 定长记录
2.5.2 定长记录在块中的放置
2.5.3 习题
2.6 块和记录地址的表示
2.6.1 客户机-服务器系统中的地址
2.6.2 逻辑地址和结构地址
2.6.3 指针混写
2.6.4 块返回磁盘
2.6.5 被钉住的记录和块
2.6.6 习题
2.7 变长数据和记录
2.7.1 具有变长字段的记录
2.7.2 具有重复字段的记录
2.7.3 可变格式的记录
2.7.4 不能装入一个块中的记录
2.7.5 BLOB
2.7.6 列存储
2.7.7 习题
2.8 记录的修改
2.8.1 插入
2.8.2 删除
2.8.3 修改
2.8.4 习题
2.9 小结
2.10 参考文献
第3章 索引结构
3.1 索引结构基础
3.1.1 顺序文件
3.1.2 稠密索引
3.1.3 稀疏索引
3.1.4 多级索引
3.1.5 辅助索引
3.1.6 辅助索引的运用
3.1.7 辅助索引中的间接
3.1.8 文档检索和倒排索引
3.1.9 习题
3.2 B-树
3.2.1 B-树的结构
3.2.2 B-树的应用
3.2.3 B-树的查找
3.2.4 范围查询
3.2.5 B-树的插入
3.2.6 B-树的删除
3.2.7 B-树的效率
3.2.8 习题
3.3 散列表
3.3.1 辅存散列表
3.3.2 散列表的插入
3.3.3 散列表的删除
3.3.4 散列表索引的效率
3.3.5 可扩展散列表
3.3.6 可扩展散列表的插入
3.3.7 线性散列表
3.3.8 线性散列表的插入
3.3.9 习题
3.4 多维索引
3.4.1 多维索引的应用
3.4.2 利用传统索引执行范围查询
3.4.3 利用传统索引执行最近邻查询
3.4.4 多维索引结构综述
3.5 多维数据的散列结构
3.5.1 网格文件
3.5.2 网格文件的查找
3.5.3 网格文件的插入
3.5.4 网格文件的性能
3.5.5 分段散列函数
3.5.6 网格文件和分段散列的比较
3.5.7 习题
3.6 多维数据的树结构
3.6.1 多键索引
3.6.2 多键索引的性能
3.6.3 kd-树
3.6.4 kd-树的操作
3.6.5 使kd-树适合辅助存储器
3.6.6 四叉树
3.6.7 R-树
3.6.8 R-树的操作
3.6.9 习题
3.7 位图索引
3.7.1 位图索引的动机
3.7.2 压缩位图
3.7.3 分段长度编码位向量的操作
3.7.4 位图索引的管理
3.7.5 习题
3.8 小结
3.9 参考文献
第4章 查询执行
4.1 物理查询计划操作符介绍
4.1.1 扫描表
4.1.2 扫描表时的排序
4.1.3 物理操作符计算模型
4.1.4 衡量代价的参数
4.1.5 扫描操作符的I/O代价
4.1.6 实现物理操作符的迭代器
4.2 一趟算法
4.2.1 一次单个元组操作的一趟算法
4.2.2 整个关系的一元操作的一趟算法
4.2.3 二元操作的一趟算法
4.2.4 习题
4.3 嵌套循环连接
4.3.1 基于元组的嵌套循环连接
4.3.2 基于元组的嵌套循环连接的迭代器
4.3.3 基于块的嵌套循环连接算法
4.3.4 嵌套循环连接的分析
4.3.5 迄今为止的算法的总结
4.3.6 习题
4.4 基于排序的两趟算法
4.4.1 两阶段多路归并排序
4.4.2 利用排序去除重复
4.4.3 利用排序进行分组和聚集
4.4.4 基于排序的并算法
4.4.5 基于排序的交和差算法
4.4.6 基于排序的一个简单的连接算法
4.4.7 简单的排序连接的分析
4.4.8 一种更有效的基于排序的连接
4.4.9 基于排序的算法的总结
4.4.1 0习题
4.5 基于散列的两趟算法
4.5.1 通过散列划分关系
4.5.2 基于散列的消除重复算法
4.5.3 基于散列的分组和聚集算法
4.5.4 基于散列的并、交、差算法
4.5.5 散列连接算法
4.5.6 节省一些磁盘I/O
4.5.7 基于散列的算法的总结
4.5.8 习题
4.6 基于索引的算法
4.6.1 聚簇和非聚簇索引
4.6.2 基于索引的选择
4.6.3 使用索引的连接
4.6.4 使用有序索引的连接
4.6.5 习题
4.7 缓冲区管理
4.7.1 缓冲区管理结构
4.7.2 缓冲区管理策略
4.7.3 物理操作符选择和缓冲区管理的关系
4.7.4 习题
4.8 使用超过两趟的算法
4.8.1 基于排序的多趟算法
4.8.2 基于排序的多趟算法的性能
4.8.3 基于散列的多趟算法
4.8.4 基于散列的多趟算法的性能
4.8.5 习题
4.9 小结
4.10 参考文献
第5章 查询编译器
5.1 语法分析和预处理
5.1.1 语法分析与语法分析树
5.1.2 SQL的一个简单子集的语法
5.1.3 预处理器
5.1.4 预处理涉及视图的查询
5.1.5 习题
5.2 用于改进查询计划的代数定律
5.2.1 交换律与结合律
5.2.2 涉及选择的定律
5.2.3 下推选择
5.2.4 涉及投影的定律
5.2.5 有关连接与积的定律
5.2.6 有关消除重复的定律
5.2.7 涉及分组与聚集的定律
5.2.8 习题
5.3 从语法分析树到逻辑查询计划
5.3.1 转换成关系代数
5.3.2 从条件中去除子查询
5.3.3 逻辑查询计划的改进
5.3.4 可结合/可分配的运算符的分组
5.3.5 习题
5.4 运算代价的估计
5.4.1 中间关系大小的估计
5.4.2 投影运算大小的估计
5.4.3 选择运算大小的估计
5.4.4 连接运算大小的估计
5.4.5 多连接属性的自然连接
5.4.6 多个关系的连接
5.4.7 其他运算大小的估计
5.4.8 习题
5.5 基于代价的计划选择介绍
5.5.1 大小参数估计值的获取
5.5.2 统计量的计算
5.5.3 减少逻辑查询计划代价的启发式估计
5.5.4 枚举物理计划的方法
5.5.5 习题
5.6 连接顺序的选择
5.6.1 连接的左右参数的意义
5.6.2 连接树
5.6.3 左深连接树
5.6.4 通过动态规划来选择连接顺序和分组
5.6.5 带有更具体的代价函数的动态规划
5.6.6 选择连接顺序的贪婪算法
5.6.7 习题
5.7 物理查询计划选择的完成
5.7.1 选取一个选择方法
5.7.2 选取连接方法
5.7.3 流水操作与物化
5.7.4 一元流水运算
5.7.5 二元运算的流水操作
5.7.6 物理查询计划的符号
5.7.7 物理运算的排序
5.7.8 习题
5.8 小结
5.9 参考文献
第6章 系统故障对策
6.1 可恢复操作的问题和模型
6.1.1 故障模式
6.1.2 关于事务的进一步讨论
6.1.3 事务的正确执行
6.1.4 事务的原语操作
6.1.5 习题
6.2 undo日志
6.2.1 日志记录
6.2.2 undo日志规则
6.2.3 使用undo日志的恢复
6.2.4 检查点
6.2.5 非静止检查点
6.2.6 习题
6.3 redo日志
6.3.1 redo日志规则
6.3.2 使用redo日志的恢复
6.3.3 redo日志的检查点
6.3.4 使用带检查点redo日志的恢复
6.3.5 习题
6.4 undo/redo日志
6.4.1 undo/redo规则
6.4.2 使用undo/redo日志的恢复
6.4.3 undo/redo日志的检查点
6.4.4 习题
6.5 针对介质故障的防护
6.5.1 备份
6.5.2 非静止转储
6.5.3 使用备份和日志的恢复
6.5.4 习题
6.6 小结
6.7 参考文献
第7章 并发控制
7.1 串行调度和可串行化调度
7.1.1 调度
7.1.2 串行调度
7.1.3 可串行化调度
7.1.4 事务语义的影响
7.1.5 事务和调度的一种记法
7.1.6 习题
7.2 冲突可串行化
7.2.1 冲突
7.2.2 优先图及冲突可串行化判断
7.2.3 优先图测试发挥作用的原因
7.2.4 习题
7.3 使用锁的可串行化实现
7.3.1 锁
7.3.2 封锁调度器
7.3.3 两阶段封锁
7.3.4 两阶段封锁发挥作用的原因
7.3.5 习题
7.4 有多种锁模式的封锁系统
7.4.1 共享锁与排他锁
7.4.2 相容性矩阵
7.4.3 锁的升级
7.4.4 更新锁
7.4.5 增量锁
7.4.6 习题
7.5 封锁调度器的一种体系结构
7.5.1 插入锁动作的调度器
7.5.2 锁表
7.5.3 习题
7.6 数据库元素的层次
7.6.1 多粒度的锁
7.6.2 警示锁
7.6.3 幻象与插入的正确处理
7.6.4 习题
7.7 树协议
……
第8章 再论事务管理
第9章 并行与分布式数据库
第二部分 现代数据库系统专题
第10章 信息集成
第11章 数据挖掘
第12章 数据库系统与互联网
精彩书摘
1.2.3 主存和缓冲区管理器
数据库中的数据通常驻留在辅助存储器中,在当今的计算机系统中,“辅助存储器”通常就是磁盘。然而,数据必须在主存储器中,才能对其进行有用的操作。存储管理器的任务是控制数据在磁盘上的放置和在磁盘与主存之间的移动。
在一个简单的数据库系统中,存储管理器和底层操作系统的文件系统没有什么不同。但是。为了提高效率,DBMS通常直接控制在磁盘上的存储,至少在一些情况下是这样的。存储管理器跟踪文件在磁盘上所处的位置,获得缓冲区管理器所要求的文件的磁盘块号。
缓冲区管理器负责将可利用的主存空间分割成缓冲区,缓冲区是与页面同等大小的区域,磁盘块的内容可以传送到缓冲区中。这样,所有需要从磁盘得到信息的DBMS成分都或直接或通过执行引擎与缓冲区和缓冲区管理器交互。
不同的DBMS成分所需要的信息的类型包括:
1.数据:数据库自身的内容。
2.元数据:描述数据库的结构及其约束的数据库模式。
3.日志记录:关于最近对数据库所做改变的信息,这些信息支持数据库的持久性。
4.统计信息:DBMS收集和存储的关于数据库中的各个关系或其他成分的大小、取值等信息。
5.索引:支持对数据进行高效存取的数据结构。
1.2.4 事务处理
正如前面所讲,通常将一个或多个数据库操作组成一组,称作事务,事务是必须被作为一个原子,外观上独立于其他事务执行的单位。而且,DBMS保证持久性,即已完成事务所做的工作决不会丢失。事务管理器从应用系统接收事务命令,从而得知什么时候事务开始,什么时候事务结束,以及应用系统的期望(例如,某些应用可能不希望具有原子性)。
事务处理器执行下列任务:
1.日志记录:为了保证持久性,对于数据库的每一个变化都在磁盘上记录日志。日志管理器遵循几种策略中的某一种进行工作,这些策略保证不管在什么时候系统发生故障或“崩溃”,恢复管理器都能查看关于数据库变化的日志,并将数据库恢复到某个一致的状态。开始时,日志管理器将日志写到缓冲区中,然后它与缓冲区管理器协调,保证在适当的时候将缓冲区写到磁盘中(磁盘中的数据不受系统崩溃的影响)。2.并发控制:事务的执行从表面上看必须是孤立的。但是在大多数系统中,实际上有许多事务在同时执行。因此,调度器(并发控制管理器)必须保证多个事务的一个个动作以一种适当的顺序执行,从而使得最终的结果与这些事务事实上一个执行完了再执行下一个的结果相同。典型的调度器通过在数据库的某些部分上维护若干个锁来进行它的工作。这些锁防止两个事务以造成不良后果的方式存取数据的相同部分。如图1.1 所示,锁通常存储在主存储器中的封锁表中。调度器禁止执行引擎访问数据库中被封锁的部分,从而对查询和其他数据库操作的执行发生影响。
前言/序言
随着计算机硬件、软件技术的飞速发展和计算机系统在各行各业的广泛应用,数据已经成为各种机构的宝贵资源,数据库系统对于当今科研部门、政府机关、企事业单位等来说都是至关重要的。而数据库系统中的核心软件是数据库管理系统(DBMS)。DBMS用于高效地创建和存储大量的数据,并对数据进行有效的管理、处理和维护,是数据库专家和技术人员数十年研究开发的结果,是当前最复杂的系统软件之一。要深入掌握数据库系统的原理和技术,进而从事数据库管理软件和工具的开发,必须学习和研究数据库管理系统实现技术。要深入了解数据库系统的内部结构,以开发出高效的数据库应用系统,也需要学习和研究数据库管理系统实现技术。
Hector Garcia�睲olina、Jeffrey D�盪llman和Jennifer Widom是斯坦福大学著名的计算机科学家,多年来他们在数据库系统领域中做了大量的开创性工作,由
数据库系统实现(第2版) [Database System Implementation,Second Edition] epub pdf mobi txt 电子书 下载 2024
数据库系统实现(第2版) [Database System Implementation,Second Edition] 下载 epub mobi pdf txt 电子书 2024
数据库系统实现(第2版) [Database System Implementation,Second Edition] mobi pdf epub txt 电子书 下载 2024
数据库系统实现(第2版) [Database System Implementation,Second Edition] epub pdf mobi txt 电子书 下载 2024