MongoDB管理與開發精要

MongoDB管理與開發精要

2.6.1Mon 14.3.1對Mon 15.3.1對Mon

基本信息

作 者:紅丸
出 版 社:機械工業出版社
出版時間:2012-1-1
版 次:1
印刷時間:2012-1-1
紙 張:膠版紙
印 次:1
I S B N:9787111364795
包 裝:平裝

圖書摘要

全書共分為六個部分:基礎篇首先介紹了MongoDB的功能特點和實用場合,然後講解了MongoDB的基本使用和操作;高級篇詳細講解了MongoDB的高級查詢、高級更新和高級特性;管理篇講解了各種常用的管理工具、管理命令和訪問控制;性能篇講解了索引最佳化和性能監控;架構篇講解了replica Sets複製集、sharding分片以及二者的結合;開發篇講解了MongoDB的C#開發接口和Java開發接口。

圖書特色

最初,本書的部分初稿在幾大IT技術社區“瘋傳”,被社區網友視為學習MongoDB的“寶典”。由於受到社區網友的熱捧,在初稿的基礎上,作者對本書內容進行了系統化的補充,使原有的內容獲得了大大的完善。本書的第一大特點是實用性和可操作性強,作者是國內MongoDB領域的先驅和實踐者,本書的所有內容都來自於作者的實踐;本書的第二大特點是內容深入且全面,從MongoDB的使用、管理、維護、性能最佳化,到MongoDB的開發和實現原理,幾乎涵蓋了讀者需要掌握的所有內容。強烈推薦!
—— 51CTO
MongoDB是非關係型資料庫中功能最豐富、最像關係型資料庫的產品之一,因為具有高性能、易於部署、易於使用、存儲數據方便等優勢而深受歡迎。它最大的特點是支持的查詢語言非常強大。從本書的內容可以看出,作者在MongoDB方面有非常多的實踐經驗,而且對MongoDB有非常深入的理解和認識,本書從實踐的角度對MongoDB的方方面面做了透徹的講解,有很大的參考價值。極力推薦!
—— 中國DBA超級論壇
隨著網際網路的發展和新技術的不斷湧現,企業會在實際的套用中使用各種不同的方案和產品來存放數據。由C++語言編寫的MongoDB是一個基於分散式檔案存儲的資料庫,能夠為Web套用提供可擴展的高性能數據存儲解決方案。它是一個介於關係資料庫和非關係資料庫之間的NoSQL產品,具有幾乎所有關係型資料庫的功能。它會使你的開發和部署很容易,天然具有分散式和failover的功能,深客群多公司喜愛。本書實戰性較強,涵蓋MongoDB的各個方面,作者通過大量實例講解了如何使用MongoDB,以及如何解決在使用過程中遇到的各種問題。
——楊海朝 新浪網(中國)技術有限公司首席DBA/新浪微博資料庫負責人
MongoDB是一個開源、高性能、面向集合存儲的分散式文檔存儲資料庫。著名的線上詞典和語言庫網站Wordnik大量使用了MongoDB對其數據進行存儲。而令我印象最深的是,MongoDB使用作業系統的記憶體映射檔案方式來管理記憶體,以此來簡化記憶體的管理工作,同時提高了Cache的性能。本書作者多年從事一線的MongoDB管理與開發,相信通過他的介紹,不論是未曾接觸過MongoDB的用戶,抑或是已經在實際工作中使用MongoDB的用戶,都會受益匪淺。
——姜承堯 資深MySQL資料庫專家,著有《MySQL技術內幕innodb存儲引擎》
MongoDB在Key-Value存儲方式和傳統的關係型資料庫系統之間架起了一座橋樑,集兩者的優勢於一身。對於正在開發創新型網際網路套用的公司來說,非常適合使用MongoDB,因為它能大大提高產品的開發速度,使企業滿足用戶迅速變化的需求。在國外,Disney、SAP、Forbes、SourceForge和github等知名公司都採用了MongoDB作為其數據存儲方案;在國內,百度、新浪、淘寶、盛大、視覺中國、大眾點評網和又拍網等眾多知名網際網路公司也在套用MongoDB。
雖然MongoDB這一“野心勃勃”的NoSQL新貴讓很多初學者望而卻步,但是通過本書你會發現,MongoDB的學習也可以如此輕鬆。本書沒有教條式地去深究MongoDB的語法細節,也沒有重點地介紹各種高深的MongoDB編程技巧,而是本著簡單實用的原則,通俗易懂地講解了MongoDB中最重要、最實用的知識。
本書強調動手實戰,以風趣幽默的語言和一系列生動的實戰案例系統地講解了MongoDB的核心技術和擴展技術。在遵循技術嚴密性的同時,還在容易產生錯誤、不易理解的知識點上配備了翔實且又具有說服力的開發情景截圖,循序漸進、深入淺出。只要大家結合書中的案例親自動手實驗,一定能快速掌握MongoDB知識,從而獨立完成日常運行、維護、管理和程式開發工作。

