注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络数据库MongoDB进阶与实战:微服务整合、性能优化、架构管理

MongoDB进阶与实战:微服务整合、性能优化、架构管理

MongoDB进阶与实战:微服务整合、性能优化、架构管理

定 价:¥118.00

作 者: 唐卓章 著
出版社: 电子工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787121408274 出版时间: 2021-04-01 包装: 平装
开本: 16开 页数: 508 字数:  

内容简介

  本书围绕如何用好MongoDB这个复杂命题,利用大部分篇幅讲述了MongoDB在应用开发方面的各种进阶技巧,同时也介绍了MongoDB 4.0版本的事务特性及微服务相关的技术范例。很多基本的数据库问题都可以从MongoDB的官方文档中找到答案,但官方文档中在MongoDB周边技术栈的整合、系统管理及调优方面仍然缺乏一些富有针对性的内容,所以本书在结合一些实践案例的前提下,以开发管理者的角度对MongoDB技术进行了系统地梳理,希望能够让读者的学习达到事半功倍的效果。相信本书会对应用MongoDB的开发人员具有广泛的指导意义。

作者简介

  唐卓章(博客园ID:美码师)。十年研发老兵,持续关注NoSQL分布式数据库技术,在系统高可用、弹性扩展、性能调优等方面有着丰富的实践及管理经验。MongoDB中文社区核心成员之一。常活跃于Mongoing社区原创及问答板块。华为云 MongoDB 技术专家。致力于万物互联事业,负责物联网平台系统的架设及研发工作。

图书目录

