日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
MongoDB游記之輕松入門到進(jìn)階圖書
人氣:26

MongoDB游記之輕松入門到進(jìn)階

MongoDB作為*受歡迎的文檔存儲類型的NoSQL數(shù)據(jù)庫,操作技巧大展現(xiàn)

內(nèi)容簡介

MongoDB作為受歡迎的文檔存儲類型的NoSQL數(shù)據(jù)庫,越來越多的公司在使用它。本書以符合初學(xué)者的思維方式,系統(tǒng)、層層遞進(jìn)地介紹了MongoDB數(shù)據(jù)庫,通過本書的學(xué)習(xí),讀者能夠勝任實(shí)際工作環(huán)境中MongoDB的相關(guān)開發(fā)管理工作。 本書共分四個(gè)部分23章,部分講解了MongoDB的相關(guān)概念和原理以及其內(nèi)部工作機(jī)制,可以讓讀者對MongoDB有一個(gè)的認(rèn)識。第二部分和第三部分從應(yīng)用角度,結(jié)合實(shí)例講解了MongoDB的安裝、配置、部署、開發(fā)、集群部署和管理等在實(shí)際工作中會用到的技能。第四部分是經(jīng)驗(yàn)部分,這部分是作者多年使用MongoDB后總結(jié)的技巧,對讀者在工作中使用MongoDB有極大的參考價(jià)值。 本書適合MongoDB的初學(xué)者,希望深入了解MongoDB安裝部署、開發(fā)優(yōu)化的軟件工程師,希望深入了解MongoDB管理、集群擴(kuò)展的數(shù)據(jù)運(yùn)維管理員,以及任何對MongoDB相關(guān)技術(shù)感興趣的讀者。

編輯推薦

講解MongoDB的相關(guān)知識,使讀者對MongoDB有的認(rèn)識以直接、細(xì)致的方式指導(dǎo)讀者輕松掌握MongoDB的安裝、部署與使用以實(shí)際工作框架為例子進(jìn)行講解,使讀者真正能勝任MongoDB的開發(fā)管理工作由淺入深,層層遞進(jìn),路線清晰

作者簡介

張澤泉,畢業(yè)于四川理工學(xué)院,數(shù)據(jù)工程師、中級職稱軟件設(shè)計(jì)師、CSDN博客專家。致力于數(shù)據(jù)采集、數(shù)據(jù)分析、數(shù)據(jù)分布式運(yùn)算架構(gòu)等技術(shù)的應(yīng)用與研究。多年一線MongoDB數(shù)據(jù)庫存儲、部署、開發(fā)經(jīng)驗(yàn),以及將其應(yīng)用于房地產(chǎn)數(shù)據(jù)分析、金融數(shù)據(jù)分析、基因數(shù)據(jù)分析等領(lǐng)域行業(yè)經(jīng)驗(yàn)。

目錄

及時(shí)部分 基礎(chǔ)與架構(gòu)理論篇

第1章 初識MongoDB 3

1.1 MongoDB簡介 3

1.1.1 MongoDB是什么 3

1.1.2 MongoDB的歷史 3

1.1.3 MongoDB的發(fā)展情況 4

1.1.4 哪些公司在用MongoDB 5

1.2 MongoDB的特點(diǎn) 5

1.3 MongoDB應(yīng)用場景 6

1.3.1 MongoDB適用于以下場景 6

1.3.2 MongoDB不適合的場景 7

第2章 MongoDB的結(jié)構(gòu) 8

2.1 數(shù)據(jù)庫 8

2.1.1 數(shù)據(jù)庫的層次 8

2.1.2 數(shù)據(jù)的命名 8

2.1.3 自帶數(shù)據(jù)庫 9

2.2 普通集合 9

2.2.1 集合是什么 9

2.2.2 集合的特點(diǎn)—無模式 9

2.2.3 集合命名 9

2.2.4 子集合 10

2.3 固定集合(Capped) 10

2.3.1 Capped簡介 10

2.3.2 Capped屬性特點(diǎn) 10