作者簡介

“紅丸”,資深資料庫專家,國內MongoDB領域的先驅之一,積累了豐富的實戰經驗。精通MySQL、SQL Server和DB2等大中型資料庫的運維和管理,還擅長Java和C#等技術。此外,他對Redis和分散式計算技術也有一定的研究。活躍於ITPUB等技術社區,發表和分享了大量關於MongoDB和Redis的技術文章,深受社區歡迎。

前言

為什麼要寫這本書
2005年我開始從事J2EE(現在叫Java EE)開發,一年以後正式將精力放在資料庫領域,並於當年正式成為DBA(資料庫管理員),此後一直從事資料庫的管理工作。從DB2 V8到DB2 V9,從SQL Server 2000到SQL Server 2008,從MySQL到MongoDB,6年的時間奮鬥在DBA這個領域,至今我依然深愛著這個職業。在以往的日子裡,每當遇到疑難問題時,我總是非常耐心地去處理,並享受著解決問題帶來的喜悅。
2010年,隨著Web 2.0網站的大批湧現,NoSQL資料庫逐漸流行起來。與傳統的關係型資料庫相比,NoSQL資料庫具有操作簡單、完全免費、源碼公開、隨時下載等特點,並可以用於各種商業目的。這使NoSQL資料庫產品廣泛套用於各種大型入口網站和專業網站,大大降低了企業運營成本。同時,NoSQL資料庫對傳統的關係型資料庫造成了一定的衝擊,例如,開源資料庫代表MySQL已經將Memcached產品嵌入其解決方案中,與此同時,各種商業資料庫也在不斷推出列式數據處理方案來彌補自身的不足。由此可見,NoSQL的良好發展態勢已經是不可逆轉的了,它必將主宰未來的網際網路資料庫市場。MongoDB正是這些NoSQL產品中的傑出代表。
在這種背景下,2010年,機械工業出版社華章公司的楊福川準備籌劃一本關於MongoDB實戰方面的書,我正好樂意與大家一起分享我多年工作實踐的積累以及資料庫開發、最佳化、管理和維護經驗,於是我們一拍即合。
此後,我開始蟄伏在北京的某個角落,從日出東方到夕陽西下,經歷了不知多少個日日夜夜。看過漫天塵土的春季,浸泡在炎熱的夏季,走過落葉紛飛的秋季,不知不覺進入了冬季。漫漫長路,本書終於塵埃落定。
本書全面介紹了MongoDB資料庫,重在實戰演練,學習思路也是我親身的學習經歷。出於嚴謹的考慮,本書中的例子都在測試環境上調試通過。這耗費了我大量的時間和精力,但是,如果能夠幫助讀者以最快的速度掌握一門技術,一切努力都是值得的。
讀者對象
全書內容循序漸進、由淺入深,既可以引導初學者入門,又可以幫助具備一定基礎的IT技術從業人員進一步提高技術水平,力求不同層次的讀者都能從本書中受益。本書的讀者對象包括:
q 準備擴展MongoDB知識的開發人員
q 有興趣了解MongoDB的DBA或資料庫應用程式編程人員
q 正在學習資料庫課程的計算機相關專業的學生
q 想使用MongoDB實現快速查詢的技術人員
q 想進一步了解MongoDB的“發燒友”
q 資料庫管理層和技術決策者
本書特點
本書針對IT技術人員在工作中的必備知識與技能,精心安排了篇章結構。本書從基礎入手,通過細緻入微的內容組織,配以深入淺出的文字論述,以實際項目套用為背景,力圖讓讀者從多個角度對MongoDB有深入的認識和理解。
本書最大的特點是實戰性強,利用豐富的實例對MongoDB進行了詳細的介紹。
本書系統全面,涵蓋了MongoDB開發、最佳化、管理和維護的方方面面。從寫作風格上看,本書沒有過多討論抽象的理論,而是通過豐富的實例來幫助讀者理解套用MongoDB資料庫時會遇到的各種問題及其解決方法,使讀者能夠很輕鬆地部署測試環境,並且熟練地掌握MongoDB資料庫的各種使用技巧。
如何閱讀本書
本書主要以引導讀者思考、體會和實踐為目的,通過實例讓讀者以最快的速度全面接觸MongoDB。在閱讀本書的時候,最好有一個可以實踐的MongoDB測試環境,通過自己動手實踐來加深認識、真正理解。對於管理層和技術決策者來說,可能沒有太多時間進行大量的測試和實踐,學習解決問題的思路就可以了。
本書分為6個部分,共15章:
第一部分 基礎篇(第1章~第2章):主要講解MongoDB的基礎理論和基本操作。通過這部分內容的學習,讀者可以對MongoDB進行簡單操作。
第二部分 高級篇(第3章~第5章):主要講解MongoDB的高級技術,例如高級查詢、高級更新、高級功能的套用。通過這部分內容的學習,讀者可以熟練地套用MongoDB來完成日常的業務需求。
第三部分 管理篇(第6章~第8章):主要講解MongoDB常用的運行和維護管理工具,例如數據的導入導出、數據的備份和恢復、數據的克隆和複製,以及與安全相關的實用技術。通過這部分內容的學習,讀者應該具備一個MongoDB DBA所具有的全部技能。
第四部分 性能篇(第9章~第10章):主要講解MongoDB的索引、最佳化、性能監控技術。通過這部分內容的學習,讀者可以具備MongoDB調優的能力。
第五部分 架構篇(第11章~第13章):主要講解MongoDB的高可用架構的細節,如主從複製、Sharding(分片)等。通過這部分內容的學習,讀者可以獨立設計MongoDB套用系統架構。
第六部分 開發篇(第14章~第15章):主要講解如何用C#和Java來操作MongoDB資料庫。通過這部分內容的學習,讀者可以將C#或Java開發技術與MongoDB資料庫結合起來,完成特定套用系統的開發。