第1部分 MongoDB入门
第1章 什么是MongoDB 1
1.1 认识MongoDB 1
1.1.1 面向文档设计 1
1.1.2 特性 3
1.1.3 优势 4
1.1.4 需要克服的困难 6
1.2 类比SQL模型 7
1.2.1 数据结构 7
1.2.2 类SQL语句 8
第2章 体验MongoDB 11
2.1 安装MongoDB 11
2.1.1 Linux环境下的安装 11
2.1.2 Windows环境下的安装 15
2.2 使用mongo shell 19
2.3 插入文档 22
2.4 查询文档 24
2.4.1 查询全部数据 24
2.4.2 指定条件查询 25
2.4.3 排序、分页 25
2.4.4 使用投射 25
2.4.5 查询限定符 26
2.5 更新文档 27
2.5.1 update 命令 27
2.5.2 findAndModify命令 29
2.5.3 更新操作符 30
2.6 删除文档 31
2.6.1 删除单个文档 31
2.6.2 删除指定条件文档 31
2.6.3 删除全部文档 32
2.6.4 返回被删除文档 32
2.7 使用聚合 33
2.8 计算文档大小 34
2.8.1 查看集合大小 34
2.8.2 计算文档大小 35
2.9 小技巧――定义mongo shell环境 36
第3章 数据模型 37
3.1 BSON协议与类型 37
3.1.1 JSON 标准 37
3.1.2 BSON和JSON 38
3.1.3 BSON的数据类型 39
3.2 使用日期 40
3.3 ObjectId生成器 41
3.4 数组、内嵌 44
3.4.1 内嵌文档 45
3.4.2 数组 45
3.4.3 嵌套型的数组 47
3.5 固定集合 48
3.5.1 固定集合简介 48
3.5.2 使用示例 49
3.5.3 特征与限制 51
3.5.4 适用场景 52
3.6 小技巧――使用固定集合实现FIFO
队列 52
第4章 索引介绍 56
4.1 索引简述 56
4.2 单键、复合索引 57
4.2.1 单字段索引 57
4.2.2 复合索引 58
4.3 数组索引 58
4.4 地理空间索引 59
4.5 唯一性约束 60
4.6 TTL索引 63
4.7 其他索引特性 64
4.7.1 条件索引 64
4.7.2 稀疏索引(sparse=true) 65
4.7.3 文本索引 66
4.7.4 模糊索引 66
4.8 小技巧――使用explain命令验证
优化 67
第5章 副本集 72
5.1 副本集架构 72
5.2 集群选举 73
5.2.1 Raft选举算法 73
5.2.2 MongoDB 实现的扩展 77
5.2.3 MongoDB选举介绍 77
5.2.4 副本集模式 79
5.3 实时复制 81
5.3.1 oplog复制 81
5.3.2 幂等性 84
5.3.3 复制延迟 84
5.3.4 初始化同步 85
5.3.5 数据回滚 86
5.4 自动故障转移 86
5.5 搭建副本集 89
5.5.1 安装副本集 89
5.5.2 创建用户 92
5.5.3 写入数据 92
5.5.4 主备节点切换 93
5.6 小技巧――检查复制的延迟情况 93
第6章 分片 97
6.1 分片集群架构 97
6.1.1 分片简介 97
6.1.2 分片集群架构 97
6.2 分片策略 98
6.2.1 什么是chunk 99
6.2.2 分片算法 100
6.2.3 分片键的选择 101
6.3 读写分发模式 101
6.3.1 数据分发流程 101
6.3.2 避免广播操作 103
6.3.3 保证索引唯一性 104
6.4 数据均衡 104
6.4.1 均衡的方式 104
6.4.2 chunk 分裂 105
6.4.3 自动均衡 106
6.4.4 数据均衡带来的问题 108
6.5 使用mtools搭建集群 108
6.5.1 mtools 介绍 109
6.5.2 准备工作 109
6.5.3 安装 mtools 109
6.5.4 创建分片集群 110
6.5.5 停止、启动 112
6.6 使用分片集群 112
6.7 小技巧――使用标签 114
6.7.1 分片标签 114
6.7.2 使用场景 115
第2部分 MongoDB微服务开发
第7章 微服务入门 117
7.1 微服务定义 117
7.1.1 什么是微服务 117
7.1.2 理解微服务 117
7.1.3 微服务的通用特性 120
7.1.4 微服务不是“银弹” 121
7.2 微服务基础设施 121
7.2.1 服务注册 121
7.2.2 服务发现 122
7.2.3 API网关 123
7.2.4 服务容错 123
7.2.5 服务监控 124
7.2.6 配置中心 124
7.2.7 接口调用 124
7.2.8 容器化 125
7.3 CAP与BASE理论 125
7.3.1 CAP 理论 125
7.3.2 BASE 理论 126
7.4 为什么MongoDB适合微服务 127
第8章 使用Java操作MongoDB 131
8.1 搭建Java开发环境 131
8.1.1 安装JDK 131
8.1.2 安装IDEA 132
8.2 安装Robo 3T 134
8.2.1 Robo 3T介绍 134
8.2.2 下载安装 134
8.2.3 连接数据库 135
8.2.4 操作数据 136
8.3 使用MongoDB Java Driver 137
8.3.1 引入框架 137
8.3.2 连接数据库 137
8.3.3 使用构建器 138
8.4 实例:文章列表的存储与检索 141
8.4.1 集合操作 141
8.4.2 文档操作 143
8.5 异步驱动 146
8.5.1 理解响应式 146
8.5.2 使用响应式流 147
8.6 使用CommandListener检测慢
操作 152
8.7 MongoDB Java Driver的工作原理 155
8.7.1 游标 155
8.7.2 连接池 158
8.7.3 故障转移 160
8.7.4 连接池相关参数 161
8.8 小技巧――如何监视驱动的
连接数 161
第9章 SpringBoot框架整合 165
9.1 SpringBoot简介 165
9.1.1 SpringBoot是什么 165
9.1.2 “脚手架”风格 167
9.2 第一个SpringBoot项目 168
9.2.1 初始化项目 168
9.2.2 添加启动类 172
9.2.3 编写 Echo 接口 172
9.2.4 配置文件 173
9.2.5 启动程序 174
9.2.6 热加载 175
9.3 Spring Data框架介绍 176
9.3.1 Spring Data 176
9.3.2 Spring Data MongoDB 178
9.4 使用Spring Data MongoDB操作
数据库 179
9.4.1 引入依赖 179
9.4.2 配置文件 180
9.4.3 数据模型 180
9.4.4 数据操作 181
9.4.5 启动测试 183
9.5 高级操作 184
9.5.1 实现投射 184
9.5.2 使用 QBE 186
9.5.3 自定义 Repository 方法 187
9.6 自定义配置 190
9.6.1 Spring Boot 通用配置 190
9.6.2 JavaConfig 配置 191
9.6.3 自动配置的原理 192
9.7 实现单元测试 194
9.7.1 使用 flapdoodle.embed.mongo 194
9.7.2 原理解析 198
9.7.3 定制化集成 200
9.8 多数据源 203
9.9 使用审计功能 208
9.9.1 使用注解 208
9.9.2 实现审计 209
9.10 小技巧――自定义数据序列化
方式 210
第10章 项目实战 215
10.1 初始化项目 215
10.2 实现资源抓取 219
10.3 发布RssFeed 229
10.4 统计功能 232
10.5 开发门户界面 235
10.5.1 前端组件 235
10.5.2 RSS门户应用 237
10.5.3 实现后台接口 249
10.6 打包应用程序 252
10.6.1 使用spring-boot-maven-
plugin插件 252
10.6.2 使用 assembly 插件 253
第3部分 MongoDB高效进阶
第11章 性能基准 257
11.1 性能基准 257
11.1.1 了解基准测试 257
11.1.2 吞吐量、并发数、响应
时间 258
11.2 WiredTiger读写模型 259
11.2.1 读缓存 259
11.2.2 写缓冲 260
11.2.3 缓存页管理 262
11.2.4 数据压缩 264
11.2.5 小结 265
11.3 性能监控工具 265
11.3.1 mongostat 265
11.3.2 mongotop 267
11.3.3 Profiler模块 269
11.3.4 db.currentOp 272
11.4 使用YCSB测试MongoDB性能 277
11.4.1 YCSB 简介 277
11.4.2 执行压力测试 279
11.4.3 生成时序指标序列 284
11.5 使用 nmon监视服务器性能 285
第12章 合理使用索引 288
12.1 索引检索原理 288
12.2 索引检索范例 291
12.3 覆盖索引 295
12.4 查询计划 298
12.4.1 查询计划构成 298
12.4.2 explain 命令 299
12.5 实战:查询案例分析 304
12.6 查询缓存原理 322
12.6.1 工作流程 322
12.6.2 案例 323
12.6.3 内部原理 326
12.7 强制命中 328
12.7.1 使用 hint方法 328
12.7.2 使用IndexFilter方法 329
12.8 索引正交 331
12.9 使用MongoDB Compass 332
12.10 优化原则 333
第13章 并发优化 337
13.1 MongoDB的锁模式 337
13.2 MVCC 340
13.3 原子性操作 342
13.4 乐观锁 345
13.4.1 电影院订座的案例 345
13.4.2 版本号模式 348
13.5 缓解行锁竞争 349
13.6 避免重复数据 353
13.7 那些影响并发的操作 356
第14章 应用设计调优 358
14.1 应用范式设计 358
14.1.1 什么是范式 358
14.1.2 反范式设计 360
14.2 嵌套设计 362
14.2.1 在文档内使用嵌套 362
14.2.2 表达关联 363
14.3 桶模式 365
14.3.1 桶模式 365
14.3.2 桶模式案例 366
14.4 海量数据分页 374
14.4.1 传统分页模式 375
14.4.2 使用偏移量 376
14.4.3 折中处理 380
14.5 批操作 381
14.5.1 批量读 381
14.5.2 批量写 383
14.6 读写分离与一致性 385
14.6.1 读写分离 385
14.6.2 读写关注 387
14.6.3 读自身的写入(Read your
own writes) 390
14.6.4 因果一致性 391
14.6.5 小结 392
14.7 聚合范例 392
14.7.1 聚合框架介绍 392
14.7.2 找出重复数据 393
14.7.3 写入中间表 393
14.7.4 表连接(join) 397
14.7.5 使用要点 401
第15章 高级特性 402
15.1 Change Stream介绍 402
15.2 Change Stream案例:数据迁移 408
15.2.1 关键点 409
15.2.2 实战:使用 Change Stream
实现增量迁移 410
15.2.3 小结 420
15.3 多文档事务 421
15.3.1 事务简介 421
15.3.2 MongoDB 中的事务 422
15.4 基于Spring开发事务 426
15.4.1 在驱动中实现事务 426
15.4.2 使用 Spring Data 实现事务 428
15.5 事务实现原理 432
15.5.1 MVCC 与快照的一致性 432
15.5.2 事务持久性 434
15.5.3 读写隔离设定 435
15.6 写冲突模式 437
15.7 使用事务的限制 440
第4部分 MongoDB架构管理
第16章 安全管理 441
16.1 MongoDB如何鉴权 441
16.1.1 初体验 441
16.1.2 理解身份认证与授权 443
16.1.3 身份认证方式 443
16.1.4 RBAC 访问控制 446
16.2 角色管理 447
16.2.1 角色管理命令 447
16.2.2 系统内置角色 448
16.2.3 创建自定义角色 449
16.3 最小权限原则 450
16.4 安全最佳实践 452
第17章 高可靠 457
17.1 节点部署优化 457
17.1.1 硬件规划 457
17.1.2 系统调优 458
17.1.3 数据库配置 460
17.2 集群高可靠 461
17.2.1 反亲和部署 462
17.2.2 避免集中存储 462
17.2.3 警惕资源超分 463
17.3 应用层高可靠 463
17.3.1 故障隔离 463
17.3.2 故障转移/恢复 465
17.4 备份可靠性 466
17.4.1 逻辑备份 466
17.4.2 物理备份 468
17.4.3 增量备份 469
17.5 容灾可靠性 470
17.5.1 同城灾备 471
17.5.2 异地灾备 472
17.5.3 异地多活 473
第18章 治理经验 476
18.1 强化约束 476
18.1.1 使用 JSON Schema 476
18.1.2 管理文档结构 478
18.2 使用Mongobee实现升级 478
18.2.1 模式演进 478
18.2.2 Mongobee 介绍 479
18.2.3 范例 480
18.3 规范与自动化 484
18.3.1 开发规范 485
18.3.2 实现自动化 486
18.4 运维管理 487
18.4.1 容量规划 487
18.4.2 监控时关注哪些指标 490

本目录推荐