hadoop_mongodb入門到項(xiàng)目實(shí)戰(zhàn)_MongoDB權(quán)威指南
本文關(guān)鍵詞:MongoDB權(quán)威指南,由筆耕文化傳播整理發(fā)布。
MongoDB權(quán)威指南
序
10年前,沒人能遇見互聯(lián)網(wǎng)的發(fā)展給關(guān)系型數(shù)據(jù)庫(kù)帶來如此多的挑戰(zhàn)。我在這個(gè)時(shí)期親身經(jīng)歷了在快速發(fā)展的大型互聯(lián)網(wǎng)公司應(yīng)用MySQL這一過程。開始時(shí)只有很少的數(shù)據(jù),一臺(tái)服務(wù)器就可以了。然后就得建立復(fù)制備份,以便應(yīng)對(duì)大量的讀取和不時(shí)的宕機(jī)。用不了多長(zhǎng)時(shí)間,就得加一個(gè)緩存層,調(diào)整所有的查詢,投入更多的硬件。
最后,你會(huì)發(fā)現(xiàn)自己需要將數(shù)據(jù)切分到多個(gè)集群上,重新構(gòu)建大量的應(yīng)用邏輯以適應(yīng)這種切分。之后不久,你就發(fā)現(xiàn)被自己數(shù)個(gè)月前設(shè)計(jì)的數(shù)據(jù)庫(kù)結(jié)構(gòu)限制住了。
怎么會(huì)呢?集群中大量的數(shù)據(jù)需要更改schema,這會(huì)花費(fèi)很長(zhǎng)時(shí)間,也需要DBA投入相當(dāng)多的寶貴時(shí)間在上面。在代碼中處理要簡(jiǎn)單一些。但也需要小型團(tuán)隊(duì)數(shù)月的努力。最后,你會(huì)不斷地拷問自己有沒有更好的方法,或者為什么沒有在數(shù)據(jù)庫(kù)核心提供更多諸如此類的功能呢?
為了應(yīng)對(duì)現(xiàn)在web應(yīng)用的數(shù)據(jù)膨脹,,開源社區(qū)像以往一樣提供了太多的“好方法”了。從內(nèi)存型鍵值型存儲(chǔ)到復(fù)雜的可以使用SQL的MySQL/InnoDB變種,無所不有。但選擇多了做出正確的選擇反而更難了。我自己就研究過其中多種。
MongoDB的實(shí)用性著實(shí)令人著迷。MongoDB并不去迎合所有人的全部需求。它在功能和復(fù)雜性之間取得很好的平衡,并且將原先十分復(fù)雜的任務(wù)大大簡(jiǎn)化。也就是說,它具備支撐今天主流web應(yīng)用的關(guān)鍵功能:索引,復(fù)制,分片,豐富的查詢語法,特別靈活的數(shù)據(jù)模型。與此同時(shí)還不犧牲速度。
秉持MongoDB一樣的風(fēng)格,本書簡(jiǎn)潔明快。MongoDB新手先看第一章簡(jiǎn)介,馬上就能上手。有經(jīng)驗(yàn)的用戶會(huì)得益于本書的廣度和權(quán)威性。對(duì)于客戶端API和高級(jí)的管理話題,如復(fù)制,備份和分片,本書都是權(quán)威參考手冊(cè)。
因?yàn)槲易罱呀?jīng)開始在日常工作中使用MongoDB了,所以我相信本書會(huì)成為從安裝到生產(chǎn)部署分片和復(fù)制集群整個(gè)MongoDB之旅的好伙伴。任何想仔細(xì)研究使用MongoDB的人都會(huì)需要這本重要的參考書。
——Jeremy Zawodny,Craigslist軟件工程師
目錄
第1 章 簡(jiǎn)介 1
1.1 豐富的數(shù)據(jù)模型 1
1.2 容易擴(kuò)展 1
1.3 豐富的功能 2
1.4 不犧牲速度 3
1.5 簡(jiǎn)便的管理 3
1.6 其他內(nèi)容 3
第2 章 入門 5
2.1 文檔 5
2.2 集合 6
2.2.1 無模式 6
2.2.2 命名 7
2.3 數(shù)據(jù)庫(kù) 8
2.4 啟動(dòng)MongoDB 9
2.5 MongoDB Shell 10
2.5.1 運(yùn)行shell 10
2.5.2 MongoDB 客戶端 11
2.5.3 shell 中的基本操作 11
2.5.4 使用shell 的竅門 13
2.6 數(shù)據(jù)類型 15
2.6.1 基本數(shù)據(jù)類型 15
2.6.2 數(shù)字 17
2.6.3 日期 18
2.6.4 數(shù)組 19
2.6.5 內(nèi)嵌文檔 19
2.6.6 _id 和ObjectId 20
第3 章 創(chuàng)建、更新及刪除文檔 23
3.1 插入并保存文檔 23
3.1.1 批量插入 23
3.1.2 插入:原理和作用 24
3.2 刪除文檔 24
3.3 更新文檔 25
3.3.1 文檔替換 26
3.3.2 使用修改器 27
3.3.3 Upsert 36
3.3.4 更新多個(gè)文檔 38
3.3.5 返回已更新的文檔 38
3.4 瞬間完成 41
3.4.1 安全操作 41
3.4.2 捕獲“常規(guī)”錯(cuò)誤 42
3.5 請(qǐng)求和連接 43
第4 章 查詢 45
4.1 find 簡(jiǎn)介 45
4.1.1 指定返回的鍵 46
4.1.2 限制 46
4.2 查詢條件 47
4.2.1 查詢條件 47
4.2.2 OR 查詢 47
4.2.3 $not 48
4.2.4 條件句的規(guī)則 49
4.3 特定于類型的查詢 49
4.3.1 null 49
4.3.2 正則表達(dá)式 50
4.3.3 查詢數(shù)組 51
4.3.4 查詢內(nèi)嵌文檔 53
4.4 $where 查詢 55
4.5 游標(biāo) 56
4.5.2 避免使用skip 略過大量結(jié)果 58
4.5.3 高級(jí)查詢選項(xiàng) 60
4.5.4 獲取一致結(jié)果 61
4.6 游標(biāo)內(nèi)幕 63
第5 章 索引 65
5.1 索引簡(jiǎn)介 65
5.1.1 擴(kuò)展索引 67
5.1.2 索引內(nèi)嵌文檔中的鍵 68
5.1.3 為排序創(chuàng)建索引 68
5.1.4 索引名稱 69
5.2 唯一索引 69
5.2.1 消除重復(fù) 69
5.2.2 復(fù)合唯一索引 70
5.3 使用explain 和hint 70
5.4 索引管理 75
5.5 地理空間索引 76
5.5.1 復(fù)合地理空間索引 78
5.5.2 地球不是二維平面 78
第6 章 聚合 79
6.1 count 79
6.2 distinct 79
6.3 group 80
6.3.1 使用完成器 82
6.3.2 將函數(shù)做為鍵使用 84
6.4 MapReduce 84
6.4.1 例1:找出集合中的所有鍵 85
6.4.2 例2: 網(wǎng)頁(yè)分類 87
6.4.3 MongoDB 和MapReduce 87
第7 章 進(jìn)階指南 91
7.1 數(shù)據(jù)庫(kù)命令 91
7.1.1 命令的工作原理 92
7.1.2 命令參考 92
7.2 固定集合 95
7.2.1 屬性及用法 96
7.2.2 創(chuàng)建固定集合 96
7.2.3 自然排序 97
7.2.4 尾部游標(biāo) 98
7.3 GridFS:儲(chǔ)存文件 99
7.3.1 開始使用GridFS:mongofiles 99
7.3.2 通過MongoDB 驅(qū)動(dòng)程序操作GridFS 100
7.3.3 內(nèi)部原理 100
7.4 服務(wù)器端腳本 101
7.4.1 db.eval 101
7.4.2 存儲(chǔ)JavaScript 腳本 102
7.4.3 安全性 103
7.5 數(shù)據(jù)庫(kù)引用 104
7.5.1 什么是DBRef 104
7.5.2 示例模式 104
7.5.3 驅(qū)動(dòng)對(duì)DBRef 的支持 105
7.5.4 什么時(shí)候該使用DBRef 呢 106
第8 章 管理 107
8.1 啟動(dòng)和停止MongoDB 107
8.1.1 從命令行啟動(dòng) 107
8.1.2 配置文件 109
8.1.3 停止MongoDB 110
8.2 監(jiān)控 110
8.2.1 使用管理接口 110
8.2.2 serverStatus 112
8.2.3 mongostat 113
8.2.4 第三方插件 113
8.3 安全和認(rèn)證 114
8.3.1 認(rèn)證的基礎(chǔ)知識(shí) 114
8.3.2 認(rèn)證的工作原理 115
8.3.3 其他安全考慮 116
8.4 備份和修復(fù) 116
8.4.1 數(shù)據(jù)文件備份 117
8.4.2 mongodump 和mongorestore 117
8.4.3 fsync 和鎖 118
8.4.4 從屬備份 119
8.4.5 修復(fù) 119
第9 章 復(fù)制 121
9.1 主從復(fù)制 121
9.1.1 選項(xiàng) 122
9.1.2 添加刪除源 123
9.2 副本集 124
9.2.1 初始化副本集 125
9.2.2 副本集中的節(jié)點(diǎn) 127
9.2.3 故障切換和主節(jié)點(diǎn)選舉 128
9.3 在從服務(wù)器上執(zhí)行操作 129
9.3.1 讀擴(kuò)展 130
9.3.2 用從節(jié)點(diǎn)做數(shù)據(jù)處理 130
9.4 工作原理 130
9.4.1 oplog 131
9.4.2 同步 131
9.4.3 復(fù)制狀態(tài)和本地?cái)?shù)據(jù)庫(kù) 132
9.4.4 阻塞復(fù)制 132
9.5 管理 133
9.5.1 診斷 133
9.5.2 變更oplog 的大小 134
9.5.3 認(rèn)證復(fù)制 134
第10 章 分片 135
10.1 分片簡(jiǎn)介 135
10.2 MongoDB 中的分片 135
10.3 片鍵 137
10.3.1 將已有的集合分片 137
10.3.2 遞增片鍵還是隨機(jī)片鍵 137
10.3.3 片鍵對(duì)操作的影響 138
10.4 建立分片 139
10.4.1 啟動(dòng)服務(wù)器 139
10.4.2 切分?jǐn)?shù)據(jù) 140
10.5 生產(chǎn)配置 140
10.5.1 健壯的配置 141
10.5.2 多個(gè)mongos 141
10.5.3 健壯的片 141
10.5.4 物理服務(wù)器 142
10.6 管理分片 142
10.6.1 配置集合 142
10.6.2 分片命令 143
第11 章 應(yīng)用舉例 145
11.1 化學(xué)品搜索引擎:Java 145
11.2 新聞聚合器:PHP 149
11.3 自定義提交表單:Ruby 154
11.4 實(shí)時(shí)分析: Python 157
附錄A 安裝MongoDB 163
附錄B mongo:MongoDB shell 167
附錄C 深入MongoDB 內(nèi)部 169
樣章下載地址:
posted @
本文關(guān)鍵詞:MongoDB權(quán)威指南,由筆耕文化傳播整理發(fā)布。
本文編號(hào):82171
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/82171.html