3dwoo大學簡體電腦書店
精通MongoDB 3.x
( 簡體 字)
作者:[美]亞歷克斯·吉瑪斯類別:1. -> 資料庫 -> MongoDB
譯者:陳凱
出版社:清華大學出版社精通MongoDB 3.x 3dWoo書號: 52117
詢問書籍請說出此書號!
有庫存
NT售價: 445
出版日:9/1/2019
頁數:257
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302532989 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 MongoDB—現代Web數據庫.1
1.1 Web的歷史1
1.1.1 Web1.01
1.1.2 Web2.03
1.1.3 Web3.05
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?精通MongoDB3.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章 MongoDBCRUD操作.47
3.1 使用shell執行CRUD操作.47
3.1.1 使用mongoshell腳本49
3.1.2 管理.54
3.1.3 mongoshell中的MapReduce57
3.1.4 聚合框架.62
3.1.5 保護shell的安全64
3.1.6 使用MongoDB進行身份驗證68
3.2 小結69
第4章 高級查詢.71
4.1 MongoDBCRUD操作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.2EC2備份和還原.159
7.2.3增量備份.159
7.3安全性160
7.3.1身份驗證.160
?XII?精通MongoDB3.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.1WiredTiger.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.2MongoDB中的鎖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.1Kafka設置.195
9.2.2Hadoop設置198
9.2.3從Hadoop到MongoDB管道201
9.2.4從Spark到MongoDB201
目  錄?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.1mLab226
10.8.2MongoDBAtlas.226
10.9副本集的限制226
10.10小結227
第11章分片229
11.1分片的優點229
11.2架構概述231
11.2.1開發、持續部署和暫存環境.232
11.2.2提前計劃分片.233
?XIV?精通MongoDB3.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.1mongos.251
11.6.2mongod進程.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 3.x 相關的基本解決方案,主要包括MongoDB —現代Web 數據庫,
模式設計和數據建模,MongoDB CRUD 操作,高級查詢,聚合,索引,監控、備份和安全性,存儲引擎,
通過MongoDB 利用大數據,復制,分片,容錯和高可用性等內容。此外,本書還提供了相應的示例、
代碼,以幫助讀者進一步理解相關方案的實現過程。
本書既適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教
材和參考手冊。
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)當希望引起讀者對代碼塊的特定部分的注意時,相關的行或項目以粗體顯示。
關于作者
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 Tomas Oliva Ramos 是University of Guanajuato,Mexico(墨西哥瓜納華托大學)
的環境工程師,擁有行政工程和質量碩士學位。他在專利管理和開發、技術創新項目,
以及通過流程統計控制開發技術解決方案方面擁有5 年以上的經驗。
自2011 年以來,他一直是統計學、企業家精神和項目技術開發方面的教師。他變
成了一名企業家導師,并在Instituto Tecnologico 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 和開發人員項目)提供解決方案。
pagetop