2.3.3 Capped應(yīng)用場景 10

2.4 文檔 11

2.4.1 文檔簡介 11

2.4.2 文檔的特點(diǎn) 11

2.4.3 文檔的鍵名命名規(guī)則 11

2.5 數(shù)據(jù)類型 11

2.5.1 基本數(shù)據(jù)類型 11

2.5.2 數(shù)字類型說明 12

2.5.3 日期類型說明 14

2.5.4 數(shù)組類型說明 16

2.5.5 內(nèi)嵌文檔類型說明 16

2.5.6 _id鍵和ObjectId對象說明 17

2.5.7 二進(jìn)制類型說明——小文件存儲 19

2.6 索引簡介 19

2.6.1 什么是索引 19

2.6.2 索引的作用 20

2.6.3 普通索引 20

2.6.4 索引 20

2.6.5 地理空間索引 21

第3章 MongoDB的大文件存儲規(guī)范GridFs 22

3.1 GridFS簡介 22

3.2 GridFS原理 23

3.3 GridFS應(yīng)用場景 24

3.4 GridFS的局限性 24

第4章 MongoDB的分布式運(yùn)算模型MapReduce 25

4.1 MapReduce簡介 25

4.2 MapReduce原理 26

4.3 MapReduce應(yīng)用場景 28

第5章 MongoDB存儲原理 29

5.1 存取工作流程 29

5.2 存儲引擎 30

5.2.1 MMAP引擎 31

5.2.2 MMAPv1引擎 31

5.2.3 WiredTiger引擎 32

5.2.4 In-Memory 33

5.2.5 引擎的選擇 34

5.2.6 未來的引擎 34

第6章 了解MongoDB復(fù)制集 35

6.1 復(fù)制集簡介 35

6.1.1 主從復(fù)制和副本集 35

6.1.2 副本集的特點(diǎn) 38

6.2 副本集工作原理 38

6.2.1 oplog(操作日志) 38

6.2.2 數(shù)據(jù)同步 39

6.2.3 復(fù)制狀態(tài)和本地?cái)?shù)據(jù)庫 39

6.2.4 阻塞復(fù)制 40

6.2.5 心跳機(jī)制 40

6.2.6 選舉機(jī)制 41

6.2.7 數(shù)據(jù)回滾 42

第7章 了解MongoDB分片 43

7.1 分片的簡介 43

7.2 分片的工作原理 44

7.2.1 數(shù)據(jù)分流 44

7.2.2 chunkSize和塊的拆分 47

7.2.3 平衡器和塊的遷移 47

7.3 分片的應(yīng)用場景 48

第二部分 管理與開發(fā)入門篇

第8章 安裝MongoDB 51

8.1 版本和平臺的選擇 51

8.1.1 版本的選擇 51

8.1.2 平臺的選擇 52

8.1.3 32位和64位 52

8.2 Windows系統(tǒng)安裝MongoDB 53

8.2.1 查看安裝環(huán)境 53

8.2.2 安裝步驟 53

8.2.3 目錄文件了解 55

8.3 Linux系統(tǒng)安裝MongoDB 56

8.3.1 虛擬機(jī)簡介 56

8.3.2 虛擬機(jī)安裝以及安裝Linux系統(tǒng) 58

8.3.3 安裝MongoDB 67

8.4 Mac OSX系統(tǒng)安裝MongoDB 73

8.4.1 查看安裝環(huán)境 73

8.4.2 官網(wǎng)安裝包安裝 73

8.4.3 Mac軟件倉庫安裝 74

第9章 啟動和停止MongoDB 75

9.1 命令行方式啟動和參數(shù) 75

9.1.1 Windows系統(tǒng)命令行啟動MongoDB 75

9.1.2 Linux系統(tǒng)命令行啟動MongoDB 76

9.1.3 Mac OS 系統(tǒng)命令行啟動MongoDB 79

9.2 啟動參數(shù) 80

9.3 配置文件方式啟動 82

9.4 啟動MongoDB客戶端 84

