MongoDB数据库与传统的关系数据库不同,是一种面向文档的、介于非关系数据库和关系数据库之间的数据库。《MongoDB基础、运维与性能优化》帮助读者掌握MongoDB 8数据库及其相关技术栈的开发知识,涵盖MongoDB 8数据库应用开发的要点。《MongoDB基础、运维与性能优化》配套PPT课件。
《MongoDB基础、运维与性能优化》共分15章,内容包括MongoDB数据库基础知识、系统安装与环境搭建、可视化工具的使用、Shell工具的使用、基础操作、聚合、数据模型、时间序列、事务、索引、副本集、分片、存储、安全以及性能优化。
《MongoDB基础、运维与性能优化》内容翔实、代码精练、重点突出、实例丰富,能够帮助初学者快速掌握MongoDB数据库运维和开发方法,对提高Web应用开发人员的技术水平也有非常积极的指导作用。《MongoDB基础、运维与性能优化》也适用于高等院校或高职高专院校学习MongoDB相关课程的学生。
(1)《MongoDB基础、运维与性能优化》内容包括MongoDB数据库基础知识、系统安装与环境搭建、可视化工具使用、Shell工具使用、基础操作、聚合、数据模型、时间序列、事务、索引、副本集、分片、存储、安全以及性能优化。
(2)涵盖MongoDB数据库绝大部分的运维和开发要点,帮助读者系统掌握MongoDB的全貌。
(3)全程知识点与应用示例相结合,帮助读者快速学会MongoDB数据库的运维技巧,并轻松应用到开发实践中。
(4)全书知识点的讲解按照类别进行合理划分,方便读者按需阅读,并可作为查询参考手册。
(5)配套PPT课件、读者微信交流群。
MongoDB数据库是一个C 语言开发而成的、基于分布式文件存储的数据库,旨在为Web应用提供可扩展的高性能数据存储解决方案。
严格来讲,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的NoSQL数据库。MongoDB数据库所支持的数据结构非常松散,类似于BSON格式(JSON的一种二进制表现形式),因此可以存储比较复杂的数据类型。
MongoDB数据库最大的特点是其支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB是一个高性能的数据库
MongoDB数据库采用内存映射机制,能够将数据直接存储在内存中,从而大大提高了读写性能。MongoDB数据库还支持使用多线程进行读写操作,进一步提高了系统性能。MongoDB数据库采用类似JSON的文档数据模型,可以灵活地存储和管理各种数据类型和结构。
MongoDB数据库是一种分布式数据库,可以方便地通过水平扩展来提高系统的存储容量和性能,这种可扩展性使得MongoDB能够应对大规模数据和高并发访问的需求。同时,这种数据模型使得开发人员能够更加方便地使用MongoDB来存储和处理复杂的数据结构。
MongoDB数据库提供了丰富的查询语法和功能,可以支持各种复杂的查询需求。通过使用丰富的查询功能,开发人员可以轻松地实现数据的筛选、排序、分片等操作。MongoDB数据库支持复制集架构,可以保证数据的可靠性和高可用性,复制集中的多个节点可以互相备份和协作,以确保数据的完整性和系统的稳定性。
MongoDB数据库提供了丰富的监控和诊断工具,可以帮助开发人员及时发现和解决系统性能问题。这些工具包括实时监控、性能分析、故障排除等,使得开发人员能够更加方便地进行系统维护和管理。
近年来,MongoDB数据库的发展势头非常迅猛,版本的更新迭代速度非常快,这得益于Web应用开发逐渐成为业界主流的开发方式。
本书是否适合你
本书涵盖MongoDB 8数据库绝大部分的运维和开发要点,全程做到将知识点与应用实例相结合,通过大量的实例帮助读者快速掌握MongoDB 8数据库的运维技巧,并将其应用到实践开发之中。本书通过这种学以致用的方式来增强读者的阅读兴趣,无论是基础内容还是提高内容,相信读者都能从中获益。
本书特点
(1)本书从最简单、最通用的MongoDB数据库实例出发,抛开枯燥的纯理论知识介绍,通过实例讲解的方式帮助读者学习MongoDB数据库运维与开发技巧。
(2)本书内容涵盖MongoDB数据库运维和开发所涉及的大部分知识点,将这些内容整合到一起可以系统地掌握MongoDB数据库的全貌。
(3)本书对于实例中的知识难点做出详细的分析,能够帮助读者有针对性地提高MongoDB数据库的运维和开发技巧,并且通过多个实际的项目应用,尽量帮助读者掌握MongoDB数据库运维和开发涉及的要点。
(4)本书在MongoDB数据库及其相关知识点上按照类别进行了合理的划分,所有代码实例都是独立的,读者可以从头开始阅读,也可以从中间开始阅读,不会影响学习效果。
(5)本书代码遵循重构原理,避免代码污染,真心希望读者能写出优秀的、简洁的、可维护的代码。
配套资源下载
本书配套PPT课件,读者需要使用微信扫描下面的二维码获取。如果在阅读过程中发现问题或有任何建议,请联系下载资源中提供的相关电子邮箱或微信。
本书读者
?MongoDB数据库初学者
?NoSQL数据库初学者
?Web框架应用开发人员
?具有一定基础的全栈应用开发人员
?网站建设与网页设计开发人员
?高等院校或高职高专院校的学生
著 者
2025年1月
王金柱,拥有10多年丰富的IT从业经历,对JavaScript、Vue.js、Node.js、React.js等Web前端开发有着独到的经验,精通Python、Java等编程语言以及MySQL、NoSQL数据库。曾从事过多家大型央企与上市公司的企业级Web应用系统开发工作。创作过多本前端、后端开发类的图书,部分包括《MongoDB基础、运维与性能优化》《Vue.js Node.js全栈开发实战(第2版)》《Django 5企业级Web应用开发实战(视频教学版)》《HTML5移动网站与App开发实战》《Vue.js Node.js全栈开发实战》《Netty实战》《React.js 16从入门到实战》。
第1章 MongoDB简介 1
1.1 MongoDB概述 1
1.2 MongoDB的发展历史 4
1.3 MongoDB的优缺点 8
1.3.1 MongoDB的优点 8
1.3.2 MongoDB的缺点 9
1.4 常用概念 10
1.5 数据类型 11
1.6 本章小结 12
第2章 MongoDB的安装 13
2.1 在Windows系统上安装MongoDB 13
2.1.1 安装MongoDB 13
2.1.2 配置环境变量 20
2.1.3 其他安装形式 21
2.1.4 常见问题和注意事项 21
2.2 在Linux系统上安装MongoDB 22
2.2.1 使用yum方式安装MongoDB 22
2.2.2 卸载MongoDB 25
2.2.3 使用其他方式安装MongoDB 26
2.2.4 常见错误和注意事项 27
2.3 本章小结 27
第3章 MongoDB可视化管理工具 28
3.1 MongoDB Compass 28
3.1.1 MongoDB Compass的特点 28
3.1.2 MongoDB Compass的安装与更新 29
3.1.3 MongoDB Compass的使用 30
3.1.4 注意事项 33
3.2 Navicat Premium 33
3.2.1 Navicat Premium的功能特点 34
3.2.2 Navicat Premium的安装 35
3.2.3 Navicat Premium的使用 37
3.3 NoSQLBooster for MongoDB 40
3.3.1 NoSQLBooster for MongoDB的功能特点及使用场景 40
3.3.2 NoSQLBooster for MongoDB的安装 41
3.3.3 NoSQLBooster for MongoDB的使用 42
3.4 本章小结 48
第4章 MongoDB Shell(mongosh) 49
4.1 MongoDB Shell的安装 49
4.1.1 在Windows系统上安装MongoDB Shell 50
4.1.2 在Linux系统上安装MongoDB Shell 52
4.2 MongoDB Shell的配置 53
4.2.1 使用命令编辑器 53
4.2.2 配置设置 54
4.2.3 自定义mongosh提示 56
4.2.4 配置远程数据搜集 58
4.3 MongoDB Shell的运行命令 58
4.4 使用MongoDB Shell进行简单操作 59
4.4.1 新增 60
4.4.2 查询 61
4.4.3 修改 63
4.4.4 删除 66
4.5 客户端字段级加密 67
4.6 脚本 69
4.6.1 运行JavaScript脚本 69
4.6.2 运行配置文件中的代码 71
4.7 本章小结 73
第5章 数据库操作 74
5.1 基础操作 74
5.1.1 操作数据库 74
5.1.2 操作集合或视图 78
5.1.3 操作文档 86
5.2 文本搜索 86
5.3 地理空间查询 88
5.3.1 GeoJSON对象 88
5.3.2 传统坐标对 89
5.3.3 2dsphere索引 89
5.3.4 2d索引 95
5.4 常用的操作符 97
5.4.1 查询和投影操作符 97
5.4.2 更新操作符 100
5.4.3 聚合管道操作符 102
5.4.4 查询修饰符 103
5.5 本章小结 104
第6章 聚合 105
6.1 聚合方法 105
6.2 聚合管道 106
6.2.1 管道和阶段 107
6.2.2 管道操作符 107
6.2.3 管道表达式与表达式操作符 108
6.2.4 聚合操作 117
6.3 本章小结 124
第7章 数据模型 125
7.1 数据建模介绍 125
7.2 架构设计流程 126
7.2.1 确定工作负载 126
7.2.2 映射模式关系 127
7.2.3 应用设计模式 128
7.3 模型设计模式 130
7.3.1 分组数据 130
7.3.2 文档和模式版本控制 136
7.4 数据一致性 143
7.4.1 用例描述 143
7.4.2 强制执行事务的数据一致性 144
7.4.3 通过嵌入实现数据一致性 146
7.5 模式验证 148
7.5.1 模式验证使用场景 148
7.5.2 指定JSON schema验证 149
7.5.3 指定允许的字段值 151
7.5.4 使用查询运算符指定验证 152
7.5.5 指定现有文档的验证级别 153
7.5.5 指定现有文档的验证级别 156
7.5.6 选择如何处理无效文档 159
7.6 本章小结 161
第8章 时间序列 162
8.1 时间序列介绍 162
8.2 创建和查询时间序列集合 163
8.2.1 创建时间序列集合 163
8.2.2 在时间序列集合中插入测量值 164
8.2.3 查询时间序列集合 165
8.2.4 在时间序列集合上运行聚合 165
8.3 列出数据库中的时间序列集合 166
8.4 设置时间序列集合的自动删除 167
8.5 设置时间序列数据的粒度 168
8.6 向时间序列集合添加从节点索引 170
8.6.1 创建二级索引 170
8.6.2 使用二级索引提高排序性能 171
8.6.3 时间序列集合的最新数据点查询 172
8.7 本章小结 173
第9章 事务 174
9.1 事务基础原理 174
9.2 驱动程序API 176
9.2.1 回调API 176
9.2.2 核心API 177
9.2.3 事务错误处理 178
9.3 事务与操作 180
9.3.1 事务操作基础 180
9.3.2 在事务中创建集合和索引 180
9.3.3 计数、限制性与去重操作 181
9.4 读取偏好与读写关注 181
9.4.1 事务和读取偏好 181
9.4.2 事务和读关注 182
9.4.3 事务和写关注 182
9.5 本章小结 183
第10章 索引 184
10.1 索引介绍 184
10.2 创建索引 185
10.3 指定索引名称 186
10.4 删除索引 187
10.5 单字段索引 188
10.6 对嵌入式文档创建索引 189
10.7 复合索引 190
10.7.1 复合索引介绍 190
10.7.2 创建复合索引 191
10.7.3 复合索引排序顺序 192
10.8 多键索引 193
10.8.1 多键索引介绍 193
10.8.2 在数组字段上创建索引 195
10.8.3 为数组中的嵌入字段创建索引 196
10.8.4 多键索引边界 198
10.8.5 多键索引的复合边界 199
10.9 通配符索引 203
10.9.1 通配符索引介绍 203
10.9.2 对单个字段创建通配符索引 204
10.9.3 在通配符索引中包含或排除字段 205
10.9.4 对所有字段创建通配符索引 207
10.10 本章小结 209
第11章 副本集 210
11.1 副本集介绍 210
11.2 异步复制 212
11.3 自动故障转移 212
11.4 读取操作 213
11.4.1 读取偏好 213
11.4.2 数据可见性 214
11.4.3 镜像读 214
11.5 操作日志 215
11.5.1 操作日志基础 215
11.5.2 操作日志大小 215
11.5.3 最短操作日志保留期 216
11.5.4 可能需要更大操作日志的工作负载 216
11.5.5 操作日志状态 217
11.6 本章小结 217
第12章 分片 218
12.1 分片基础 218
12.1.1 分片介绍 218
12.1.2 分片键介绍 219
12.1.3 分片的优点 219
12.2 分片集群 220
12.2.1 分片集群的组成 220
12.2.2 生产配置 220
12.2.3 开发配置 221
12.3 分片键的应用 222
12.3.1 分片键索引 222
12.3.2 将集合分片 223
12.3.3 选择分片键 223
12.3.4 更改分片键 226
12.3.5 对集合重新分片 226
12.4 本章小结 229
第13章 存储 230
13.1 存储介绍 230
13.2 WiredTiger存储引擎 231
13.2.1 WiredTiger存储引擎介绍 231
13.2.2 事务(读写)并发 231
13.2.3 文档级并发性 231
13.2.4 快照和检查点 232
13.2.5 日志与压缩 232
13.2.6 内存使用 233
13.3 日志 233
13.3.1 日志和WiredTiger存储引擎 233
13.3.2 日志记录进程 234
13.3.3 Journal Files 234
13.3.4 日志和内存存储引擎 235
13.4 本章小结 235
第14章 安全性 236
14.1 安全性介绍 236
14.2 基于SCRAM的身份验证 237
14.2.1 SCRAM机制 237
14.2.2 使用SCRAM对客户端进行身份验证 238
14.3 基于x.509的身份验证 240
14.3.1 x.509机制 240
14.3.2 使用x.509对客户端进行身份验证 240
14.4 加密 242
14.4.1 加密方法 242
14.4.2 选择正在使用的加密方法 242
14.4.3 静态加密 243
14.4.4 TLS/SSL 244
14.5 本章小结 244
第15章 性能优化 245
15.1 性能优化概述 245
15.2 索引优化 246
15.3 查询优化 247
15.4 资源管理优化 248
15.5 本章小结 248