书籍详情
MongoDB核心原理与实践
作者:郭远威
出版社:电子工业出版社
出版时间:2022-03-01
ISBN:9787121430008
定价:¥105.00
购买这本书可以去
内容简介
本书内容按照循序渐进、由浅入深的原则组织编写,共分为4篇,包括MongoDB基础知识、深入理解MongoDB、MongoDB运维管理及MongoDB应用实践。第1篇主要介绍MongoDB的安装部署与应用场景、CRUD操作、索引、聚集操作等内容,方便读者快速动手学习实践;第2篇系统且全面地介绍了底层核心存储引擎,深入剖析了MongoDB复制集和分片集群的运行机制,以及分布式文件存储GridFS,为读者优化数据库性能和定位并解决故障问题打下坚实基础;第3篇主要介绍MongoDB的备份/恢复、系统监控、权限控制等内容,便于读者开展日常数据库管理和运维等工作;第4篇主要介绍基于MongoDB的应用开发和典型案例,读者可以直接参考其中的核心代码和应用实践,将其运用到自己的实际项目中。
作者简介
郭远威,资深大数据架构师,阿里云云计算ACP专家、MongoDB中文社区联席主席&专栏作者,热爱开源技术,对新技术保持高度关注。具有多年与数据相关产品研发经验,曾带领团队开发云存储平台、内存数据库等产品;为Vodafone、中国移动、Afrimax等海内外三十多个各级电信运营商的IT系统提供过咨询、规划、交付服务。著有《大数据存储:MongoDB实战指南》一书。
目录
目录
第1篇 MongoDB基础知识
第1章 初识MongoDB 2
1.1 MongoDB的发展与现状 2
1.2 MongoDB与Hadoop比较 5
1.3 关键特性 8
1.4 安装部署 10
1.4.1 在Windows中安装MongoDB 11
1.4.2 在Linux中安装MongoDB 11
1.4.3 在Docker中安装MongoDB 13
1.5 几个重要的可执行文件 16
1.6 适合的业务 19
1.6.1 高并发Web应用 19
1.6.2 实时计算类的应用 20
1.6.3 数据中台 20
1.6.4 游戏类应用 21
1.6.5 日志分析类系统 22
1.6.6 AI应用场景 22
1.7 小结 24
第2章 CRUD操作 25
2.1 查询操作 25
2.1.1 查询条件 27
2.1.2 比较操作符 28
2.1.3 逻辑操作符 30
2.1.4 字段名匹配 31
2.1.5 文本查询 32
2.1.6 正则表达式 34
2.1.7 嵌套文档查询 34
2.1.8 数组查询 35
2.1.9 地理位置查询 38
2.1.10 查询投射与排序 40
2.2 插入操作 41
2.2.1 insertOne 41
2.2.2 insertMany 42
2.2.3 insert 44
2.3 修改操作 45
2.3.1 updateOne 45
2.3.2 updateMany 48
2.3.3 replaceOne 52
2.3.4 update 53
2.4 删除操作 55
2.4.1 deleteOne 55
2.4.2 deleteMany 55
2.5 批量写操作 56
2.6 小结 58
第3章 索引 59
3.1 索引原理 59
3.2 创建索引 61
3.3 单个字段的索引 61
3.4 多字段的复合索引 63
3.5 数组的多键索引 65
3.6 查询计划分析 66
3.7 索引覆盖查询 70
3.8 全文索引 71
3.9 地理位置索引 72
3.10 Hash索引 73
3.11 删除索引 73
3.12 TTL索引 74
3.13 小结 76
第4章 聚集操作 77
4.1 单个集合中的基础聚集函数 77
4.1.1 count()函数 77
4.1.2 estimatedDocumentCount()函数 79
4.1.3 countDocuments()函数 80
4.1.4 distinct()函数 80
4.2 管道聚集框架 82
4.2.1 $group分组 84
4.2.2 $addFields添加新字段 85
4.2.3 $lookup关联查询 86
4.2.4 $project投射 88
4.2.5 $out将结果输出到新集合 88
4.2.6 MongoDB聚集操作语句与SQL语句的比较 89
4.3 MapReduce编程 89
4.4 小结 92
第2篇 深入理解MongoDB
第5章 WiredTiger存储引擎 94
5.1 存储引擎的数据结构 95
5.1.1 典型的B-Tree数据结构 95
5.1.2 磁盘中的基础数据结构 96
5.1.3 内存中的基础数据结构 97
5.1.4 page的其他数据结构 99
5.2 page eviction页面淘汰 100
5.3 page reconcile将数据写入磁盘 101
5.4 Cache的分配规则 102
5.5 page的生命周期、状态、大小 103
5.5.1 page的生命周期 104
5.5.2 page的各种状态 105
5.5.3 page的大小参数 105
5.6 checkpoint的原理 107
5.6.1 checkpoint包含的关键信息 108
5.6.2 checkpoint执行流程与触发时机 109
5.7 wt工具和磁盘中的元数据文件 111
5.7.1 wt工具 111
5.7.2 元数据相关文件 112
5.8 事务 115
5.8.1 事务的基本原理 115
5.8.2 与事务相关的数据结构 118
5.8.3 事务的snapshot隔离 119
5.8.4 MVCC并发控制机制 120
5.8.5 事务日志(Journal) 122
5.9 一个完整的写操作流程 123
5.10 小结 124
第6章 复制集 125
6.1 复制集功能概述 125
6.2 复制集部署架构 126
6.2.1 典型的3节点复制集部署架构 126
6.2.2 多数据中心复制集部署架构 128
6.3 完整部署一个复制集 129
6.3.1 创建每个节点上存储数据的目录 129
6.3.2 创建每个节点的日志文件 130
6.3.3 创建每个节点启动时的配置文件 130
6.3.4 启动每个节点上的mongod实例 131
6.3.5 初始化复制集 131
6.3.6 将其他节点添加到复制集 132
6.3.7 观察复制集的运行状态 132
6.4 复制集的维护 137
6.4.1 删除节点 137
6.4.2 添加Secondary节点 138
6.4.3 添加Arbiter节点 140
6.4.4 复制集的配置信息 140
6.4.5 重新配置复制集 143
6.4.6 故障转移Failover分析 145
6.5 复制集选举Primary节点的机制 149
6.5.1 复制集中的投票节点和非投票节点 149
6.5.2 选举触发条件和选举为Primary节点的因素 150
6.5.3 复制集能正常完成选举的条件 152
6.6 基于Oplog的数据同步机制 154
6.6.1 Oplog集合包含的内容分析 155
6.6.2 Oplog的默认大小及性能影响 156
6.6.3 Oplog集合大小的修改 158
6.6.4 使用initial sync解决Oplog严重落后的问题 159
6.7 写关注(writeConcern)模式 162
6.7.1 默认的“写关注”场景 162
6.7.2 配置写关注 162
6.8 读参考(readPreference)模式 165
6.8.1 读参考常见的应用场景 166
6.8.2 读参考的几种模式分析 167
6.8.3 设置tags标签使读请求指向特定节点 168
6.8.4 如何从多个匹配的节点中选择一个目标 169
6.9 读关注(readConcern)模式 171
6.9.1 Primary节点切换可能导致数据回滚 171
6.9.2 设置读关注避免读到的数据被回滚 172
6.10 Change Streams实现数据实时同步 176
6.10.1 实现原理 176
6.10.2 实时数据流的格式 177
6.10.3 打开实时数据流 178
6.10.4 控制实时数据流的输出 179
6.11 小结 181
第7章 分片集群 182
7.1 分片集群的部署架构 182
7.2 手动部署一个分片集群 184
7.2.1 分片shard1配置 184
7.2.2 分片shard2配置 186
7.2.3 config服务器配置 187
7.2.4 mongos路由配置 188
7.2.5 启动分片集群 189
7.2.6 配置集合使其分片 192
7.2.7 正确关闭和重启集群 194
7.3 片键及选择策略 195
7.3.1 片键选择策略 197
7.3.2 基于Hash分片 200
7.3.3 基于范围的分片 203
7.4 chunk 204
7.4.1 chunk的分割 204
7.4.2 chunk大小的修改 209
7.5 Balancer 210
7.5.1 一个完整的chunk迁移过程 212
7.5.2 Balancer的管理 214
7.5.3 存储元数据的config数据库 217
7.6 小结 220
第8章 分布式文件存储GridFS 221
8.1 什么是GridFS 222
8.2 使用GridFS的场景 226
8.3 GridFS常用操作 227
8.3.1 上传文件 228
8.3.2 下载文件 229
8.3.3 删除文件 230
8.3.4 查询文件 230
8.4 小结 231
第3篇 MongoDB运维管理
第9章 管理与监控 234
9.1 数据导入/导出 234
9.1.1 导出工具mongoexport 235
9.1.2 导入工具mongoimport 237
9.2 数据备份/恢复 240
9.2.1 备份工具mongodump 241
9.2.2 恢复工具mongorestore 243
9.3 命令行工具监控管理 245
9.3.1 mongotop 246
9.3.2 mongostat 247
9.3.3 db.stats() 249
9.3.4 db.serverStatus() 251
9.4 可视化数据库操作 256
9.4.1 Compass工具的安装与连接 256
9.4.2 可视化性能监控 257
9.4.3 可视化数据库操作 258
9.4.4 可视化聚集操作 262
9.4.5 内嵌mongoshell开发环境 263
9.5 小结 264
第10章 权限控制 265
10.1 基于角色与权限控制原理 265
10.2 启动角色权限控制功能 267
10.3 MongoDB默认提供的角色 271
10.3.1 针对特定数据库中的读/写角色 271
10.3.2 针对特定数据库中的管理角色 272
10.3.3 针对所有数据库中的角色 272
10.3.4 超级用户角色 273
10.4 用户管理 274
10.4.1 查看数据库中的用户 274
10.4.2 创建新用户 275
10.4.3 修改用户的角色 276
10.4.4 删除用户 276
10.5 角色管理 277
10.5.1 查看数据库中的角色 278
10.5.2 查看角色对应的权限信息 278
10.5.3 创建一个自定义角色 280
10.5.4 验证自定义角色的权限 282
10.5.5 删除自定义的角色 283
10.6 小结 283
第4篇 MongoDB应用实践
第11章 MongoDB应用开发 286
11.1 基于Python的开发 286
11.1.1 单实例中的CRUD操作 287
11.1.2 复制集中的操作 290
11.1.3 分片集群中的操作 291
11.1.4 GridFS分布式文件操作 292
11.2 基于.net core的开发 294
11.2.1 CRUD操作 296
11.2.2 GridFS分布式文件操作 298
11.3 基于Java和Spring Boot框架的开发 301
11.3.1 开发框架介绍 301
11.3.2 CRUD操作 304
11.4 小结 306
第12章 基于MongoDB的数据中台案例 308
12.1 现代企业数据架构及痛点 308
12.2 什么是数据中台 309
12.3 数据中台的价值 312
12.4 数据中台的技术模块 313
12.5 基于MongoDB的数据中台方案 320
12.6 数据中台方案选型 327
12.7 小结 328
第13章 百万级高并发集群性能提高案例 329
13.1 背景 329
13.2 软件优化 330
13.2.1 业务层面优化 330
13.2.2 MongoDB线程模型优化 331
13.2.3 WiredTiger存储引擎优化 333
13.3 解决服务器系统磁盘I/O问题 342
13.3.1 服务器I/O硬件问题背景 342
13.3.2 服务器I/O硬件问题解决后性能对比 343
13.4 主节点硬件升级后续优化 346
13.4.1 readConcern配置优化 346
13.4.2 替换从节点服务器为升级后的高I/O服务器 350
13.4.3 结论 351
13.4.4 继续优化调整存储引起参数 352
13.5 小结 353
第14章 基于MongoDB的金融系统案例 355
14.1 项目背景 355
14.2 面临的主要挑战 355
14.3 技术选型 356
14.4 方案
第1篇 MongoDB基础知识
第1章 初识MongoDB 2
1.1 MongoDB的发展与现状 2
1.2 MongoDB与Hadoop比较 5
1.3 关键特性 8
1.4 安装部署 10
1.4.1 在Windows中安装MongoDB 11
1.4.2 在Linux中安装MongoDB 11
1.4.3 在Docker中安装MongoDB 13
1.5 几个重要的可执行文件 16
1.6 适合的业务 19
1.6.1 高并发Web应用 19
1.6.2 实时计算类的应用 20
1.6.3 数据中台 20
1.6.4 游戏类应用 21
1.6.5 日志分析类系统 22
1.6.6 AI应用场景 22
1.7 小结 24
第2章 CRUD操作 25
2.1 查询操作 25
2.1.1 查询条件 27
2.1.2 比较操作符 28
2.1.3 逻辑操作符 30
2.1.4 字段名匹配 31
2.1.5 文本查询 32
2.1.6 正则表达式 34
2.1.7 嵌套文档查询 34
2.1.8 数组查询 35
2.1.9 地理位置查询 38
2.1.10 查询投射与排序 40
2.2 插入操作 41
2.2.1 insertOne 41
2.2.2 insertMany 42
2.2.3 insert 44
2.3 修改操作 45
2.3.1 updateOne 45
2.3.2 updateMany 48
2.3.3 replaceOne 52
2.3.4 update 53
2.4 删除操作 55
2.4.1 deleteOne 55
2.4.2 deleteMany 55
2.5 批量写操作 56
2.6 小结 58
第3章 索引 59
3.1 索引原理 59
3.2 创建索引 61
3.3 单个字段的索引 61
3.4 多字段的复合索引 63
3.5 数组的多键索引 65
3.6 查询计划分析 66
3.7 索引覆盖查询 70
3.8 全文索引 71
3.9 地理位置索引 72
3.10 Hash索引 73
3.11 删除索引 73
3.12 TTL索引 74
3.13 小结 76
第4章 聚集操作 77
4.1 单个集合中的基础聚集函数 77
4.1.1 count()函数 77
4.1.2 estimatedDocumentCount()函数 79
4.1.3 countDocuments()函数 80
4.1.4 distinct()函数 80
4.2 管道聚集框架 82
4.2.1 $group分组 84
4.2.2 $addFields添加新字段 85
4.2.3 $lookup关联查询 86
4.2.4 $project投射 88
4.2.5 $out将结果输出到新集合 88
4.2.6 MongoDB聚集操作语句与SQL语句的比较 89
4.3 MapReduce编程 89
4.4 小结 92
第2篇 深入理解MongoDB
第5章 WiredTiger存储引擎 94
5.1 存储引擎的数据结构 95
5.1.1 典型的B-Tree数据结构 95
5.1.2 磁盘中的基础数据结构 96
5.1.3 内存中的基础数据结构 97
5.1.4 page的其他数据结构 99
5.2 page eviction页面淘汰 100
5.3 page reconcile将数据写入磁盘 101
5.4 Cache的分配规则 102
5.5 page的生命周期、状态、大小 103
5.5.1 page的生命周期 104
5.5.2 page的各种状态 105
5.5.3 page的大小参数 105
5.6 checkpoint的原理 107
5.6.1 checkpoint包含的关键信息 108
5.6.2 checkpoint执行流程与触发时机 109
5.7 wt工具和磁盘中的元数据文件 111
5.7.1 wt工具 111
5.7.2 元数据相关文件 112
5.8 事务 115
5.8.1 事务的基本原理 115
5.8.2 与事务相关的数据结构 118
5.8.3 事务的snapshot隔离 119
5.8.4 MVCC并发控制机制 120
5.8.5 事务日志(Journal) 122
5.9 一个完整的写操作流程 123
5.10 小结 124
第6章 复制集 125
6.1 复制集功能概述 125
6.2 复制集部署架构 126
6.2.1 典型的3节点复制集部署架构 126
6.2.2 多数据中心复制集部署架构 128
6.3 完整部署一个复制集 129
6.3.1 创建每个节点上存储数据的目录 129
6.3.2 创建每个节点的日志文件 130
6.3.3 创建每个节点启动时的配置文件 130
6.3.4 启动每个节点上的mongod实例 131
6.3.5 初始化复制集 131
6.3.6 将其他节点添加到复制集 132
6.3.7 观察复制集的运行状态 132
6.4 复制集的维护 137
6.4.1 删除节点 137
6.4.2 添加Secondary节点 138
6.4.3 添加Arbiter节点 140
6.4.4 复制集的配置信息 140
6.4.5 重新配置复制集 143
6.4.6 故障转移Failover分析 145
6.5 复制集选举Primary节点的机制 149
6.5.1 复制集中的投票节点和非投票节点 149
6.5.2 选举触发条件和选举为Primary节点的因素 150
6.5.3 复制集能正常完成选举的条件 152
6.6 基于Oplog的数据同步机制 154
6.6.1 Oplog集合包含的内容分析 155
6.6.2 Oplog的默认大小及性能影响 156
6.6.3 Oplog集合大小的修改 158
6.6.4 使用initial sync解决Oplog严重落后的问题 159
6.7 写关注(writeConcern)模式 162
6.7.1 默认的“写关注”场景 162
6.7.2 配置写关注 162
6.8 读参考(readPreference)模式 165
6.8.1 读参考常见的应用场景 166
6.8.2 读参考的几种模式分析 167
6.8.3 设置tags标签使读请求指向特定节点 168
6.8.4 如何从多个匹配的节点中选择一个目标 169
6.9 读关注(readConcern)模式 171
6.9.1 Primary节点切换可能导致数据回滚 171
6.9.2 设置读关注避免读到的数据被回滚 172
6.10 Change Streams实现数据实时同步 176
6.10.1 实现原理 176
6.10.2 实时数据流的格式 177
6.10.3 打开实时数据流 178
6.10.4 控制实时数据流的输出 179
6.11 小结 181
第7章 分片集群 182
7.1 分片集群的部署架构 182
7.2 手动部署一个分片集群 184
7.2.1 分片shard1配置 184
7.2.2 分片shard2配置 186
7.2.3 config服务器配置 187
7.2.4 mongos路由配置 188
7.2.5 启动分片集群 189
7.2.6 配置集合使其分片 192
7.2.7 正确关闭和重启集群 194
7.3 片键及选择策略 195
7.3.1 片键选择策略 197
7.3.2 基于Hash分片 200
7.3.3 基于范围的分片 203
7.4 chunk 204
7.4.1 chunk的分割 204
7.4.2 chunk大小的修改 209
7.5 Balancer 210
7.5.1 一个完整的chunk迁移过程 212
7.5.2 Balancer的管理 214
7.5.3 存储元数据的config数据库 217
7.6 小结 220
第8章 分布式文件存储GridFS 221
8.1 什么是GridFS 222
8.2 使用GridFS的场景 226
8.3 GridFS常用操作 227
8.3.1 上传文件 228
8.3.2 下载文件 229
8.3.3 删除文件 230
8.3.4 查询文件 230
8.4 小结 231
第3篇 MongoDB运维管理
第9章 管理与监控 234
9.1 数据导入/导出 234
9.1.1 导出工具mongoexport 235
9.1.2 导入工具mongoimport 237
9.2 数据备份/恢复 240
9.2.1 备份工具mongodump 241
9.2.2 恢复工具mongorestore 243
9.3 命令行工具监控管理 245
9.3.1 mongotop 246
9.3.2 mongostat 247
9.3.3 db.stats() 249
9.3.4 db.serverStatus() 251
9.4 可视化数据库操作 256
9.4.1 Compass工具的安装与连接 256
9.4.2 可视化性能监控 257
9.4.3 可视化数据库操作 258
9.4.4 可视化聚集操作 262
9.4.5 内嵌mongoshell开发环境 263
9.5 小结 264
第10章 权限控制 265
10.1 基于角色与权限控制原理 265
10.2 启动角色权限控制功能 267
10.3 MongoDB默认提供的角色 271
10.3.1 针对特定数据库中的读/写角色 271
10.3.2 针对特定数据库中的管理角色 272
10.3.3 针对所有数据库中的角色 272
10.3.4 超级用户角色 273
10.4 用户管理 274
10.4.1 查看数据库中的用户 274
10.4.2 创建新用户 275
10.4.3 修改用户的角色 276
10.4.4 删除用户 276
10.5 角色管理 277
10.5.1 查看数据库中的角色 278
10.5.2 查看角色对应的权限信息 278
10.5.3 创建一个自定义角色 280
10.5.4 验证自定义角色的权限 282
10.5.5 删除自定义的角色 283
10.6 小结 283
第4篇 MongoDB应用实践
第11章 MongoDB应用开发 286
11.1 基于Python的开发 286
11.1.1 单实例中的CRUD操作 287
11.1.2 复制集中的操作 290
11.1.3 分片集群中的操作 291
11.1.4 GridFS分布式文件操作 292
11.2 基于.net core的开发 294
11.2.1 CRUD操作 296
11.2.2 GridFS分布式文件操作 298
11.3 基于Java和Spring Boot框架的开发 301
11.3.1 开发框架介绍 301
11.3.2 CRUD操作 304
11.4 小结 306
第12章 基于MongoDB的数据中台案例 308
12.1 现代企业数据架构及痛点 308
12.2 什么是数据中台 309
12.3 数据中台的价值 312
12.4 数据中台的技术模块 313
12.5 基于MongoDB的数据中台方案 320
12.6 数据中台方案选型 327
12.7 小结 328
第13章 百万级高并发集群性能提高案例 329
13.1 背景 329
13.2 软件优化 330
13.2.1 业务层面优化 330
13.2.2 MongoDB线程模型优化 331
13.2.3 WiredTiger存储引擎优化 333
13.3 解决服务器系统磁盘I/O问题 342
13.3.1 服务器I/O硬件问题背景 342
13.3.2 服务器I/O硬件问题解决后性能对比 343
13.4 主节点硬件升级后续优化 346
13.4.1 readConcern配置优化 346
13.4.2 替换从节点服务器为升级后的高I/O服务器 350
13.4.3 结论 351
13.4.4 继续优化调整存储引起参数 352
13.5 小结 353
第14章 基于MongoDB的金融系统案例 355
14.1 项目背景 355
14.2 面临的主要挑战 355
14.3 技术选型 356
14.4 方案
猜您喜欢