9.5 關(guān)閉MongoDB 84

9.5.1 Windows系統(tǒng)設(shè)置MongoDB關(guān)閉 84

9.5.2 Linux系統(tǒng)設(shè)置MongoDB關(guān)閉 86

9.5.3 Mac OS系統(tǒng)設(shè)置MongoDB關(guān)閉 87

9.6 設(shè)置MongoDB開機(jī)啟動 88

9.6.1 Windows系統(tǒng)設(shè)置MongoDB開機(jī)啟動 88

9.6.2 Linux系統(tǒng)設(shè)置MongoDB開機(jī)啟動 89

9.6.3 Mac OS系統(tǒng)設(shè)置MongoDB開機(jī)啟動 93

9.7 修復(fù)未正常關(guān)閉的MongoDB 96

第10章 基本命令 97

10.1 數(shù)據(jù)庫常用命令 97

10.2 集合 99

10.3 文檔 101

10.4 索引 104

10.5 基本查詢 106

10.5.1 find簡介 106

10.5.2 游標(biāo) 107

10.6 條件查詢 108

10.6.1 與操作 108

10.6.2 或操作$or 108

10.6.3 大于$gt 108

10.6.4 小于$lt 108

10.6.5 大于等于$gte 108

10.6.6 小于等于$lte 108

10.6.7 類型查詢$type 108

10.6.8 是否存在$exists 109

10.6.9 取模$mod 109

10.6.10 不等于$ne 109

10.6.11 包含$in 110

10.6.12 不包含$nin 110

10.6.13 $not: 反匹配 110

10.7 特定類型查詢 110

10.7.1 null 110

10.7.2 正則查詢(模糊查詢) 110

10.7.3 嵌套文檔 112

10.7.4 數(shù)組 112

10.8 高級查詢$where 115

10.8.1 JavaScript語言簡介 115

10.8.2 JavaScript編程簡單例子 115

10.8.3 JavaScript與$where結(jié)合使用 115

10.9 查詢輔助 116

10.9.1 條數(shù)限制limit 116

10.9.2 起始位置skip 116

10.9.3 排序sort 116

10.10 修改器 116

10.10.1 $set 116

10.10.2 $unset 117

10.10.3 $inc 117

10.10.4 $push 117

10.10.5 $pushAll 117

10.10.6 $pull 117

10.10.7 $addToSet 118

10.10.8 $pop 118

10.10.9 $rename 118

10.10.10 $bit 118

10.11 原生聚合運(yùn)算 119

10.11.1 數(shù)量查詢count 119

10.11.2 不同值distinct 119

10.11.3 分組group 120

10.11.4 靈活統(tǒng)計(jì)MapReduce 123

10.12 聚合管道 127

10.12.1 aggregate用法 127

10.12.2 管道操作器 128

10.12.3 管道表達(dá)式 139

10.12.4 復(fù)合使用示例 141

第11章 GUI工具:數(shù)據(jù)庫外部管理工具 144

11.1 MongoDB的GUI工具簡介 144

11.2 Robomongo基本操作 144

11.2.1 連接MongoDB 145

11.2.2 創(chuàng)建刪除數(shù)據(jù)庫 145

11.2.3 插入文檔 145

11.2.4 查詢文檔 146

11.2.5 更新文檔 146

11.2.6 創(chuàng)建索引 147

11.2.7 執(zhí)行JavaScript 148

第12章 監(jiān)控 149

12.1 原生管理接口監(jiān)控 149

12.2 使用serverStatus在Shell監(jiān)控 150

12.3 使用mongostat在Shell監(jiān)控 151

12.4 使用第三方插件監(jiān)控 152

第13章 安全和訪問控制 153

13.1 綁定監(jiān)聽ip 153

13.2 設(shè)置監(jiān)聽端口 154

13.3 用戶認(rèn)證 154

13.3.1 啟用認(rèn)證 154

13.3.2 添加用戶 155

13.3.3 用戶權(quán)限控制 155

13.3.4 用戶登錄 157

