第一章 ODMG对象模型 1
1.1 型的说明和实现 2
1.1.1 子型和行为继承 4
1.1.2 状态继承 6
1.1.3 外延 7
1.1.4 关键字 7
1.2 对象 7
1.2.1 对象建立 8
1.2.2 对象标识符 9
1.2.4 对象的生命周期 10
1.2.3 对象名字 10
1.2.5 原子对象 11
1.2.6 聚合对象 11
1.2.7 结构对象 19
1.3 字面量 25
1.3.1 字面量的类型 25
1.3.1 字面量的拷贝 28
1.3.3 字面量的比较 28
1.3.4 字面量的等价性 28
1.4 内部定义的类型层次 29
1.5.1 属性 30
1.5 特征-建模状态 30
1.5.2 联系 31
1.6 操作-建模行为 35
1.7 封锁与并发控制 36
1.7.1 封锁类型 36
1.7.2 隐式封锁和显式封锁 37
1.7.3 封锁的释放 37
1.8 事务模型 37
1.8.1 分布式事务 38
1.8.2 事务和进程 38
1.8.3 事务操作 39
1.9 数据库操作 41
第二章 对象查询语言OQL 44
2.1 SQL语言与OQL语言 44
2.2 查询的输入与结果 47
2.3 处理对象标识符 48
2.4 查询数据库中的对象 48
2.5 路径表达式 49
2.6 谓词 50
2.7 连接 50
2.8 空值 51
2.9 方法调用 52
2.10 多态性 53
2.10.1 迟后联编 53
2.10.2 显式类型指标 53
2.11 操作符复合 54
2.12 语言定义 56
2.12.1 查询 57
2.12.2 命名查询定义 57
2.12.3 名字空间 58
2.12.4 基本表达式 59
2.12.5 构造表达式 60
2.12.6 原子类型表达式 62
2.12.7 对象表达式 65
2.12.8 集合表达式 67
2.12.9 选择表达式 68
2.12.10 索引聚合表达式 75
2.12.11 二元集合运算表达式 77
2.12.12 转换表达式 78
2.12.13 函数和静态方法调用 80
2.12.15 作用域规则 81
2.12.14 特殊函数 81
2.13 C++OQL 83
2.13.1 类 Collectioin上的查询方法 83
2.13.2 d_oql_execute函数 84
第三章 分布式对象数据库系统FISH 88
3.1 系统概述 88
3.1.1 对象服务器 89
3.1.2 页面服务器 89
3.1.3 文件服务器 90
3.1.4 FISH系统的结构 90
3.2 系统结构 92
3.3 主要实现技术 93
3.3.1 持久对象管理 93
3.3.2 共享内存管理 94
3.3.3 透明锁和异常处理 96
3.3.4 远程过程调用和通信管理 97
3.3.5 多线程调度 98
第四章 元数据管理与C++ODL预处理器 100
4.1 元数据管理 100
4.1.1 模式访问类层次 101
4.1.2 字典结构 103
4.1.3 元数据C++访问接口及结构设计 105
4.1.4 元数据的存储 121
4.2 C++ODL预处理器的设计与实现 122
4.2.1 ODL 122
4.2.2 C++ODL 123
4.2.3 C++ODL编译过程 124
4.2.4 C++ODL处理器的结构 125
4.2.5 C++ODL处理器的实现 126
4.2.6 C++ODL的BNF语法 128
第五章 对象查询处理与OQL编译器 131
5.1.1 词法及语法分析概述 134
5.1 词法及语法分析 134
5.1.2 OQL词法分析 135
5.1.3 OQL语法分析器 136
5.2 语义及类型检查 139
5.2.1 语义及类型检查的功能 139
5.2.2 类型兼容性 141
5.2.3 标识符表 142
5.2.4 语义及类型检查流程 144
5.2.5 语义及类型检查规则 144
5.2.6 语义及类型检查功能模块 146
5.3.1 查询转换概述 147
5.3.2 查询树 147
5.3 查询转换 147
5.3.3 查询转换算法 148
5.1 查询优化 150
5.4.1 查询优化概述 150
5.4.2 嵌套查询非嵌套化 152
5.4.3 谓词化简与规范化 156
5.4.4 查询分解 157
5.4.6 连接优化 158
5.4.5 谓词下移 158
5.5 查询代码生成 180
5.5.1 对象代数操作符 181
5.5.2 代码生成过程 181
5.5.3 代码生成算法 183
5.6 编译器总体控制 185
5.6.1 编译器总体控制结构 185
5.6.2 命名查询的处理 187
第六章 并行处理及其算法 189
6.1.1 分片技术 190
6.1.2 分片技术的比较 190
6.1 I/O并行性 190
6.1.3 处理倾斜问题 192
6.2 查询间并行处理 193
6.3 查询内并行处理 195
6.4 操作内并行处理 196
6.4.1 并行排序 197
6.4.2 并行连接 198
6.4.3 其他关系操作的并行处理 213
6.4.4 并行路径表达式算法 214
6.4.5 并行操作的代价估算 230
6.5 操作间并行处理 232
6.5.1 管道并行处理 232
6.5.2 独立并行处理 233
6.5.3 查询优化 233
第七章 系统与算法性能测试 235
7.1 面向复杂工程应用的O07测试 235
7.1.1 007测试标准的发展与现状 235
7.1.2 基于ODMG的设计 238
7.1.3 在FISH上的实现和结果分析 240
7.1.4 测试操作的实现 241
7.1.5 测试结果与分析 245
7.2 多用户007测试 250
7.2.1 多用户007测试综述 250
7.2.2 测试配置 253
7.2.3 性能测试 254
7.3 基于在线事务处理的TCP-C测试 255
7.3.1 TCP-C测试标准的发展与现状 255
7.3.2 TCP-C数据库与TPC事务 258
7.3.3 FISH的TCP-C测试的设计 261
7.3.4 在FISH上的实现与结果分析 262
7.4.2 测试环境 274
7.4.1 测试数据库 274
7.4 基于DSVM的并行哈希连接算法的性能测试 274
7.4.3 测试结果和性能分析 275
7.4.4 性能比较 280
7.5 并行路径表达式算法的性能测试与分析 282
7.5.1 测试环境和测试数据库设计 282
7.5.2 性能加速比测试 283
7.5.3 规模可扩展性能分析 285
7.5.4 讨论 286
7.5.5 右深Zigzag 树与右深树调度策略的性能 比较 287
参考文献 289