新書推薦:
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
《
阿勒泰的春天
》
售價:NT$
230.0
《
如见你
》
售價:NT$
234.0
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:NT$
305.0
《
560种野菜野果鉴别与食用手册
》
售價:NT$
305.0
《
中国官僚政治研究(一部洞悉中国政治制度演变的经典之作)
》
售價:NT$
286.0
|
編輯推薦: |
本书是有志学习MongoDB 者的良师益友。它从SQL 和NoSQL 技术的分野开始讲起,
阐述了关系数据库和MongoDB 的模式设计;介绍了MongoDB 创建、读取、更新、删除
操作,以及使用Ruby、Python 和PHP 执行高级查询的概念;深入讨论了聚合框架、索引、
监控、备份等应用;详细介绍了MongoDB 中的不同存储引擎;展示了MongoDB 如何适
应更广泛的大数据环境和生态系统;讨论了副本集以及如何管理它们;探讨了分片机
制等。总之,学习本书可以为读者较为全面地掌握MongoDB 应用打下坚实的基础。
|
內容簡介: |
本书详细阐述了与MongoDB 3.x 相关的基本解决方案,主要包括MongoDB —现代Web 数据库, 模式设计和数据建模,MongoDB CRUD 操作,高级查询,聚合,索引,监控、备份和安全性,存储引擎, 通过MongoDB 利用大数据,复制,分片,容错和高可用性等内容。此外,本书还提供了相应的示例、 代码,以帮助读者进一步理解相关方案的实现过程。 本书既适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教 材和参考手册。
|
目錄:
|
目录
第1 章 MongoDB现代Web 数据库 . 1
1.1 Web 的历史 1
1.1.1 Web 1.0 1
1.1.2 Web 2.0 3
1.1.3 Web 3.0 5
1.2 SQL 和NoSQL 的演变 .5
1.2.1 MongoDB 的演变 .6
1.2.2 MongoDB 和SQL 开发人员 8
1.2.3 MongoDB 和NoSQL 开发人员 .10
1.3 MongoDB 的主要特征和用例 10
1.3.1 主要特征 .10
1.3.2 MongoDB 的用例 .11
1.3.3 对MongoDB 的批评 13
1.4 MongoDB 配置和最佳实践 14
1.4.1 操作最佳实践 .14
1.4.2 模式设计最佳实践 .16
1.4.3 写入持久性的最佳实践 .17
1.4.4 复制的最佳实践 .18
1.4.5 分片的最佳实践 .18
1.4.6 安全性的最佳实践 .19
1.4.7 AWS 的最佳实践 19
1.5 参考资料 20
1.5.1 MongoDB 帮助文档 .20
1.5.2 进一步阅读 .20
1.6 小结 21
第2 章 模式设计和数据建模 . 23
2.1 关系模式设计 24
? X ? 精通MongoDB 3.x
2.1.1 MongoDB 模式设计 .24
2.1.2 数据建模 .25
2.1.3 为原子操作建模数据 .29
2.1.4 关系建模 .31
2.1.5 连接到MongoDB .35
2.1.6 使用Python 连接 39
2.1.7 使用PHP 连接 42
2.2 小结 46
第3 章 MongoDB CRUD 操作 . 47
3.1 使用shell 执行CRUD 操作 .47
3.1.1 使用mongo shell 脚本 49
3.1.2 管理 .54
3.1.3 mongo shell 中的MapReduce 57
3.1.4 聚合框架 .62
3.1.5 保护shell 的安全 64
3.1.6 使用MongoDB 进行身份验证 68
3.2 小结 69
第4 章 高级查询 . 71
4.1 MongoDB CRUD 操作 71
4.1.1 使用Ruby 驱动程序执行CRUD 操作 71
4.1.2 在Mongoid 中的CRUD 操作 78
4.1.3 使用Python 驱动程序执行CRUD 操作 .79
4.1.4 使用PyMODM 执行CRUD 操作 .84
4.1.5 使用PHP 驱动程序执行CRUD 操作 .86
4.1.6 使用Doctrine 执行CRUD 操作 92
4.1.7 比较操作符 .96
4.1.8 更新操作符 .97
4.1.9 智能查询 .97
4.2 小结 101
第5 章 聚合 103
5.1 聚合的用途 103
5.2 聚合操作符 104
目录? XI ?
5.2.1 聚合阶段操作符 .104
5.2.2 表达式操作符 .105
5.3 限制 110
5.4 聚合用例 111
5.5 小结 122
第6 章 索引 123
6.1 内部索引 123
6.2 索引类型 125
6.2.1 单字段索引 .125
6.2.2 复合索引 .127
6.2.3 多键索引 .129
6.2.4 特殊类型的索引 .132
6.3 建立和管理索引 140
6.3.1 强制使用索引 .140
6.3.2 管理索引 .143
6.4 高效使用索引 144
6.5 参考资料 146
6.6 小结 147
第7 章 监控、备份和安全性 . 149
7.1 监控 149
7.1.1 应该监控的重点内容 .149
7.1.2 监控WiredTiger 中的内存使用情况 .151
7.1.3 跟踪页面错误 .151
7.1.4 跟踪B 树未命中的情况 .152
7.1.5 工作集计算 .154
7.1.6 监控工具 .154
7.2 备份 155
7.2.1 备份选项 .156
7.2.2 EC2 备份和还原 .159
7.2.3 增量备份 .159
7.3 安全性 160
7.3.1 身份验证 .160
? XII ? 精通MongoDB 3.x
7.3.2 授权机制 .162
7.3.3 网络级安全性 .166
7.3.4 审计安全性 .166
7.3.5 特别案例 .167
7.3.6 综述 .167
7.4 小结 168
第8 章 存储引擎 . 169
8.1 可插拔存储引擎 169
8.1.1 WiredTiger .169
8.1.2 加密 .175
8.1.3 使用In-Memory 存储 .176
8.1.4 MMAPv1 .177
8.1.5 混合使用存储引擎 .179
8.1.6 其他存储引擎 .180
8.2 MongoDB 中的锁 180
8.2.1 锁的报告 .183
8.2.2 锁的产生 .183
8.2.3 常用命令和锁 .184
8.2.4 需要数据库锁的命令 .184
8.3 参考资料 185
8.4 小结 186
第9 章 通过MongoDB 利用大数据 187
9.1 关于大数据 187
9.1.1 大数据发展前景 .188
9.1.2 消息排队系统 .189
9.1.3 数据仓库 .191
9.1.4 以MongoDB 作为数据仓库 193
9.2 大据用例 194
9.2.1 Kafka 设置 .195
9.2.2 Hadoop 设置 198
9.2.3 从Hadoop 到MongoDB 管道 201
9.2.4 从Spark 到MongoDB 201
目录? XIII ?
9.3 参考资料 202
9.4 小结 203
第10 章 复制 205
10.1 复制 205
10.1.1 逻辑或物理复制 .205
10.1.2 不同的高可用性类型 .206
10.2 架构概述 207
10.3 选举方式 208
10.4 关于副本集的用例 210
10.5 设置副本集 211
10.5.1 将独立服务器转换为副本集 .211
10.5.2 创建副本集 .212
10.5.3 读取首选项设置 .214
10.5.4 写入关注 .215
10.5.5 副本集成员的优先级设置 .216
10.6 连接到副本集 220
10.7 副本集管理 222
10.7.1 对副本集执行维护的方式 .222
10.7.2 重新同步副本集的成员 .223
10.7.3 更改oplog 大小 223
10.7.4 在丢失了大部分服务器时重新配置副本集 .224
10.7.5 链式复制 .225
10.8 副本集的云选项 225
10.8.1 mLab 226
10.8.2 MongoDB Atlas .226
10.9 副本集的限制 226
10.10 小结 227
第11 章 分片 229
11.1 分片的优点 229
11.2 架构概述 231
11.2.1 开发、持续部署和暂存环境 .232
11.2.2 提前计划分片 .233
? XIV ? 精通MongoDB 3.x
11.3 分片设置 233
11.3.1 选择分片键 .233
11.3.2 选择正确的分片键 .234
11.4 分片管理和监控 237
11.4.1 跟踪和保持数据平衡 .237
11.4.2 块的管理 .240
11.4.3 分片限制 .247
11.5 查询分片数据 248
11.5.1 查询路由器 .248
11.5.2 使用Ruby 查询 .250
11.5.3 与副本集的性能比较 .250
11.6 分片的恢复 251
11.6.1 mongos .251
11.6.2 mongod 进程 .251
11.6.3 配置服务器 .252
11.6.4 分片崩溃 .252
11.6.5 整个集群都崩溃了 .252
11.7 参考资料 252
11.8 小结 253
第12 章 容错和高可用性 255
12.1 应用程序设计 255
12.1.1 无模式并不意味着没有模式设计 .255
12.1.2 读取性能优化 .256
12.1.3 防御性编码 .258
12.2 操作 259
12.3 安全性 260
12.3.1 默认启用安全性 .260
12.3.2 隔离服务器 .261
12.3.3 对照检查表 .262
12.4 参考资料 263
12.5 小结 264
|
內容試閱:
|
前言
MongoDB 已经发展成为事实上的NoSQL 数据库,拥有数百万用户,这些用户从小
型初创企业到财富500 强企业都有。为了解决基于SQL 模式的数据库的局限性,MongoDB
开创了DevOps 关注重点的转移,并给DevOps 团队提供了可维护的分片和复制机制。
本书基于MongoDB 3.x,涵盖了大量相关主题,例如,使用shell 进行数据库查询、使用
内置驱动程序和流行的ODM 映射器等,此外还包括一些更高级的主题,如分片、高可
用性以及与大数据源的集成等。
本书通过相关用例介绍了MongoDB 的功能以及如何发挥其优势;详细阐述了如何
有效地查询MongoDB 并尽可能地使用索引;探讨了内部部署或云上MongoDB 安装的管
理;解释了存储系统以及它们如何影响性能。最后,本书还深入阐释了复制和MongoDB
扩展,以及与异构数据源的集成。到本书学习结束时,相信读者将拥有所有必需的行业
技能和知识,成为合格的MongoDB 开发人员和管理员。
本书内容综述
本书共分12 章,各章内容分述如下。
第1 章MongoDB现代Web 数据库,主要回顾了Web 和MongoDB 的发展历史,
SQL 和NoSQL 技术的分野等。
第2 章模式设计和数据建模,介绍了关系数据库和MongoDB 的模式设计,以
及如何从不同的角度开始实现相同的目标。
第3 章MongoDB CRUD 操作,给出了MongoDB 创建、读取、更新、删除操作
的全面综述。
第4 章高级查询,讨论了使用官方驱动程序和ODM,以及使用Ruby、Python
和PHP 执行高级查询的概念。
第5 章聚合,深入讨论了聚合框架。本章还讨论了为什么以及何时应该使用聚
合而不是MapReduce 和查询数据库。
第6 章索引,探讨了每个数据库最重要的属性之一,即索引。
第7 章监控、备份和安全性,讨论了MongoDB 的操作方面。监控、备份和安
? IV ? 精通MongoDB 3.x
全性不应该是事后的想法,而应该是在生产环境中部署MongoDB 之前的必要过程。
第8 章存储引擎,详细介绍了MongoDB 中的不同存储引擎。深入分析了每个
存储引擎的优缺点以及选择每个存储引擎的用例。
第9 章通过MongoDB 利用大数据,更多地展示了MongoDB 如何适应更广泛的
大数据环境和生态系统。
第10 章复制,讨论了副本集以及如何管理它们。从围绕选举的副本集和副本集
内部的架构概述开始,本章深入研究了设置和配置副本集。
第11 章分片,探讨了分片机制,这是MongoDB 最有趣的功能之一。本章从分
片的架构概述开始,然后继续讨论如何设计分片,尤其是选择正确的分片键。
第12 章容错和高可用性,提供了在前面的章节中没有讨论过的一些内容,并突
出强调了其中的一些概念。
阅读基础
要顺利阅读本书并完成所有代码示例,读者应具备以下基础条件。
? MongoDB 版本3
? Apache Kafka 1
? Apache Spark 2
? Apache Hadoop 2
本书适合的读者
本书面向的读者是希望学习如何更有效和更高效地使用MongoDB 的数据库开发人
员、架构师和管理员。
如果你有使用NoSQL 数据库建立应用程序和网站的经验,并且对MongoDB 有兴趣,
那么本书非常适合你。
本书约定
本书将可以看到许多区分不同类型信息的文本样式。以下是这些样式的一些示例以
及对它们的含义的解释。
(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件
扩展名、路径名、虚拟URL、用户输入和Twitter 句柄等。以下段落就是一个示例。
前言? V ?
开发人员可以通过在shell 的索引命令中添加{background:true} 参数来在后台构建索
引。后台索引只会阻止当前的连接 线程。开发人员可以打开一个新连接(即在命令行中使用
mongo)来连接到同一个数据库。
(2)当希望引起读者对代码块的特定部分的注意时,相关的行或项目以粗体显示。
db.types.find.sort{a:-1}
{ "_id" : ObjectId"5908d59d55454e2de6519c4a", "a" : [ 2, 5 ] }
{ "_id" : ObjectId"5908d58455454e2de6519c49", "a" : [ 1, 2, 3 ] }
(3)任何命令行输入或输出都采用如下所示的代码形式。
db.types.insert{"a":4}
WriteResult{ "nInserted" : 1 }
(4)新术语和重要单词以粗体显示,并提供了中英文对照的形式。
本章将使用官方驱动程序和最常用的对象文档映射器(Object Document Mapper,ODM)框
架来探索创建、读取、更新和删除操作。
该图标旁边的文字表示警告或重要的信息。
该图标旁边的文字表示提示或技巧。
下载示例代码文件
读者可以从www.packtpub.com 下载本书的示例代码文件。具体步骤如下。
(1)登录或注册www.packtpub.com。
(2)选择Support(支持)选项卡。
(3)单击Code Downloads & Errata(代码下载和勘误表)。
(4)在Search(搜索)文本框中输入图书名称Mastering MongoDB 3.x。
(5)选择要下载的代码文件。
(6)单击Code Download(代码下载)。
下载文件后,请确保使用最新版本解压缩或解压缩文件夹。
? WinRAR7-Zip(Windows 系统)
? ZipegiZipUnRarX(Mac 系统)
? 7-ZipPeaZip(Linux 系统)
该书的代码包也已经在GitHub 上托管,网址为https:github.comPacktPublishing
Mastering-MongoDB-3x 和https:github.comagiamasmastering-mongodb,欢迎读者访问。
? VI ? 精通MongoDB 3.x
关于作者
Alex Giamas 是英国政府Department for International Trade(国际贸易部)的高级软
件工程师。他还曾担任各种初创公司的顾问,是系统工程、NoSQL 和大数据技术方面经
验丰富的专业人士,同时还拥有丰富的工作经历,包括共同创建数字健康创业公司和任
职财富15 强公司等。
他从2009 年开始使用MongoDB 和早期的1.x 版本,将其用于围绕数据存储和分析
处理的多个项目。自2007 年以来,他一直在使用Apache Hadoop 进行开发,并参与了其
孵化工作。
他曾使用各种NoSQL 和大数据技术,以C、Java、Ruby 和Python 构建可扩展且
高可用的分布式软件系统。
Alex 拥有Carnegie Mellon University(卡内基梅隆大学)信息网络硕士学位,并曾
于Stanford University(斯坦福大学)进修专业课程。他毕业于National Technical University
of Athens,Greece in Electrical and Computer Engineering(希腊雅典国立技术大学电
气与计算机工程系)也是MongoDB 认证的开发人员,同时还是Cloudera 认证的Apache
Hadoop 和Data Science Essentials 的开发人员。
过去4 年,他定期在InfoQ 在线新闻中社区网站上发表了很多有关NoSQL、大数据
和数据科学主题方面的文章。
这些年来,我要感谢我父母的支持和建议。
感谢我的未婚妻玛丽在我撰写本书期间的耐心和支持。
关于审稿者
Juan Toms Oliva Ramos 是University of Guanajuato,Mexico(墨西哥瓜纳华托大学)
的环境工程师,拥有行政工程和质量硕士学位。他在专利管理和开发、技术创新项目,
以及通过流程统计控制开发技术解决方案方面拥有5 年以上的经验。
自2011 年以来,他一直是统计学、企业家精神和项目技术开发方面的教师。他变
成了一名企业家导师,并在Instituto Tecnolgico Superior de Purisima del Rincon Guanajuato,
Mexico(墨西哥瓜纳华托州普瑞索玛德林肯高级技术研究所)开设了一个新的技术
管理和创业部门。
Juan 是墨西哥Alfaomega 公司的审稿者,曾经审读过有关智能手表、智能电视和
Android 移动设备的可穿戴设计方面的图书。
前言? VII ?
Juan 还通过编程和自动化技术开发了原型,用于改进已经注册专利的操作。
我要感谢上帝赐予我智慧和谦虚来审阅这本书。
感谢我美丽的妻子Brenda,我们两位神奇的公主(Maria Regina 和Maria Renata)和
我们家庭的下一位成员(Angel Tadeo),你们所有人都赋予我力量,给我带来了开心快
乐的每一天。有你们真好。
Nilap Shah 是一位优秀的软件顾问,拥有多个领域的经验和技术。他是.NET、Uipath(机
器人技术)和MongoDB 方面的专家。他是经过认证的MongoDB 开发人员和DBA。他
既是技术作家,也是技术演讲者。他还提供MongoDB 企业培训。目前,Nilap 正在担任
MongoDB 的主要顾问,并为MongoDB(DBA 和开发人员项目)提供解决方案。
|
|