13.3.5 修改密碼 157

13.3.6 刪除用戶 157

第14章 數(shù)據(jù)管理 158

14.1 數(shù)據(jù)備份mongodump 158

14.2 數(shù)據(jù)恢復(fù)mongorestore 159

14.3 數(shù)據(jù)導(dǎo)出mongoexport 159

14.3.1 導(dǎo)出JSON格式 159

14.3.2 導(dǎo)出CSV格式 159

14.4 數(shù)據(jù)導(dǎo)入mongoimport 160

14.4.1 JSON格式導(dǎo)入 160

14.4.2 CSV格式導(dǎo)入 160

第15章 MongoDB驅(qū)動 161

15.1 MongoDB驅(qū)動支持的開發(fā)語言 161

15.2 驅(qū)動使用流程 163

第16章 Java操作MongoDB 165

16.1 安裝JDK 165

16.2 Eclipse安裝 166

16.3 加載驅(qū)動 167

16.4 查閱Java操作語法 167

16.5 測試操作 168

16.5.1 連接數(shù)據(jù)庫 168

16.5.2 插入數(shù)據(jù) 169

16.5.3 查詢數(shù)據(jù) 170

16.5.4 更新數(shù)據(jù) 170

16.5.5 刪除數(shù)據(jù) 171

16.5.6 聚合方法執(zhí)行 171

16.5.7 操作GridFS 172

16.5.8 運(yùn)行示例 173

第三部分 管理與開發(fā)進(jìn)階篇

第17章 副本集部署 177

17.1 總體思路 177

17.2 MongoDB環(huán)境準(zhǔn)備 178

17.3 創(chuàng)建目錄 181

17.4 創(chuàng)建Key 182

17.5 初始化副本集 183

17.6 數(shù)據(jù)同步測試 190

17.7 故障切換測試 192

17.8 Java程序連接MongoDB副本集測試 194

17.9 主從復(fù)制部署 196

第18章 分片部署 198

18.1 總體思路 198

18.2 創(chuàng)建3個(gè)Shard Server 201

18.2.1 創(chuàng)建目錄 201

18.2.2 以分片Shard Server模式啟動 201

18.3 啟動Config Server 202

18.3.1 創(chuàng)建目錄 202

18.3.2 以分片Config Server模式啟動 202

18.4 啟動Route Process 203

18.5 配置sharding 204

18.6 對數(shù)據(jù)庫mytest啟用分片 205

18.7 集合啟用分片 206

18.8 分片集群插入數(shù)據(jù)測試 208

18.9 分片的管理 209

18.9.1 移除Shard Server,回收數(shù)據(jù) 209

18.9.2 新增Shard Server 211

第19章 分片 副本集部署 212

19.1 總體思路 212

19.2 創(chuàng)建3個(gè)復(fù)制集 215

19.2.1 創(chuàng)建目錄 215

19.2.2 以復(fù)制集模式啟動 215

19.2.3 初始化復(fù)制集 216

19.3 創(chuàng)建分片需要的Config Server與Route Process 217

19.3.1 創(chuàng)建目錄 217

19.3.2 啟動Config Server、Route Process 218

19.4 配置分片 219

第20章 springMVC maven MongoDB框架搭建 221

20.1 SpringMVC和Maven簡介 221

20.2 Eclipse安裝Maven插件 221

20.3 新建Maven類型的Web項(xiàng)目 222

20.4 搭建SpringMVC MongoDB框架 224

20.4.1 jar包引入 224

20.4.2 新建SpringMVC配置文件 228

20.4.3 新建MongoDB配置文件 230

20.4.4 配置web.xml 231

20.4.5 創(chuàng)建index.jsp和IndexController 232

20.4.6 啟動Web項(xiàng)目 233

第21章 注冊登錄功能的實(shí)現(xiàn) 235

21.1 UI框架Bootstrap 235

21.1.1 簡介 235

21.1.2 應(yīng)用Bootstrap 235

21.2 新建用戶實(shí)體 236

21.3 注冊功能編寫 237

