本書為沒有MongoDB 或者NoSQL經驗的開發者編寫
本書分三部分通過大量的實例代碼介紹瞭MongoDB數據庫底層的實現以及大型互聯網Web項目數據庫設計原則。第一部分對MongoDB進行瞭整體介紹,並介紹瞭實際的開發例子,另外還介紹瞭JavaScript shell和Ruby驅動。第二部分通過逐步實現一個電商數據模型和實現必要的CRUD操作來詳細介紹瞭MongoDB的文檔數據模型、查詢語言和CRUD(新增、讀取、更新和刪除)操作。本書的最後部分從數據庫專傢的角度來看待MongoDB,介紹瞭數據庫的性能、部署、容錯和伸縮性等所有的知識。
本書適閤想深入學習MongoDB的開發人員,主要關注MongoDB數據庫。
Kyle Banker在MongoDB開發團隊之後,就職於一傢創業公司。
Peter Bakkum就職於MongoDB企業版開發團隊。
Shaun Verch 就職於MongoDB核心服務器團隊。
Doug Garrett是MongoDB大數據分析創新大奬的獲得者;軟件架構師。
Tim Hawkins是Yahoo歐洲搜索工程部門的領導。
學習、實踐和開發MongoDB的完美手冊
—Jeet Marwah Acer Inc.
MongoDB數據庫開發和數據建模學習的必讀書籍
—Hernan Garcia Betterez Inc.
提供瞭MongoDB學習必備的詳細知識。
—Gregor Zurowski 獨立軟件開發顧問
太棒瞭,MongoDB的精華知識
—Hardy Ferentschik Red
目錄
第一部分 入門 1
第1章 全新Web數據庫 3
1.1 為互聯網而生 5
1.2 MongoDB鍵特性 5
1.2.1 文檔數據模型 5
1.2.2 ad hoc查詢 9
1.2.3 索引 9
1.2.4 復製 10
1.2.5 加速與持久化 11
1.2.6 伸縮 13
1.3 核心服務和工具 14
1.3.1 核心服務器 14
1.3.2 JavaScript shell 15
1.3.3 數據庫驅動 15
1.3.4 命令行工具 16
1.4 為什麼是MongoDB? 17
1.4.1 MongoDB與其他數據庫對比 17
1.4.2 使用場景和部署 20
1.5 提示和限製 22
1.6 MongoDB曆史 23
1.7 其他資源 25
1.8 總結 25
第2章 通過JavaScript shell操作MongoDB 27
2.1 Diving into the深入MongoDB shell 28
2.1.1 啓動shell 28
2.1.2 數據庫、集閤和文檔 28
2.1.3 插入和查詢 29
2.1.4 更新文檔 31
2.1.5 刪除數據 35
2.1.6 shell的其他特性 35
2.2 使用索引創建和查詢 36
2.2.1 創建大集閤 36
2.2.2 索引和explain( ) 38
2.3 基本管理 42
2.3.1 獲取數據庫信息 43
2.3.2 命令如何執行 44
2.4 獲取幫助 45
2.5 總結 47
第3章 編寫代碼操作MongoDB 48
3.1 通過Ruby lens連接MongoDB 49
3.1.1 安裝與連接 49
3.1.2 Ruby裏插入文檔數據 50
3.1.3 查詢與光標 51
3.1.4 更新和刪除 52
3.1.5 數據庫命令 53
3.2 驅動工作原理 54
3.3 構建簡單的應用 56
3.3.1 設置 56
3.3.2 搜集數據 57
3.3.3 查看存檔 60
3.4 總結 63
第二部分 MongoDB應用係統開發 65
第4章 麵嚮文檔的數據 67
4.1 schema設計原則 67
4.2 設計電商網站數據模型 69
4.2.1 schema基礎知識 69
4.2.2 用戶和訂單 73
4.2.3 評價 75
4.3 核心概念:數據庫、集閤、文檔 76
4.3.1 數據庫 76
4.3.2 集閤 79
4.3.3 文檔和插入 83
4.4 總結 87
第5章 構建查詢 88
5.1 電子商務查詢 88
5.1.1 産品、類彆和評論 88
5.1.2 用戶和訂單 91
5.2 MongoDB的查詢語言 92
5.2.1 查詢條件和選擇器 92
5.2.2 查詢選擇 104
5.3 總結 106
第6章 聚閤 107
6.1 聚閤框架概覽 108
6.2 電商聚閤例子 109
6.2.1 商品、類彆和評價 111
6.2.2 用戶和訂單 117
6.3 聚閤管道操作符 120
6.3.1 $project 120
6.3.2 $group 121
6.3.3 $match、$sort、$skip、$limit 123
6.3.4 $unwind 123
6.3.5 $out 124
6.4 重塑文檔 124
6.4.1 字符串函數 125
6.4.2 算術運算函數 126
6.4.3 日期函數 126
6.4.4 邏輯函數 127
6.4.5 集閤操作符 128
6.4.6 其他函數 129
6.5 理解聚閤管道性能 129
6.5.1 聚閤管道選項 130
6.5.2 聚閤框架的explain( )函數 130
6.5.3 allowDiskUse 選項 134
6.5.4 聚閤光標選項 134
6.6 其他聚閤功能 135
6.6.1 .count( )和.distinct( ) 135
6.6.2 map-reduce 136
6.7 總結 138
第7章 更新、原子操作和刪除 140
7.1 文檔更新概要 141
7.1.1 通過替換修改 141
7.1.2 通過操作符修改 142
7.1.3 比較兩個方法 142
7.1.4 決定:替換與操作符 143
7.2 電商數據模型更新 144
7.2.1 商品和目錄 144
7.2.2 評價 148
7.2.3 訂單 150
7.3 原子文檔處理 152
7.3.1 訂單狀態轉換 153
7.3.2 庫存管理 155
7.4 核心要點:MongoDB更新與刪除 160
7.4.1 更新類型與參數選項 160
7.4.2 更新操作符 161
7.4.3 findAndModify命令 169
7.4.4 刪除 169
7.4.5 並發、原子性和隔離 170
7.4.6 更新性能注意事項 171
7.5 復習更新操作符 172
7.6 總結 173
第三部分 精通MongoDB 175
第8章 索引與查詢優化 177
8.1 索引理論 177
8.1.1 精心策劃的實驗 178
8.1.2 核心索引概念 181
8.1.3 B-樹 185
8.2 索引實戰 186
8.2.1 索引類型 186
8.2.2 索引管理 189
8.3 查詢優化 194
8.3.1 找齣慢速查詢 195
8.3.2 檢查慢速查詢 199
8.3.3 查詢模式 217
8.4 總結 219
第9章 文本搜索 220
9.1 文本搜索—不僅僅是模式匹配 221
9.1.1 文本搜索與模式匹配 222
9.1.2 文本搜索與網頁搜索 223
9.1.3 MongoDB文本搜索與專業搜索引擎 225
9.2 下載曼寜圖書類彆數據 228
9.3 定義文本搜索索引 229
9.3.1 文本索引的大小 230
9.3.2 分配索引名字並為集閤裏的所有字段建立索引 231
9.4 基本的文本搜索 232
9.4.1 更復雜的搜索 233
9.4.2 文本搜索分數 235
9.4.3 根據文本搜索分數排序結果 236
9.5 聚閤框架文本搜索 237
9.6 文本搜索語言 240
9.6.1 在索引裏指定語言 241
9.6.2 在文檔裏指定語言 242
9.6.3 在搜索中指定語言 243
9.6.4 可用的語言 245
9.7 總結 245
第10章 WiredTiger與可拔插存儲 246
10.1 可拔插存儲引擎API 246
10.2 WiredTiger 248
10.2.1 切換到WiredTiger 248
10.2.2 遷移數據到WiredTiger 249
10.3 與MMAPv1對比 250
10.3.1 配置文件 251
10.3.2 插入腳本與基準測試腳本 252
10.3.3 插入測試結果 255
10.3.4 讀性能測試腳本 256
10.3.5 讀性能結果 257
10.3.6 測試結論 259
10.4 其他可拔插存儲引擎的例子 260
10.5 高級主題 261
10.5.1 可拔插引擎如何工作? 261
10.5.2 數據結構 263
10.5.3 鎖 265
10.6 總結 265
第11章 復製 267
11.1 復製概覽 267
11.1.1 為什麼復製很重要 268
11.1.2 復製的使用場景和限製 269
11.2 可復製集 270
11.2.1 安裝 270
11.2.2 可復製集群工作原理 277
11.2.3 管理 283
11.3 驅動與復製 291
11.3.1 連接與故障轉移 291
11.3.2 寫關注點 293
11.3.3 讀伸縮 294
11.3.4 標簽 296
11.4 總結 298
第12章 使用分片集群擴展係統 299
12.1 分片集群概述 300
12.1.1 什麼是分片集群 300
12.1.2 什麼時候分片? 301
12.2 理解分片集群的組件 302
12.2.1 分片:存儲應用程序數據 303
12.2.2 mongos路由:路由操作 303
12.2.3 配置服務器:存儲元數據 303
12.3 在分片集群中分散數據 304
12.3.1 分片集群中的數據分散方式 305
12.3.2 分布式數據庫分片 306
12.3.3 集閤分片 306
12.4 構建一個例子分片集群 307
12.4.1 啓動mongod和mongos服務器 308
12.4.2 配置集群 310
12.4.3 分片集閤 311
12.4.4 寫入數據到分片集群 312
12.5 分片集群查詢和建立索引 318
12.5.1 查詢路由 318
12.5.2 分片集群中建立索引 319
12.5.3 分片集群中的explain()工具 320
12.5.4 分片集群中聚閤 322
12.6 選擇分片鍵 322
12.6.1 非平衡寫入(熱點) 323
12.6.2 不可分割的數據塊(粗粒度) 324
12.6.3 糟糕的定位(分片鍵不在查詢中) 325
12.6.4 理想的分片鍵 325
12.6.5 設計摺中(email應用) 326
12.7 生産環境下分片集群 328
12.7.1 配置 328
12.7.2 部署 330
12.7.3 維護 332
12.8 總結 336
第13章 部署與管理 337
13.1 硬件與配置 337
13.1.1 集群拓撲 337
13.1.2 部署環境 339
13.1.3 配置 344
13.2 監控與診斷 346
13.2.1 日誌 346
13.2.2 診斷命令 347
13.2.3 診斷工具 347
13.2.4 監控服務 349
13.2.5 外部監控應用 349
13.3 備份 350
13.3.1 mongodump和mongorestore 350
13.3.2 基於數據文件的備份 351
13.3.3 MMS備份 352
13.4 安全 352
13.4.1 安全環境 353
13.4.2 網絡安全 353
13.4.3 驗證 356
13.4.4 可復製集驗證 359
13.4.5 分片集群驗證 360
13.4.6 企業安全特性 360
13.5 管理任務 360
13.5.1 數據導入和導齣 360
13.5.2 壓縮和修復 361
13.5.3 升級 363
13.6 性能故障排除 363
13.6.1 工作集 363
13.6.2 性能懸崖 364
13.6.3 查詢交互 365
13.6.4 尋求專業幫助 366
13.7 部署檢查列錶 366
13.8 總結 367
附錄A 安裝 368
A.1 安裝 368
A.1.1 生産部署 368
A.1.2 32位和64位 369
A.2 Linux下安裝MongoDB 369
A.2.1 使用預編譯二進製文件安裝 369
A.2.2 使用包管理器 370
A.3 Mac OS X下安裝MongoDB 370
A.3.1 預編譯二進製版本 370
A.3.2 使用包管理器 371
A.4 Windows下安裝MongoDB 372
A.5 從源碼編譯MongoDB 373
A.6 故障排除 373
A.6.1 錯誤的架構 373
A.6.2 不存在的數據目錄 374
A.6.3 缺少權限 374
A.6.4 未綁定端口 374
A.7 基本配置選項 374
A.8 安裝Ruby 376
A.8.1 Linux和Mac OS X 376
A.8.2 Windows 376
附錄B 設計模式 377
B.1 嵌入與引用 377
B.2 一對多 377
B.3 多對多 378
B.4 樹 379
B.5 工作隊列 382
B.6 動態特性 383
B.7 事務 384
B.8 定位與預計算 385
B.9 反模式 386
B.9.1 粗心索引 386
B.9.2 交錯類型 386
B.9.3 單一集閤 386
B.9.4 大型、深嵌文檔 386
B.9.5 一個用戶一個集閤 387
B.9.6 不可分片集閤 387
附錄C 二進製數據和網格文件係統 388
C.1 簡單二進製存儲 388
C.1.1 存儲縮略圖 389
C.1.2 存儲MD5 389
C.2 網格文件 390
C.2.1 Ruby中的GridFS 391
C.2.2 使用mongofiles操作GridFS 393
數據庫是信息時代的基石。與Atlas(微軟1998年發明的Ajax技術)很像,它們默默無聞地支持著我們使用的數字世界。一定要記住,我們的數字交互從評論到推特(美國的微博)搜索和排序,本質上都是與數據庫交互。
這種基本的但是隱藏的功能,讓我通常對數據庫保留一份敬意,與我們穿過懸索橋的感覺不同,通常我們會對汽車保留一份敬畏。
數據庫有許多種形式。書籍的索引以及目錄卡片都是數據庫排序的一種形式,正如為過去Perl程序員設計的特彆結構化文本文件。可能現在最著名的就是復雜的關係型數據庫,它們構成瞭當今世界軟件的基礎。這些關係型數據庫,以及它們的第三範式和SQL接口,仍然穩定地運行著。
在從事Web開發工作幾年後,我就迫切想尋找關係型數據庫的替代品。當我們看到MongoDB以後,真是欣喜若狂。我喜歡用類JSON的數據結構來錶示數據的想法。JSON非常簡單、直觀,而且易於閱讀。MongoDB也使用瞭JSON語言來構建查詢,利於新數據庫的使用和推廣。高級特性如易於復製和分片使得MongoDB更加強大。到目前為止,我已經基於MongoDB構建瞭一些應用,體驗到它的簡便性,我已經徹底“路轉粉”愛上它瞭。
好事多磨。經曆許多坎坷,我加入瞭10gen,一傢專門領導開源數據庫開發的公司。這兩年間,我參與瞭許多客戶端驅動的開發和改進工作,與許多客戶公司閤作。這些經曆讓我收獲頗多,我也希望把一些寶貴的經驗在本書中與大傢分享。
作為持續不斷開發的軟件産品,MongoDB仍然不夠完美,還在持續完善。但是,MongoDB集群已經成功支持瞭成韆上萬的大大小小應用,而且日益成熟。許多開發者已經聽說過它的強大之處,不僅可以創造奇跡,而且能夠帶來快樂。希望它也可以改變你的工作。
這是《MongoDB實戰》的第二版,我希望你能享受閱讀與學習本書的過程。
Kyle Banker
這本書絕對是我最近讀過的最令人興奮的技術書籍之一!《MongoDB實戰(第二版)》的作者在技術深度和講解清晰度上都達到瞭一個非常高的水平。我特彆欣賞書中對 MongoDB 驅動程序使用的細緻闡述,它不僅介紹瞭不同語言的驅動程序 API,還給齣瞭很多使用技巧和最佳實踐,這對於我在應用程序中集成 MongoDB 提供瞭極大的便利。比如,書中關於連接池管理和批量操作的講解,對於提升應用程序的性能非常有幫助。另外,它對 MongoDB 的監控和故障排除也進行瞭深入的探討,介紹瞭常用的監控工具和排查思路,這對於確保數據庫的穩定運行至關重要。我印象特彆深刻的是,書中關於升級和遷移策略的部分,詳細講解瞭如何安全平滑地升級 MongoDB 版本,以及如何進行數據遷移,這對於我們實際運維工作非常有指導意義。總而言之,這本書的實用性和前瞻性都非常強,讓我對 MongoDB 的理解更加立體和深入,絕對是一本值得反復研讀的經典之作。
评分讀完《MongoDB實戰(第二版)》,我感覺自己對 MongoDB 的掌握程度簡直是脫胎換骨!這本書最大的優點在於它的循序漸進和內容全麵。從最開始的安裝配置、基本 CRUD 操作,到後麵更復雜的特性,比如全文搜索、地理空間索引、以及 GridFS 等,幾乎涵蓋瞭 MongoDB 的所有重要功能。而且,作者在講解每個功能時,都會提供大量的代碼示例,並且這些示例都非常貼閤實際開發需求,我可以直接復製粘貼到自己的項目中進行測試和學習。讓我印象深刻的是,書中關於安全性方麵的講解,包括用戶認證、權限管理、以及數據加密等,這些都是構建安全可靠的數據庫應用不可或缺的部分,之前我在這方麵總是感覺有些模棱兩可,看完這本書後,心裏就有瞭底。另外,它還涉及到瞭 MongoDB 的一些高級主題,例如事務和變更數據捕獲(CDC),這讓我對 MongoDB 的能力有瞭更全麵的認知。總而言之,這本書對於任何想要熟練掌握 MongoDB 的開發者來說,都是一本不可多得的寶藏。
评分這本書真的是一次令人驚喜的發現!我之前一直對 MongoDB 感覺有點陌生,雖然知道它很強大,但在實際應用中總有些磕磕絆絆。拿到《MongoDB實戰(第二版)》後,我立刻被它深入淺齣的講解方式吸引瞭。作者並沒有直接拋齣復雜的概念,而是從最基礎的安裝部署開始,一步步引導讀者熟悉 MongoDB 的核心功能。我尤其喜歡其中關於數據建模的部分,它通過大量實際案例,將抽象的概念具象化,讓我對如何設計高效的 MongoDB 數據結構有瞭全新的認識。比如,在處理一對多關係時,書中詳細對比瞭嵌入式文檔和引用數組的優缺點,並給齣瞭具體的場景建議,這對於避免日後齣現性能瓶頸至關重要。而且,書中對聚閤管道的講解也讓我受益匪淺,它提供瞭很多實用的聚閤操作示例,讓我能夠更靈活地對數據進行查詢和分析,不再局限於簡單的 CRUD 操作。整體感覺就是,這本書不僅僅是理論的堆砌,更是實戰經驗的結晶,能夠幫助我快速掌握 MongoDB 的核心技能,解決實際開發中遇到的難題。
评分作為一名有幾年開發經驗的老兵,我一直在尋找一本能夠幫助我深入理解 MongoDB 內部機製的書籍。《MongoDB實戰(第二版)》在這方麵做得相當齣色。它並沒有停留在錶麵 API 的介紹,而是花瞭相當大的篇幅去講解 MongoDB 的架構設計、存儲引擎(特彆是 WiredTiger)的工作原理、以及索引的內部實現機製。這一點對於我來說尤為重要,因為理解瞭這些底層原理,我纔能在遇到性能問題時,有針對性地進行調優,而不是盲目地嘗試各種方法。書中對於復製集和分片集群的講解也非常透徹,不僅介紹瞭它們的配置和管理,還深入剖析瞭它們的工作流程和高可用性保障機製。我特彆欣賞作者在講解過程中,常常會將理論知識與實際運維場景相結閤,比如如何應對節點故障、如何進行擴容縮容等,這些都是在實際工作中經常會遇到的問題,能夠直接幫助我們規避風險。這本書的深度和廣度都達到瞭一個新的高度,讓我對 MongoDB 的理解上升到瞭一個全新的層次,絕對是數據庫工程師的案頭必備。
评分我是一名長期使用關係型數據庫的開發者,在轉嚮 NoSQL 領域時,MongoDB 成為瞭我的首選。最初接觸《MongoDB實戰(第二版)》時,我有些擔心它的內容會過於理論化,或者與我原有的關係型數據庫思維方式格格不入。然而,這本書的講解方式完全打消瞭我的顧慮。作者非常善於用通俗易懂的語言,解釋 MongoDB 的核心概念,並且經常會將 MongoDB 的特性與關係型數據庫進行對比,這對於我這樣的“老派”開發者來說,非常有幫助。比如,在講解文檔模型時,作者會分析文檔嵌套的優勢和劣勢,以及與錶連接的區彆,讓我能夠更好地理解 MongoDB 的數據存儲邏輯。書中對於查詢優化和索引選擇的建議也十分實用,讓我能夠寫齣更高效的查詢語句,避免瞭常見的性能陷阱。而且,這本書還涉及到瞭 MongoDB 在不同場景下的應用,例如大數據分析、實時推薦係統等,這拓寬瞭我的視野,讓我看到瞭 MongoDB 更廣闊的應用前景。
评分一起买的,太多,一直好评吧,书好不好得看你自己懂不懂事
评分还不错 挺好的 一直在京东买东西 方便 送货快
评分真的很好真的很好真的很好
评分据同事说 错误太多
评分好书,既可以做入门,又可以做工具书参考
评分还没开始看,不过质量很好,最近在使用mongidb,要系统的学习一下了
评分好书 加油努力学习 少年 给力
评分不错的哦!入门级别,高级级别都没有问题的!
评分买了好久,还没看。
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有