勘誤和支持

由於作者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。讀者可以將書中的錯誤或者學習本書時遇到的問題傳送到ChinaDBA(中國DBA超級論壇),我將儘量提供最滿意的解答,期待得到你們的真摯反饋。

目錄

前言
第一部分 基 礎 篇
第1章 認識MongoDB / 2
1.1 NoSQL簡介 / 2
1.1.1 產生背景 / 2
1.1.2 NoSQL的種類及其特性 / 4
1.1.3 NoSQL特點 / 8
1.1.4 發展現狀 / 8
1.2 初識MongoDB / 9
1.2.1 特點及功能 / 10
1.2.2 適用場合 / 11
1.3 MongoDB實際套用案例 / 12
1.3.1 國內案例 / 12
1.3.2 國外案例 / 12
1.4 本章小結 / 13
第2章 快速入門 / 14
2.1 體系結構 / 14
2.1.1 數據邏輯結構 / 14
2.1.2 數據存儲結構 / 15
2.1.3 日誌系統 / 17
2.1.4 元數據的存儲 / 18
2.1.5 數據類型 / 19
2.2 MongoDB的安裝和配置 / 22
2.2.1 在Windows平台下的安裝和配置 / 22
2.2.2 在Linux平台下的安裝和配置 / 23
2.3 啟動資料庫 / 25
2.3.1 命令行方式 / 25
2.3.2 配置檔案方式 / 25
2.3.3 Daemon方式 / 26
2.3.4 mongod參數方式 / 26
2.4 停止資料庫 / 27
2.4.1 Ctrl+C組合鍵 / 27
2.4.2 shutdownServer()指令 / 28
2.4.3 UNIX系統指令 / 28
2.5 運算元據庫 / 29
2.5.1 連線資料庫 / 29
2.5.2 插入記錄 / 29
2.5.3 查詢記錄 / 31
2.5.4 修改記錄 / 34
2.5.5 刪除記錄 / 34
2.6 常用GUI管理工具 / 34
2.6.1 MongoVUE / 34
2.6.2 rockmongo / 35
2.6.3 MongoHub / 36
2.7 本章小結 / 37
第二部分 高 級 篇
第3章 高級查詢 / 40
3.1 查詢操作符 / 40
3.2 查詢語法 / 46
3.2.1 數組內容的查詢 / 47
3.2.2 內嵌文檔的查詢 / 47
3.2.3 正則表達式匹配 / 48
3.2.4 $where查詢 / 48
3.3 聯合查詢 / 49
3.3.1 簡單手工關聯 / 49
3.3.2 DBRef方式關聯 / 50
3.4 游標和存儲過程 / 51
3.4.1 游標 / 51
3.4.2 存儲過程 / 52
3.5 本章小結 / 53
第4章 高級更新 / 55
4.1 數據更新命令詳解 / 55
4.1.1 update命令 / 55
4.1.2 save命令 / 56
4.2 數據更新操作符 / 57
4.3 本章小結 / 62
第5章 高級特性 / 63
5.1 Capped Collection集合 / 63
5.1.1 創建Capped Collection / 63
5.1.2 Capped Collection的用途 / 64
5.1.3 注意事項 / 64
5.2 GridFS規範 / 65
5.2.1 如何實現海量存儲 / 65
5.2.2 命令行工具 / 66
5.3 MapReduce編程模型 / 68
5.3.1 Map進行分組 / 69
5.3.2 Reduce聚合計算 / 69
5.3.3 Result獲取結果 / 70
5.3.4 finalize格式化輸出 / 70
5.3.5 Options定製輸出 / 71
5.4 本章小結 / 72
第三部分 管 理 篇
第6章 管理工具集 / 74
6.1 數據遷移 / 74
6.1.1 導出工具mongoexport / 75
6.1.2 導出工具mongodump / 78
6.1.3 導入工具mongoimport / 79
6.2 數據的備份和恢復 / 81
6.2.1 備份工具mongodump / 81
6.2.2 恢復工具mongorestore / 84
6.3 命令行操作 / 86
6.3.1 通過eval參數執行指定語句 / 86
6.3.2 執行指定檔案中的內容 / 87
6.4 本章小結 / 88
第7章 管理命令 / 89
7.1 克隆collection / 90
7.1.1 遠程克隆collection / 90
7.1.2 本地克隆collection / 94
7.2 複製資料庫 / 94
7.2.1 遠程複製資料庫 / 94
7.2.2 本地複製資料庫 / 96
7.3 刷新磁碟 / 97
7.4 捕獲異常 / 98
7.4.1 返回異常信息 / 98
7.4.2 阻塞客戶端 / 99
7.5 進程控制 / 99
7.5.1 查看活動進程 / 99
7.5.2 結束進程 / 100
7.6 驗證collection的有效性 / 100
7.7 數據壓縮 / 101
7.8 本章小結 / 102
第8章 訪問控制 / 103
8.1 限制特定IP位址訪問 / 104
8.2 設定監聽連線埠 / 104
8.3 使用用戶名和口令登錄 / 105
8.3.1 建立系統root用戶 / 107
8.3.2 建立指定許可權用戶 / 108
8.3.3 刪除指定用戶 / 109
8.4 本章小結 / 110
第四部分 性 能 篇
第9章 索引及最佳化 / 112
9.1 MongoDB索引概述 / 112
9.2 索引操作 / 113
9.2.1 基礎索引 / 113
9.2.2 靜默方式創建索引 / 115
9.2.3 文檔索引 / 115
9.2.4 組合索引 / 116
9.2.5 唯一索引 / 116
9.2.6 強制使用索引 / 117
9.2.7 刪除索引 / 119
9.2.8 重建索引 / 119
9.2.9 explain查看執行計畫 / 119
9.3 最佳化器Profiler / 121
9.3.1 開啟Profiler功能 / 121
9.3.2 查詢Profiler記錄 / 122
9.4 性能最佳化概述 / 123
9.4.1 性能最佳化的原則 / 123
9.4.2 影響性能的因素 / 124
9.5 常用的最佳化方案 / 124
9.5.1 創建索引 / 124
9.5.2 限定返回結果條數 / 125
9.5.3 只查詢用到的欄位 / 125
9.5.4 採用Capped Collection / 126
9.5.5 採用Server Side Code Execution命令集 / 126
9.5.6 使用hint / 127
9.5.7 採用Profiler / 127
9.6 本章小結 / 128
第10章 性能監控 / 129
10.1 mongosniff工具 / 129
10.2 mongostat工具 / 131
10.3 db.serverStatus命令 / 132
10.4 db.stats命令 / 134
10.5 HTTP監控接口 / 135
10.6 本章小結 / 136
第五部分 架 構 篇
第11章 複製集 / 138
11.1 Replica Sets架構 / 138
11.2 部署Replica Sets / 139
11.3 主從操作日誌 / 144
11.4 主從配置信息 / 146
11.5 管理Replica Sets / 147
11.5.1 主從切換 / 147
11.5.2 讀寫分離 / 149
11.5.3 故障轉移 / 151
11.5.4 增減節點 / 153
11.6 本章小結 / 160
第12章 分片 / 161
12.1 Sharding簡介 / 161
12.1.1 Sharding的特點 / 161
12.1.2 Sharding架構 / 162
12.2 構建一個簡單的Sharding Cluster / 163
12.2.1 啟動Shard Server / 163
12.2.2 啟動Config Server / 164
12.2.3 啟動Route Process / 164
12.2.4 配置Sharding / 164
12.2.5 驗證Sharding / 165
12.3 維護Sharding / 167
12.3.1 列出所有的Shard Server / 168
12.3.2 查看Sharding信息 / 168
12.3.3 判斷是否是Sharding / 169
12.3.4 對現有的表執行Sharding / 169
12.3.5 新增Shard Server / 171
12.3.6 移除Shard Server / 172
12.4 本章小結 / 175
第13章 Replica Sets + Sharding方案 / 176
13.1 Replica Sets+Sharding架構 / 176
13.2 搭建一個高可用架構 / 177
13.2.1 創建數據目錄 / 177
13.2.2 配置Replica Sets / 178
13.2.3 配置3台Config Server / 181
13.2.4 配置3台Route Process / 181
13.2.5 配置Shard Cluster / 181
13.2.6 驗證Sharding / 182
13.3 本章小結 / 183
第六部分 開 發 篇
第14章 C#開發接口 / 186
14.1 C#快速入門 / 186
14.1.1 下載驅動和開發環境 / 186
14.1.2 訪問控制 / 188
14.1.3 C#對資料庫的基礎操作 / 189
14.2 C#驅動一致性 / 194
14.3 C#常用操作 / 195
14.3.1 對MongoDB實例的操作 / 195
14.3.2 對用戶的操作 / 198
14.3.3 對collection的操作 / 202
14.3.4 對索引的操作 / 208
14.4 C#高級查詢 / 211
14.4.1 判斷列名是否存在 / 211
14.4.2 比較運算符 / 213
14.4.3 邏輯運算符 / 221
14.4.4 正則表達式查詢 / 223
14.4.5 跳過查詢 / 224
14.5 用C#操作GridFS / 225
14.5.1 插入數據 / 225
14.5.2 查詢數據 / 226
14.5.3 讀取並保存數據 / 227
14.5.4 刪除數據 / 228
14.6 本章小結 / 229
第15章 Java開發接口 / 230
15.1 Java快速入門 / 230
15.1.1 下載驅動和開發環境 / 230
15.1.2 訪問控制 / 232
15.1.3 Java對資料庫的基礎操作 / 233
15.2 Java驅動一致性 / 237
15.3 Java常用操作 / 238
15.3.1 對MongoDB實例的操作 / 238
15.3.2 對用戶的操作 / 241
15.3.3 對collection的操作 / 243
15.3.4 對索引的操作 / 250
15.4 Java高級查詢 / 253
15.4.1 通過游標獲取所有document / 253
15.4.2 比較運算符 / 254
15.4.3 邏輯運算符 / 263
15.4.4 正則表達式查詢 / 264
15.4.5 跳過查詢 / 265
15.5 用Java操作GridFS / 266
15.5.1 插入數據 / 266
15.5.2 查詢數據 / 267
15.5.3 讀取並保存數據 / 268
15.5.4 刪除數據 / 269
15.6 本章小結 / 270

相關詞條

熱門詞條

聯絡我們