21.3.1 注冊頁面代碼 237

21.3.2 注冊后端代碼 239

21.4 登錄功能編寫 241

21.4.1 登錄頁面代碼 241

21.4.2 登錄后端代碼 243

21.5 運(yùn)行測試 244

21.6 Sping Data MongoDB操作 246

21.6.1 插入數(shù)據(jù) 247

21.6.2 查詢數(shù)據(jù) 247

21.6.3 更新數(shù)據(jù) 249

21.6.4 刪除數(shù)據(jù) 250

21.6.5 聚合方法執(zhí)行 250

21.6.6 操作GridFS 251

21.6.7 運(yùn)行示例 253

第四部分 管理與開發(fā)經(jīng)驗(yàn)篇

第22章 MongoDB開發(fā)的經(jīng)驗(yàn) 257

22.1 盡量選取穩(wěn)定新版本64位的MongoDB 257

22.2 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 257

22.3 查詢的技巧 259

22.4 安全寫入數(shù)據(jù) 262

22.5 索引設(shè)置的技巧 264

22.6 不要用GridFS處理小的二進(jìn)制文件 268

22.7 優(yōu)化器profiler 269

第23章 MongoDB管理的經(jīng)驗(yàn) 271

23.1 MongoDB安全管理 271

23.2 不要將MongoDB與其他服務(wù)部署到同一臺機(jī)器上 273

23.3 單機(jī)開啟日志Journal,多機(jī)器使用副本集 274

23.4 生產(chǎn)環(huán)境不要信任repair恢復(fù)的數(shù)據(jù) 275

23.5 副本集管理 276

23.6 副本集回滾丟失的數(shù)據(jù) 278

23.7 分片的管理 279

23.8 MongoDB鎖 280

附錄 A MongoDB地理位置距離單位 285

附錄 B 相關(guān)網(wǎng)址 287

在線預(yù)覽

第 2 章? MongoDB的結(jié)構(gòu) ?

