官方正版 MongoDB核心原理与实践 WiredTiger存储引擎实践案例 MongoDB安装部署驱动应用开发运维管理 存储引擎事务书籍 郭远威
¥75.60
运费: | 免运费 |
商品详情
书名:MongoDB核心原理与实践
定价:105.0
ISBN:9787121430008
作者:郭远威
版次:第1版
出版时间:2022-03
内容提要:
本书主要包括MongoDB安装部署、增删改查、索引、聚集框架等基础知识;WiredTiger存储引擎、事务、复制集、分片集群等高阶知识;MongoDB的导入导出、备份恢复、性能监控、权限控制等运维管理知识;MongoDB的驱动、应用开发、来自中文社区的精选案例与问答等一线实践知识等。本书在满足现实中的数据库管理及应用需求的基础上,重点突出WiredTiger存储引擎和实践案例的讲解。
作者简介:
郭远威曾为华为前大数据迁移工程师,目前是亚信科技资深大数据顾问,在数据存储,特别是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 方案介绍 356
14.5 技术创新 358
14.6 技术特点 359
14.7 运营情况 360
14.8 项目成效 360
14.9 小结 361
第15章 云原生MongoDB部署案例 363
15.1 部署环境准备 363
15.2 Docker安装 364
15.3 Kubernetes组件安装 365
15.4 集群Master节点初始化 366
15.5 将Work节点添加到集群 369
15.6 分布式网络文件系统安装 369
15.7 PV、PVC、Deployment配置 372
15.8 小结 374
第16章 常见问题分析 375
16.1 集合与关系型数据库表的区别 375
16.2 是否支持事务 376
16.3 锁的类型及粒度有哪些 377
16.4 服务器的内存多大合适 378
16.5 如何解决join查询需求 379
16.6 创建索引对性能的影响 380
16.7 GridFS适合什么应用场景 381
16.8 Journaling、Oplog、Log三种日志的区别 382
16.9 连接数设置为多少合适 383
16.10 集合被分片后是否可以修改片键 387
16.11 为什么分片集合中的文档记录没有分布到所有分片上 387
16.12 通过mongos连接集群时连接数分析 387
16.13 复制集节点之间是否可以使用不同的存储引擎 388
定价:105.0
ISBN:9787121430008
作者:郭远威
版次:第1版
出版时间:2022-03
内容提要:
本书主要包括MongoDB安装部署、增删改查、索引、聚集框架等基础知识;WiredTiger存储引擎、事务、复制集、分片集群等高阶知识;MongoDB的导入导出、备份恢复、性能监控、权限控制等运维管理知识;MongoDB的驱动、应用开发、来自中文社区的精选案例与问答等一线实践知识等。本书在满足现实中的数据库管理及应用需求的基础上,重点突出WiredTiger存储引擎和实践案例的讲解。
作者简介:
郭远威曾为华为前大数据迁移工程师,目前是亚信科技资深大数据顾问,在数据存储,特别是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 方案介绍 356
14.5 技术创新 358
14.6 技术特点 359
14.7 运营情况 360
14.8 项目成效 360
14.9 小结 361
第15章 云原生MongoDB部署案例 363
15.1 部署环境准备 363
15.2 Docker安装 364
15.3 Kubernetes组件安装 365
15.4 集群Master节点初始化 366
15.5 将Work节点添加到集群 369
15.6 分布式网络文件系统安装 369
15.7 PV、PVC、Deployment配置 372
15.8 小结 374
第16章 常见问题分析 375
16.1 集合与关系型数据库表的区别 375
16.2 是否支持事务 376
16.3 锁的类型及粒度有哪些 377
16.4 服务器的内存多大合适 378
16.5 如何解决join查询需求 379
16.6 创建索引对性能的影响 380
16.7 GridFS适合什么应用场景 381
16.8 Journaling、Oplog、Log三种日志的区别 382
16.9 连接数设置为多少合适 383
16.10 集合被分片后是否可以修改片键 387
16.11 为什么分片集合中的文档记录没有分布到所有分片上 387
16.12 通过mongos连接集群时连接数分析 387
16.13 复制集节点之间是否可以使用不同的存储引擎 388
- 电子工业出版社有限公司
- 电子工业出版社有限公司有赞官方供货商,为客户提供一流的知识产品及服务。
- 扫描二维码,访问我们的微信店铺