MongoDB管理與開發精要

hzbook2008發表於2012-08-06

MongoDB管理與開發精要

 

媒體評論

  最初,本書的部分初稿在幾大IT技術社群“瘋傳”,被社群網友視為學習MongoDB的“寶典”。由於受到社群網友的熱捧,在初稿的基礎上,作者對本書內容進行了系統化的補充,使原有的內容獲得了大大的完善。本書的第一大特點是實用性和可操作性強,作者是國內MongoDB領域的先驅和實踐者,本書的所有內容都來自於作者的實踐;本書的第二大特點是內容深入且全面,從MongoDB的使用、管理、維護、效能最佳化,到MongoDB的開發和實現原理,幾乎涵蓋了讀者需要掌握的所有內容。強烈推薦!——51CTO(,中國領先的IT技術社群)
  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管理與開發精要》內容有三大特點:系統而全面,內容包含mongodb開發、管理、維護和效能最佳化等方方面面;詳細而深入,不僅對mongodb的開發和管理方法進行了詳盡的講解,而且還對mongodb的工作機制進行了深入的剖析;注重實戰,嘗試透過實踐中的案例來幫助讀者理解使用mongodb資料庫時遇到的各種問題的癥結之所在,並給出瞭解決方案。
  本書一共分為六篇:一基礎篇,主要講解了mongodb的基礎理論和基本操作,學習完這部分內容可以掌握mongodb的基本操作;二高階篇,講解了高階查詢、高階更新、高階功能應用等mongodb的高階技術,掌握這部分內容後就能熟練地應用mongodb來完成日常的工作;三管理篇,詳細介紹了mongodb常用的運維管理工具、各種管理命令以及訪問控制方面的技術,掌握這部分內容後就能具備一位mongodb dba所具有的全部技能;四效能篇,詳細闡述了mongodb的索引、最佳化,以及效能監控方面的知識,這部分內容將使讀者具備對mongodb進行調優的能力;五架構篇,重點講解了主從複製、分片等高可用架構的細節,掌握這部分內容後就可以獨立設計出mongodb應用系統的架構;六開發篇,講解了如何用c#和java來操作mongodb資料庫,掌握這部分內容後就可以將c#和java開發技術與mongodb資料庫結合起來,從而完成特定應用系統的開發
 

前言

  為什麼要寫這本書
  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技術從業人員進一步提高技術水平,力求不同層次的讀者都能從本書中受益。本書的讀者物件包括:
   準備擴充套件MongoDB知識的開發人員
   有興趣瞭解MongoDB的DBA或資料庫應用程式程式設計人員
   正在學習資料庫課程的計算機相關專業的學生
   想使用MongoDB實現快速查詢的技術人員
   想進一步瞭解MongoDB的“發燒友”
   資料庫管理層和技術決策者
  本書特點
  本書針對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資料庫結合起來,完成特定應用系統的開發。
  勘誤和支援
  由於作者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。讀者可以將書中的錯誤或者學習本書時遇到的問題傳送到mongodb_ book@126.com或者登入ChinaDBA.net(中國DBA超級論壇),我將盡量提供最滿意的解答,期待得到你們的真摯反饋。
  致謝
  在本書的編寫過程中,得到了家人、同事和朋友的支援與幫助,在這裡表示衷心的感謝。
  感謝我的爸爸、媽媽和我的愛人,你們對我工作的大力支援與鼓勵,才使本書順利完成。
  感謝麒麟遊戲副總裁魏峰先生和湯柯先生,是你們最先為我引入NoSQL和MongoDB的概念,同時支援我大膽地在專案上應用和實踐。
  謹向楊福川先生和白宇女士致以特別的感謝,他們在本書出版過程中給予我指導和鼓勵,並且與我共同完成此書。
  王文龍(紅丸)
  2011年11月於中國北京 
 

目錄

《mongodb管理與開發精要》
前言
第一部分 基 礎 篇
第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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-739993/,如需轉載,請註明出處,否則將追究法律責任。

相關文章