要很好地使用MongoDB,需要對它的組成結(jié)構(gòu)進(jìn)行了解,本章我們就來學(xué)習(xí)MongoDB的結(jié)構(gòu)。MongoDB的組成結(jié)構(gòu)如下:數(shù)據(jù)庫包含集合,集合包含文檔,文檔包含一個(gè)或多個(gè)鍵值對,如圖2-1所示。 圖2-1 文檔包含鍵值對key:value2.1 數(shù)據(jù)庫2.1.1 數(shù)據(jù)庫的層次MongoDB中數(shù)據(jù)庫包含集合,集合包含文檔。一個(gè)MongoDB服務(wù)器實(shí)例可以承載多個(gè)數(shù)據(jù)庫,數(shù)據(jù)庫之間是獨(dú)立的。每個(gè)數(shù)據(jù)庫有獨(dú)立的權(quán)限控制,在磁盤上不同的數(shù)據(jù)庫放置在不同的文件中。一個(gè)應(yīng)用的所有數(shù)據(jù)建議存儲在同一個(gè)數(shù)據(jù)庫中。當(dāng)同一個(gè)MongoDB服務(wù)器上存放多個(gè)應(yīng)用數(shù)據(jù)時(shí),建議使用多個(gè)數(shù)據(jù)庫,每個(gè)應(yīng)用對應(yīng)一個(gè)數(shù)據(jù)庫。2.1.2 數(shù)據(jù)的命名數(shù)據(jù)庫通過名字來標(biāo)識。數(shù)據(jù)庫名可以使用滿足以下條件的任意UTF-8字符串來命名:? 不能是空字符串("")。? 不能含有' ' (空格)、.(點(diǎn))、$、/、\和\0(空字符)。? 應(yīng)全部小寫。? 最多64字節(jié)。數(shù)據(jù)庫名有這么多的限制是因?yàn)閿?shù)據(jù)庫名最終會變成系統(tǒng)中的文件。2.1.3 自帶數(shù)據(jù)庫MongoDB有一些一安裝就存在的數(shù)據(jù)庫,這些數(shù)據(jù)庫介紹如下:(1)admin從權(quán)限角度來看,這是超級管理員("root")數(shù)據(jù)庫。在admin數(shù)據(jù)庫中添加的用戶會具有管理數(shù)據(jù)庫的權(quán)限。一些特定的服務(wù)器端命令也只能從這個(gè)數(shù)據(jù)庫運(yùn)行,如列出所有的數(shù)據(jù)庫或者關(guān)閉服務(wù)器。(2)local這個(gè)數(shù)據(jù)庫永遠(yuǎn)不會被復(fù)制,可以用來存儲限于本地單臺服務(wù)器的任意集合。(3)config當(dāng)Mongo用于分片設(shè)置時(shí),config數(shù)據(jù)庫在內(nèi)部使用,用于保存分片的相關(guān)信息。2.2 普通集合2.2.1 集合是什么集合就是一組文檔。同一個(gè)應(yīng)用的數(shù)據(jù)我們建議存放在同一個(gè)數(shù)據(jù)庫中,但是一個(gè)應(yīng)用可能有很多個(gè)對象,比如一個(gè)網(wǎng)站可能需要記錄用戶信息,也需要記錄商品信息。集合解決了上述問題,我們可以在同一個(gè)數(shù)據(jù)庫中存儲一個(gè)用戶集合和商品集合。集合類似于關(guān)系型數(shù)據(jù)庫中的表。2.2.2 集合的特點(diǎn)—無模式集合是無模式的,也就是說一個(gè)集合里的文檔可以是各式各樣的,非常自由。集合跟表較大的差異在于表是有表頭的,每一列存的什么信息需要對應(yīng),表在存儲信息之前需要先設(shè)計(jì)表,每一列是什么數(shù)據(jù)類型,字符串類型的數(shù)據(jù)是不能存儲進(jìn)數(shù)值類型的列中的。而集合則不需要設(shè)計(jì)結(jié)構(gòu),只要滿足文檔的格式就可以存儲,即使他們的鍵名不同,非常靈活。MongoDB會自動識別每個(gè)字段的類型。2.2.3 集合命名集合通過名字來標(biāo)識區(qū)分。集合名可以是滿足下列條件的任意UTF-8字符串。? 不能是空字符串("")。? 不能含有\(zhòng)0(空字符),這個(gè)字符表示集合名的結(jié)尾。? 不能以“system.”開頭,這是為系統(tǒng)集合保留的前綴。 ? 不能含有保留字符$。這是因?yàn)槟承┫到y(tǒng)生成的集合中包含該字符。除非你要訪問這種系統(tǒng)創(chuàng)建的集合,否則千萬不要在名字里出現(xiàn)$。有些驅(qū)動程序的確支持在集合名里面包含$,但是我們不建議使用。2.2.4 子集合子集合是集合下的另一個(gè)集合,可以讓我們更好地組織存放數(shù)據(jù)。慣例是使用“.”字符分開命名來表示子集合。在MongoDB中使用子集合,可以讓數(shù)據(jù)的組織更清晰。例如我做一個(gè)論壇模塊,按照面向?qū)ο蟮木幊涛覀儜?yīng)該有一個(gè)論壇的集合forum,但是論壇功能里應(yīng)該還有很多對象,比如用戶、帖子。我們就可以把論壇用戶集合命名為forum.user,把論壇帖子集合命名為forum.post。也就是我們把數(shù)據(jù)存儲在子集合forum.user和forum.post里,數(shù)據(jù)forum集合是不存儲數(shù)據(jù)的,甚至可以刪除掉。也就是說forum這個(gè)集合跟它的子集合沒有數(shù)據(jù)上的關(guān)系。子集合只是為了讓數(shù)據(jù)組織結(jié)構(gòu)更清晰。

網(wǎng)友評論(不代表本站觀點(diǎn))

來自建水縣**的評論:

內(nèi)容不錯(cuò),很好很實(shí)用

2017-11-13 20:03:03

免責(zé)聲明

更多出版社