[套装书]数据库系统概念(本科教学版·原书第7版)+分布式数据库原理、架构与实践(2册)

作者
[美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 等
丛书名
计算机科学丛书
出版社
机械工业出版社
ISBN
9782110261643
简要
简介
内容简介书籍计算机书籍 ---------------------------8084497 - 数据库系统概念(本科教学版·原书第7版)--------------------------- 《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。本书基于该书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。 ---------------------------8084477 - 分布式数据库原理、架构与实践--------------------------- 本书从原理、结构和案例三个维度深度剖析了如何设计一款分布式数据库。本书内容以腾讯金融级分布数据库TDSQL的研发过程为基础,深入分析了分布式数据库的底层运行原理、核心实现技术、完整架构和经典案例,其中重点分析了一致性问题。一致性问题也是设计分布式数据库时面临的主要问题,可以说只要完美解决了一致性问题,那一款高可用的分布式数据库的设计工作就已经完成80%了。 本书共分为三篇: 第*篇——原理篇(第1~4章):本篇先罗列出设计一款分布式数据库需要面对的挑战都有哪些,然后指出分布式设计的基本理论,*后总体分析了一致性问题的本质是什么;然后用一章的篇幅深入分析了不同类型的一致性问题的特点、本质和出现的根本原因,这为解决一致性问题奠定了基础;接着分了解决一致性问题的具体方案,并指出各种方案的重点和原理;*后则总体介绍分布式事务的原理和多种实现技术。 第二篇——架构篇(第5~6章):本篇以分布式事务处理技术作为主线,深入讨论了与分布式数据库架构相关的内容。其中,第5章从数据库架构的角度,对高可用性、可扩展性、存算分离架构解耦等影响架构的经典技术进行讨论;第6章从数据库架构的角度,对新硬件、云计算、微服务等影响架构的新技术进行深入分析。 第三篇——典型案例篇(第7~10章)本篇通过对业界经典案例的分析,帮读者夯实对架构、事务处理技术等内容的理解。本篇首先Spanner开始,探索其分布式架构、强一致性技术和事务处理技术。接下来对Percolator事务技术和开源数据库CockroachDB的分布式架构、事务处理技术、因果一致性进行讨论。*后,还对内存型数据库Hekaton、文档型分布式数据库MongoDB、分布式列存数据库HBase等数据库产品进行了分析。
目录
[套装书具体书目]
8084477 - 分布式数据库原理、架构与实践 - 9787111691617 - 机械工业出版社 - 定价 99
8084497 - 数据库系统概念(本科教学版·原书第7版) - 9787111692225 - 机械工业出版社 - 定价 89



---------------------------8084497 - 数据库系统概念(本科教学版·原书第7版)---------------------------


改编者序
译者简介
前言
作者简介
第1章 引言1
1.1 数据库系统应用1
1.2 数据库系统的目标3
1.3 数据视图6
1.3.1 数据模型6
1.3.2 关系数据模型6
1.3.3 数据抽象7
1.3.4 实例和模式8
1.4 数据库语言9
1.4.1 数据定义语言9
1.4.2 SQL数据定义语言10
1.4.3 数据操纵语言10
1.4.4 SQL数据操纵语言11
1.4.5 从应用程序访问数据库11
1.5 数据库设计12
1.6 数据库引擎12
1.6.1 存储管理器13
1.6.2 查询处理器14
1.6.3 事务管理14
1.7 数据库和应用体系结构15
1.8 数据库用户和管理员16
1.8.1 数据库用户和用户界面16
1.8.2 数据库管理员17
1.9 数据库系统的历史17
1.10 总结20
术语回顾21
实践习题22
习题22
工具22
延伸阅读23
参考文献23
第一部分 关系语言
第2章 关系模型介绍26
2.1 关系数据库的结构26
2.2 数据库模式28
2.3 码29
2.4 模式图32
2.5 关系查询语言32
2.6 总结33
术语回顾33
实践习题34
习题34
延伸阅读35
参考文献35
第3章 SQL介绍36
3.1 SQL查询语言概览36
3.2 SQL数据定义37
3.2.1 基本类型37
3.2.2 基本模式定义38
3.3 SQL查询的基本结构40
3.3.1 单关系查询40
3.3.2 多关系查询42
3.4 附加的基本运算46
3.4.1 更名运算46
3.4.2 字符串运算47
3.4.3 select子句中的属性说明48
3.4.4 排列元组的显示次序48
3.4.5 where子句谓词49
3.5 集合运算49
3.5.1 并运算50
3.5.2 交运算51
3.5.3 差运算51
3.6 空值52
3.7 聚集函数53
3.7.1 基本聚集53
3.7.2 分组聚集54
3.7.3 having子句56
3.7.4 对空值和布尔值的聚集57
3.8 嵌套子查询58
3.8.1 集合成员资格58
3.8.2 集合比较59
3.8.3 空关系测试60
3.8.4 重复元组存在性测试61
3.8.5 from子句中的子查询62
3.8.6 with子句63
3.8.7 标量子查询64
3.8.8 不带from子句的标量64
3.9 数据库的修改65
3.9.1 删除66
3.9.2 插入67
3.9.3 更新68
3.10 总结69
术语回顾70
实践习题70
习题72
工具74
延伸阅读75
参考文献75
第4章 中级SQL76
4.1 连接表达式76
4.1.1 自然连接76
4.1.2 连接条件79
4.1.3 外连接80
4.1.4 连接类型和条件83
4.2 视图83
4.2.1 视图定义84
4.2.2 在SQL查询中使用视图85
4.2.3 物化视图86
4.2.4 视图更新86
4.3 事务88
4.4 完整性约束89
4.4.1 单个关系上的约束90
4.4.2 非空约束90
4.4.3 唯一性约束91
4.4.4 check子句91
4.4.5 引用完整性91
4.4.6 给约束赋名93
4.4.7 事务中对完整性约束的违反94
4.4.8 复杂check条件与断言94
4.5 SQL的数据类型与模式96
4.5.1 SQL中的日期和时间类型96
4.5.2 类型转换和格式化函数96
4.5.3 缺省值97
4.5.4 大对象类型98
4.5.5 用户自定义类型99
4.5.6 生成唯一码值101
4.5.7 create table的扩展102
4.5.8 模式、与环境102
4.6 SQL中的索引定义103
4.7 授权104
4.7.1 权限的授予与收回105
4.7.2 角色106
4.7.3 视图的授权107
4.7.4 模式的授权108
4.7.5 权限的转移108
4.7.6 权限的收回109
4.7.7 行级授权110
4.8 总结110
术语回顾111
实践习题112
习题113
延伸阅读114
参考文献114
第5章 高级SQL116
5.1 使用程序设计语言访问SQL116
5.1.1 JDBC117
5.1.2 从Python访问数据库123
5.1.3 ODBC123
5.1.4 嵌入式SQL125
5.2 函数和过程127
5.2.1 声明及调用SQL函数和过程127
5.2.2 用于过程和函数的语言结构128
5.2.3 外部语言例程131
5.3 触发器132
5.3.1 对触发器的需求132
5.3.2 SQL中的触发器132
5.3.3 何时不用触发器135
5.4 递归查询137
5.4.1 使用迭代的传递闭包137
5.4.2 SQL中的递归139
5.5 高级聚集特性140
5.5.1 排名141
5.5.2 分窗144
5.5.3 旋转145
5.5.4 上卷和立方体146
5.6 总结149
术语回顾149
实践习题149
习题151
工具153
延伸阅读153
第6章 形式化关系查询语言154
6.1 关系代数154
6.1.1 选择运算154
6.1.2 投影运算155
6.1.3 关系运算的复合155
6.1.4 笛卡儿积运算156
6.1.5 连接运算157
6.1.6 集合运算158
6.1.7 赋值运算159
6.1.8 更名运算160
6.1.9 等价查询161
6.2 元组关系演算161
6.2.1 查询示例161
6.2.2 形式化定义164
6.2.3 表达式的安全性164
6.3 域关系演算165
6.3.1 形式化定义165
6.3.2 查询示例165
6.3.3 表达式的安全性166
6.4 纯关系查询语言的表达能力167
6.5 总结168
术语回顾168
实践习题168
习题170
延伸阅读171
参考文献171
第二部分 数据库设计与应用程序开发
第7章 使用E-R模型的数据库设计174
7.1 设计过程概览174
7.1.1 设计阶段174
7.1.2 设计选择175
7.2 实体-联系模型176
7.2.1 实体集176
7.2.2 联系集177
7.3 复杂属性179
7.4 映射基数181
7.5 主码184
7.5.1 实体集184
7.5.2 联系集185
7.5.3 弱实体集186
7.6 从实体集中删除冗余属性187
7.7 将E-R图转换为关系模式190
7.7.1 强实体集的表示190
7.7.2 具有复杂属性的强实体集的表示190
7.7.3 弱实体集的表示192
7.7.4 联系集的表示192
7.7.5 模式的冗余193
7.7.6 模式的合并194
7.8 扩展的E-R特性194
7.8.1 特化195
7.8.2 概化196
7.8.3 属性继承196
7.8.4 特化上的约束197
7.8.5 聚集197
7.8.6 转换为关系模式198
7.9 实体-联系设计问题200
7.9.1 E-R图中的常见错误200
7.9.2 使用实体集还是属性201
7.9.3 使用实体集还是联系集202
7.9.4 二元还是n元联系集203
7.10 数据建模的可选表示法204
7.10.1 可选的E-R表示法205
7.10.2 统一建模语言206
7.11 数据库设计的其他方面208
7.11.1 功能要求208
7.11.2 数据流、工作流208
7.11.3 模式演化208
7.12 总结209
术语回顾210
实践习题210
习题212
工具213
延伸阅读214
参考文献214
第8章 关系数据库设计215
8.1 好的关系设计的特点215
8.1.1 分解216
8.1.2 无损分解217
8.1.3 规范化理论218
8.2 使用函数依赖进行分解218
8.2.1 符号惯例219
8.2.2 码和函数依赖219
8.2.3 无损分解和函数依赖221
8.3 范式222
8.3.1 Boyce-Codd范式222
8.3.2 第三范式224
8.3.3 BCNF和3NF的比较225
8.3.4 更高级的范式226
8.4 函数依赖理论226
8.4.1 函数依赖集的闭包226
8.4.2 属性集的闭包228
8.4.3 正则覆盖229
8.4.4 保持依赖232
8.5 使用函数依赖的分解算法233
8.5.1 BCNF分解233
8.5.2 3NF分解235
8.5.3 3NF算法的正确性236
8.6 使用多值依赖的分解237
8.6.1 多值依赖237
8.6.2 第四范式239
8.6.3 4NF分解239
8.7 更多的范式240
8.8 原子域和第一范式241
8.9 数据库设计过程242
8.9.1 E-R模型和规范化242
8.9.2 属性和联系的命名243
8.9.3 为了性能去规范化244
8.9.4 其他设计问题244
8.10 时态数据建模245
8.11 总结247
术语回顾248
实践习题249
习题251
延伸阅读253
参考文献254
第9章 应用程序开发255
9.1 应用程序和用户界面255
9.2 Web基础256
9.2.1 统一资源定位符256
9.2.2 超文本标记语言257
9.2.3 Web服务器和会话259
9.3 servlet261
9.3.1 servlet示例261
9.3.2 servlet会话263
9.3.3 servlet的生命周期264
9.3.4 应用服务器264
9.4 可选择的服务器端框架264
9.4.1 服务器端脚本264
9.4.2 Web应用框架266
9.4.3 Django框架267
9.5 客户端代码和Web服务268
9.5.1 JavaScript268
9.5.2 Web服务272
9.5.3 断连操作272
9.5.4 移动应用平台273
9.6 应用程序体系结构274
9.6.1 业务逻辑层275
9.6.2 数据访问层和对象-关系映射275
9.7 应用程序性能278
9.7.1 通过高速缓存减少开销279
9.7.2 并行处理280
9.8 应用程序安全性280
9.8.1 SQL注入280
9.8.2 跨站点脚本和请求伪造281
9.8.3 密码泄露282
9.8.4 应用级认证283
9.8.5 应用级授权284
9.8.6 审计追踪286
9.8.7 隐私286
9.9 加密及其应用287
9.9.1 加密技术287
9.9.2 数据库中的加密支持289
9.9.3 加密和认证290
9.10 总结291
术语回顾292
实践习题293
习题293
项目建议294
工具296
延伸阅读297
参考文献297
第三部分 数据管理实现技术
第10章 存储管理300
10.1 物理存储介质概述300
10.2 存储器接口302
10.3 磁盘303
10.3.1 磁盘的物理特性303
10.3.2 磁盘的性能度量305
10.4 闪存306
10.5 文件组织308
10.5.1 定长记录308
10.5.2 变长记录310
10.5.3 大对象存储312
10.6 文件中记录的组织312
10.6.1 堆文件组织313
10.6.2 顺序文件组织314
10.6.3 多表聚簇文件组织315
10.6.4 划分317
10.7 数据字典存储317
10.8 数据库缓冲区319
10.8.1 缓冲区管理器319
10.8.2 缓冲区替换策略321
10.8.3 写操作的重排序与恢复323
10.9 总结324
术语回顾324
实践习题325
习题326
延伸阅读327
参考文献327
第11章 索引328
11.1 基本概念328
11.2 顺序索引329
11.2.1 稠密索引和稀疏索引329
11.2.2 多级索引332
11.2.3 索引更新333
11.2.4 辅助索引334
11.2.5 多码索引335
11.3 B+树索引文件335
11.3.1 B+树的结构336
11.3.2 B+树的查询338
11.3.3 B+树的更新341
11.3.4 B+树更新的复杂度346
11.3.5 非唯一性搜索码347
11.4 散列索引348
11.5 多码访问350
11.5.1 使用多个单码索引350
11.5.2 多码索引350
11.5.3 覆盖索引351
11.6 索引的创建351
11.7 位图索引353
11.8 总结354
术语回顾355
实践习题355
习题356
延伸阅读357
参考文献357
第12章 查询处理和查询优化358
12.1 概述358
12.2 查询代价的度量360
12.3 关系代数运算的执行362
12.3.1 选择运算362
12.3.2 排序366
12.3.3 连接运算368
12.3.4 其他运算378
12.4 表达式执行381
12.4.1 物化381
12.4.2 流水线382
12.5 查询优化384
12.5.1 概述384
12.5.2 关系表达式的转换386
12.5.3 表达式结果的统计信息估计393
12.5.4 执行计划的选择400
12.6 总结408
术语回顾410
实践习题411
习题414
延伸阅读415
参考文献415
第13章 事务管理416
13.1 事务的概念416
13.2 一个简单的事务模型417
13.3 存储器结构419
13.4 事务的原子性和持久性420
13.5 事务的隔离性421
13.6 可串行化425
13.7 事务的隔离性和原子性428
13.7.1 可恢复调度428
13.7.2 无级联调度428
13.8 事务的隔离性级别429
13.9 隔离性级别的实现431
13.9.1 锁431
13.9.2 时间戳432
13.9.3 多版本和快照隔离432
13.10 事务的SQL语句表示433
13.11 总结434
术语回顾435
实践习题436
习题436
延伸阅读437
参考文献437
第14章 并发控制与恢复438
14.1 基于锁的协议438
14.1.1 锁438
14.1.2 锁的授予441
14.1.3 两阶段封锁协议441
14.1.4 封锁的实现443
14.1.5 基于图的协议444
14.2 死锁处理446
14.2.1 死锁预防446
14.2.2 死锁检测与恢复447
14.3 多粒度449
14.4 插入操作、删除操作与谓词读451
14.4.1 删除451
14.4.2 插入452
14.4.3 谓词读和幻象现象452
14.5 基于时间戳的协议454
14.5.1 时间戳454
14.5.2 时间戳排序协议455
14.5.3 Thomas写规则456
14.6 基于有效性检查的协议458
14.7 多版本机制459
14.7.1 多版本时间戳排序460
14.7.2 多版本两阶段封锁461
14.8 故障分类462
14.9 存储器463
14.9.1 稳定存储器的实现463
14.9.2 数据访问464
14.10 恢复与原子性465
14.10.1 日志记录466
14.10.2 数据库修改467
14.10.3 并发控制与恢复467
14.10.4 事务提交468
14.10.5 使用日志来重做和撤销事务 468
14.10.6 检查点471
14.11 恢复算法472
14.11.1 事务回滚472
14.11.2 系统崩溃后的恢复472
14.11.3 提交处理的优化474
14.12 缓冲区管理474
14.12.1 日志记录缓冲474
14.12.2 数据库缓冲475
14.12.3 操作系统在缓冲区管理中的作用476
14.12.4 模糊检查点477
14.13 总结477
术语回顾480
实践习题481
习题483
延伸阅读484
参考文献484
第四部分 高级话题一
第15章 大数据分析
第16章 区块链数据库
第17章 高级应用开发
附录A 详细的大学模式



---------------------------8084477 - 分布式数据库原理、架构与实践---------------------------



第一篇 分布式书库系统原理篇 1
第1章 分布式数据库系统的挑战和原理 1
分布式数据库系统的挑战 1
1.1.1 分布式系统面临的问题 3
1.1.2 数据库面临的一致性问题 7
1.1.3 分布式数据库系统面临的问题 18
1.2 分布式理论 25
1.2.1ACID、BASE与CAP 26
1.2.2CAP分布式理论 29
1.2.3 PACELC理论和CAP新进展 38
1.3 分布式系统一致性的本质 39
1.3.1 偏序与全序 40
1.3.2有序与并发 40
第2章 深入研究一致性 43
2.1 概述 43
2.1.1 常见的分布式一致性 45
2.1.2 对一致性的研究 50
2.1.3 一致性分类 53
2.2 结果一致性 53
2.2.1 共识问题形象化描述:拜占庭将军问题 54
2.2.2 结果一致性的应用 55
2.3 次序一致性 56
2.3.1 线性一致性 58
2.3.2 顺序一致性 60
2.3.3 因果一致性 60
2.3.4 会话一致性 62
2.4 分布式事务一致性 63
2.4.1单机事务的一致性 63
2.4.2 分布式事务的一致性 67
2.4.3 分布式一致性与分布式事务一致性的关系 68
2.5 架构一致性 69
2.5.1 分布式系统主备一致性 70
2.5.2 去中心化的分布式系统一致性 71
第3章 一致性问题的解决方案 72
3.1 依赖物理时间存在的问题 72
3.1.1不可信的物理时钟 73
3.1.2典型案例——日志问题 74
3.2 逻辑时钟 75
3.2.1 从因果模型到逻辑时钟 76
3.2.2 逻辑时钟的缺点 77
3.3 向量时钟 79
3.4 混合逻辑时钟 81
3.5 Paxos共识协议 84
3.5.1 Paxos所解决问题的背景 85
3.5.2 Paxos中的角色 86
3.5.3 Basic Paxos共识协议 88
3.5.4 Paxos共识协议改进与扩展 90
3.6 Raft共识协议 97
3.6.1 Raft算法基础 98
3.6.2 Raft算法 100
3.6.3 Paxos与Raft的比较 104
第4章 分布式事务原理 109
4.1 概述 110
4.1.1 单机事务处理技术 110
4.1.2 分布式事务处理技术 114
4.2 基本的分布式事务并发访问控制机制 120
4.2.1 封锁并发访问控制算法 121
4.2.2 TO相关算法 122
4.2.3 CO算法 124
4.3 OCC技术 128
4.3.1 OCC算法的优势与不足 129
4.3.1 2 基本的OCC算法 131
4.3.2 3 改进的OCC算法 139
4.3.3 4 OCC与其他并发算法 147
4.3.4 5 分布式OCC算法 155
4.3.6 OCC扩展 160
4.4 MVCC技术 160
4.4.1 MVCC解决了什么样的问题 161
4.4.2 MVCC算法 162
4.4.3 Serializable Snapshot Isolation 165
4.4.4 Write-snapshot Isolation 170
4.4.5 MVCC实现示例 174
4.4.6 MVCC扩展 183
4.5 前沿的并发控制技术 184
4.5.1 动态调整时间戳算法 185
4.4.2 Data-driven算法 192
4.4.3 面向列的细粒度机制 196
4.5.4 基于硬件的改进 197
4.5.5 基于AI的改进 202
4.5.6 自适应算法 203
4.6 分布式提交技术 208
4.6.1 两阶段提交 208
4.6.2 三阶段提交 212
4.6.3 基于Paxos的提交 214
4.6.4 一阶段提交 216
4.7 可串行化发展历史 217
4.8 其他 222
4.9 小结 224
第二篇 分布式数据库架构篇 225
第5章 去中心化的分布式数据库架构 227
5.1 分布式存储架构 227
5.1.1数据分布 228
5.1.2数据管理 229
5.1.3多副本与数据存储 232
5.1.4存算分离 232
5.1.5多读与多写 237
5.2 分布式查询优化与并行执行架构 241
5.2.1查询优化 241
5.2.2MPP 242
5.2.3计算下/外推 244
5.3 高可用性架构 245
5.3.1 高可用衡量指标 245
5.3.2 高可用性分类 248
5.3.3 高可用事务 249
5.3.4 高可用架构 252
5.3 分布式事务架构 253
5.4.1 事务管理器在客户端、中间件、服务端 253
5.3.2去中心化的并发事务框架 256
5.4 可扩展性架构 259
5.5. 可扩展性是一种能力 260
5.5. 事务处理的可扩展性 261
5.5 强一致性 264
5.6 解耦 264
5.7 小结 267
第6章 新技术与分布式数据库架构 269
6.1 新硬件 269
6.2 智能数据库 271
6.2. 基本概念与认知 272
6.2. 智能事务调度组件 274
6.3 云雾计算与数据库 276
6.3.1云原生 276
6.3.2云数据库 278
6.3.3Serverless数据库 280
6.4 HTAP 282
6.4.1HTAP概念与HTAC架构 282
6.4.2行列混存 284
6.5 NewSQL与下一代数据库 285
6.5.1数据库技术简史 285
6.5.2下一代数据库 292
6.6 小结 294
第三篇 典型案例 294
第7章 Spanner深度探索 295
7.1 Spanner的架构 296
7.2 Spanner的事务处理模型 298
7.2.1 读操作的分类和意义 299
7.2.2 分布式一致性实现原理 300
7.2.3 写操作一致性的实现原理 302
7.2.4 Truetime事务处理机制的缺点 305
7.2.5 深入Spanner悲观机制 306
7.2.6 Spanner与MVCC 308
7.2.7 读副本数据 309
7.2.8 全局读事务的一致性 309
7.2.9 只读事务 310
7.3 Spanner与CAP 311
7.4 瞬时失效情形下的读操作 311
7.5 本章小结 312
第8章 Percolator事务处理模型 313
8.1 Percolator的架构 313
8.2 Percolator的事务处理 314
8.2.1 事务处理整体过程 314
8.2.2 数据项上存储的事务信息 315
8.2.3 事务提交过程 315
8.2.4 事务读数据过程 319
8.3 Percolator的事务处理示例 320
8.4 本章小结 321
第9章 CockroachDB深度探索 323
9.1 CockroachDB的架构 323
9.2 CockroachDB事务处理模型 325
9.2.1 事务处理相关的数据结构 326
9.2.2 事务处理的阶段 328
9.2.3 事务处理的整体过程 329
9.2.4 事务的并发冲突 331
9.2.5 事务自动终止 334
9.2.6 隔离级别 335
9.3 分布式一致性实现原理 335
9.4 本章小结 336
第10章 其他数据库 337
10.1 内存型数据库Hekaton事务处理机制 337
10.1.1 Hekaton的技术架构 337
10.1.2 Hekaton的事务管理 342
10.1.3 Hekaton的并发控制 348
10.2 文档型分布式MongoDB 350
10.2.1 MongoDB的架构 350
10.2.2 MongoDB的事务处理技术 351
10.3 列存分布式HBase 352
10.3.1 HBase的架构 352
10.3.2 HBase的事务处理技术 353
10.4 Greenplum 354
10.5 图、键值事务处理技术 357
10.5.1 图模型事务处理技术 357
10.5.2 键值、文档模型事务处理技术 358
10.6 深入讨论数据库架构 359
10.6.1 数据库的通用架构 359
10.6.2 事务型数据库的架构 361
10.6.3 主流分布式数据库的技术比较 365
10.7 小结 366



推荐

车牌查询
桂ICP备20004708号-3