
基本信息出版社:人民邮电出版社
页码:379 页
出版日期:2008年07月
ISBN:7115179352/9787115179357
条形码:9787115179357
版本:第1版
装帧:平装
开本:16
正文语种:中文
丛书名:图灵程序设计丛书
内容简介 本书是一部关于SQL Server 2005 高级开发技术的权威著作,提供了详尽、全面的技术讨论,并给出了详细的应用实例。书中前4 章着重介绍SQL Server 所涉及的软件开发方法学、测试、异常处理和安全;第5 章至第7 章深入研究SQL Server 独具的高级特性,主要介绍加密、SQLCLR 和动态SQL;第8章至第11章从数据库体系结构的角度分析问题,深入研究具体的设计和实现问题,包括应用程序并发、空间数据、时态数据和图,这是本书最为复杂的内容,也是最有实际意义的内容。本书可以作为软件开发人员,特别是数据库设计人员的参考手册,也可供计算机专业、信息系统专业的高年级本科生、研究生作为数据库课程的教材或者参考书。
目录
第1章 数据库领域的软件开发方法学 1
1.1 架构回顾 1
1.1.1 耦合、内聚和封装 1
1.1.2 接口 4
1.2 核心问题:集成数据库和面向对象系统 6
1.2.1 该何去何从 7
1.2.2 对象—关系失配 10
1.3 ORM:一个问题多多的解决方案 14
1.4 把数据库操作设计为API 15
1.5 全面权衡 16
1.5.1 可测试性 16
1.5.2 可维护性 16
1.5.3 安全性 17
1.5.4 性能 17
1.5.5 步履蹒跚的远期功能 18
1.6 小结 18
第2章 数据库例程测试 19
2.1 黑盒测试与白盒测试简介 19
2.1.1 单元测试和功能测试 20
2.1.2 单元测试框架 22
2.1.3 回归测试的重要性 25
2.2 实现数据库测试过程和测试例程的指导准则 25
2.2.1 为什么说软件测试很重要 26
2.2.2 哪种测试重要 26
2.2.3 需要进行多少测试 26
2.2.4 管理层是否愿意接受软件测试 27
2.3 性能测试和数据库系统事件探查 28
2.3.1 获取基准度量 28
2.3.2 使用跟踪器及事件探查器进行查看 29
2.3.3 评估性能计数器 31
2.3.4 宏观分析 32
2.3.5 粒度分析 32
2.3.6 修正问题:仅仅关注明显的错误是否已经足够 33
2.4 SQLQueryStress性能测试工具介绍 34
2.5 小结 37
第3章 错误和异常 38
3.1 异常和错误 38
3.2 SQL Server中异常的工作原理 39
3.2.1 语句级异常 39
3.2.2 批处理程序级异常 40
3.2.3 语法分析和作用域解析异常 41
3.2.4 连接和服务器级异常 42
3.2.5 XACT_ABORT设置 42
3.2.6 分析错误信息 43
3.2.7 SQL Server的RAISERROE函数 45
3.2.8 跟踪监控异常事件 49
3.3 异常处理 49
3.3.1 为什么要在T-SQL中处理异常 50
3.3.2 使用@@ERROR“处理”异常 50
3.3.3 SQL Server的TRY/CATCH语法 51
3.4 事务与异常 56
3.4.1 事务退出的神话 56
3.4.2 XACT_ABORT:神话(半)成真 57
3.4.3 TRY/CATCH和被诅咒事务 59
3.5 小结 59
第4章 特权与授权 61
4.1 最低特权原则 61
4.1.1 在SQL Server中创建代理 62
4.1.2 层级数据安全:洋葱模型 63
4.2 使用Schema组织数据 64
4.3 使用EXECUTE AS实现基本模拟 66
4.4 所有权链 68
4.5 非链式特权提升 69
4.5.1 存储过程与EXECUTE AS 70
4.5.2 使用证书对存储过程进行签名 71
4.6 小结 75
第5章 加密 76
5.1 要保护什么 77
5.2 加密术语:我们需要知道的部分 78
5.3 SQL Server 2005加密密钥体系 79
5.3.1 服务主密钥 79
5.3.2 数据库主密钥 80
5.4 SQL Server 2005数据保护 81
5.4.1 HashBytes() 82
5.4.2 非对称密钥加密和证书加密 82
5.4.3 对称密钥加密 84
5.4.4 EncryptByPassphrase 91
5.5 隔离数据与DBA 92
5.6 性能优化设计 93
5.6.1 设计解决方案、定义问题 94
5.6.2 搜索加密数据 97
5.7 小结 110
第6章 SQLCLR:架构和设计注意事项 111
6.1 填充SQL/CLR鸿沟:SqlTypes库 111
6.2 包装代码以提高跨层重用性 112
6.3 SQLCLR的安全性特征和可靠性特征 114
6.3.1 代码安全性需求 117
6.3.2 通过程序集引用有选择地提升特权 118
6.3.3 授予交叉程序集特权 124
6.4 利用SQLCLR加强Service Broker可扩展性功能 126
6.5 扩展用户自定义聚合 136
6.6 小结 141
第7章 动态T-SQL 142
7.1 动态T-SQL与ad hoc T-SQL 142
7.2 为什么要使用动态SQL 144
7.2.1 编译与参数化 145
7.2.2 自动参数化 146
7.2.3 应用程序级参数化 148
7.2.4 参数化与高速缓存的性能暗示 149
7.3 支持可选参数 151
7.3.1 通过静态T-SQL实现可选参数 151
7.3.2 实现动态化:使用EXECUTE 157
7.3.3 SQL注入 162
7.3.4 sp_executesql:一个更好的EXECUTE 164
7.4 动态SQL在安全方面的考虑 172
7.4.1 被引用对象的权限 172
7.4.2 接口规则 172
7.5 小结 175
第8章 应用程序并发系统的设计 176
8.1 从业务角度观察:进程产生冲突时会发生什么情况 176
8.1.1 SQL Server隔离级别概述 178
8.1.2 并发控制与SQL Server提供的隔离级别 182
8.2 做最坏的打算:悲观的并发 183
8.2.1 在写入过程中使用悲观锁 188
8.2.2 应用程序锁:对悲观并发控制机制进行泛化 189
8.3 希望最好的情况发生:乐观的并发控制 199
8.4 包容冲突:多值并发控制 203
8.5 通过排队提高可扩展性 206
8.6 小结 212
第9章 空间数据处理 213
9.1 用纬度和经度表示地球空间数据 213
9.1.1 设置示例数据 214
9.1.2 计算两点之间的距离 216
9.1.3 从一个位置点移动到另一个位置点 220
9.1.4 邻近搜索 224
9.1.5 边界框 230
9.1.6 查找距离最近的邻近点 240
9.1.7 动态边界框 243
9.1.8 结论 252
9.2 使用分层三角形网格表示地球空间数据 252
9.2.1 HTM的简化描述 253
9.2.2 实现HtmID 256
9.2.3 Spatial数据库提供的函数 257
9.2.4 结论 268
9.3 其他类型的空间数据 268
9.3.1 三维数据 268
9.3.2 天文数据 269
9.3.3 虚拟空间 269
9.3.4 将区域表达为多边形 269
9.4 小结 270
第10章 时态数据处理 271
10.1 表达的不仅仅是时间 271
10.2 SQL Server提供的日期/时间数据类型 272
10.2.1 日期输入格式 272
10.2.2 格式化输出日期 275
10.2.3 高效查询日期/时间列 276
10.2.4 日期/时间计算 279
10.3 使用日历表定义周期 284
10.4 设计时态数据存储方案及查询时态数据 292
10.4.1 处理时区 293
10.4.2 处理时间区间 299
10.4.3 为持续时间建立模型 319
10.4.4 管理双时态数据 320
10.5 小结 323
第11章 树、层次结构和图 324
11.1 术语:万物皆为图 324
11.2 基础知识:邻接表和图 325
11.2.1 为边加入约束 326
11.2.2 针对图的基本查询:给定一个结点,这个结点与其他哪些结点相连 328
11.2.3 遍历图 329
11.3 邻接表的层次结构 338
11.3.1 查询邻接表层次结构:基础知识 339
11.3.2 查找直接后代结点 339
11.3.3 在层次结构中向下级层次遍历 341
11.3.4 在层次结构中向上级层次遍历 349
11.3.5 插入新结点并重新定位子树 350
11.3.6 删除已有结点 351
11.3.7 为层次结构加入约束 351
11.4 持久保存具体化路径 354
11.4.1 查找下级结点 355
11.4.2 在层次结构中向上级层次导航 356
11.4.3 对具体化路径解决方案进行优化 357
11.4.4 插入结点 362
11.4.5 重新定位子树 363
11.4.6 删除结点 365
11.4.7 为层次结构加入约束 365
11.5 嵌套集模型 366
11.5.1 查找下级结点 370
11.5.2 在层次结构中向上级层次导航 371
11.5.3 插入结点 371
11.5.4 重新定位子树 373
11.5.5 删除结点 377
11.5.6 为层次结构加入约束 378
11.6 小结 379
……