前言
如今,數據倉庫作為一個行業已經存在很多年了。關係型資料庫被用於存儲數據已經幾十年了,同時SQL已經成為實際上的與RDBMS互動的語言。隨著社交網路、物聯網以及網際網路上巨量的非結構化數據的湧現,數據存儲、處理以及分析的需求正逐漸爆發。傳統的RDBMS系統和存儲技術並非旨在處理各種各樣海量的數據。
因此,大數據技術誕生了,如今它推動著各個網際網路規模公司及其巨量數據的發展。像Facebook、Twitter、Google以及雅虎這樣的公司正在利用大數據技術提供網際網路規模的產品和服務,它們能夠支持數百萬的用戶。
本書將幫助讀者理解大數據技術、其出現的背景、需求,然後我們將介紹與使用MongoDB架構解決方案有關的深層技術觀點。本書將讓讀者能夠理解適合使用大數據技術的關鍵用例,也會為讀者提供關於應該在何處小心使用大數據技術或者結合傳統RDBMS技術來提供靈活解決方案的指導。
順著本書的內容結構閱讀,我們旨在提供關於學習MongoDB和使用MongoDB創建應用程式及解決方案的分步指南。
我們衷心希望我們的讀者能夠享受到閱讀本書的樂趣,就像我們享受了編寫本書的樂趣一樣。
圖書簡介
《MongoDB實戰架構、開發與管理》首先簡要闡述NoSQL資料庫的基礎知識,然後介紹了MongoDB——業界領先的基於文檔的NoSQL資料庫,讓讀者逐步了解MongoDB方方面面的內容。
本書涵蓋了數據模型、底層架構、使用MongoShell編碼、管理MongoDB平台以及其他主題。本書還提供了使用MongoDB平台進行架構、開發與部署應用程式的清晰指導與實踐示例。資料庫開發人員、架構師和管理員將在本書中找到涵蓋MongoDB平台所有知識點的有用信息,以及如何將它用於實踐。
最近幾年,由於各種各樣NoSQL資料庫的湧現,就傳統RDBMS而言的“一刀切”的想法受到了挑戰。如今市場上有超過120種NoSQL資料庫可用,並且目前處於領先地位的就是MongoDB。隨著如此眾多的公司選擇MongoDB作為其NoSQL資料庫選項,如何結合專業建議以便最大化利用該軟體的實踐需求也就越來越大了。
圖書目錄
第1章大數據
1.1入門指南
1.2大數據
1.3大數據源
1.4大數據的三個V
1.4.1數量
1.4.2多樣性
1.4.3速率
1.5大數據的使用
1.5.1可見性
1.5.2發現和分析信息
1.5.3市場區隔和產品定製
1.5.4協助決策
1.5.5創新
1.6大數據的挑戰
1.6.1政策與程式
1.6.2訪問數據
1.6.3技術與技能
1.7傳統系統與大數據
1.7.1大數據的結構
1.7.2數據存儲
1.7.3數據處理
1.8大數據技術
1.9本章小結
第2章NoSQL
2.1SQL
2.2NoSQL
2.2.1定義
2.2.2NoSQL簡史
2.3ACID對比BASE
2.3.1CAP定理
2.3.2BASE
2.4NoSQL的優缺點
2.4.1NoSQL的優點
2.4.2NoSQL的缺點
2.5SQL與NoSQL資料庫的對比
2.6NoSQL資料庫的種類
2.7本章小結
第3章MongoDB介紹
3.1歷史
3.2MongoDB設計原則
3.2.1高速、可擴展性與敏捷性
3.2.2非關係型方法
3.2.3基於JSON的文檔存儲
3.2.4性能與功能對比
3.2.5隨處都能運行資料庫
3.3與SQL的對比
3.4本章小結
第4章MongoDB數據模型
4.1數據模型
4.1.1JSON和BSON
4.1.2標識符(_id)
4.1.3固定集合
4.2多態模式
4.2.1面向對象編程
4.2.2模式演化
4.3本章小結
第5章MongoDB—安裝與配置
5.1選擇你的版本
5.2在Linux上安裝MongoDB
5.2.1使用倉儲進行安裝
5.2.2手動安裝
5.3在Windows上安裝MOngODB
5.4運行MongoDB
5.4.1先決條件
5.4.2開啟服務
5.5驗證安裝結果
5.6MongoDB Shell
5.7保障部署安全
5.7.1使用身份驗證和授權
5.7.2控制網路訪問
5.8使用MongoDB雲管理器進行配置
5.9本章小結
第6章使用MongoDB Shell
6.1基本查詢
6.1.1創建和插入
6.1.2顯式創建集合
6.1.3使用循環插入文檔
6.1.4通過顯式指定id進行插入
6.1.5更新
6.1.6刪除
6.1.7讀取
6.1.8使用索引
6.2進階介紹
6.2.1使用條件操作符
6.2.2正則表達式
6.2.3MapReduce
6.2.4aggregate()
6.3設計應用程式的數據模型
6.3.1關係型數據模型與標準化
6.3.2MongoDB文檔數據模型方法
6.4本章小結
第7章MongoDB架構
7.1核心程式
7.1.1mongod
7.1.2mongo
7.1.3mongos
7.2MongoDB工具
7.3獨立部署
7.4複製
7.4.1主/從複製
7.4.2副本集
7.4.3實現帶有副本集的高級群集
7.5分片
7.5.1分片組件
7.5.2數據分發過程
7.5.3數據平衡過程
7.5.4操作
7.5.5實現分片
7.5.6控制集合分布(基於標籤分片)
7.5.7在將數據導入到分片環境時要記住的要點
7.5.8監控分片
7.5.9監控配置伺服器
7.6生產環境群集架構
7.6.1場景1
7.6.2場景2
7.6.3場景3
7.6.4場景4
7.7本章小結
第8章MongoDB闡釋
8.1數據存儲引擎
8.2(與MMAPv1相關的)數據檔案
8.3(與WiredTiger相關的)數據檔案
8.4讀取和寫入
8.5使用日誌時如何寫入數據
8.6GridFS—MongoDB檔案系統
8.6.1GridFS的基本原理
8.6.2GridFS的底層機制
8.6.3使用GridFS
8.7索引
8.7.1索引類型
8.7.2行為和限制
8.8本章小結
第9章管理MongoDB
9.1管理工具
9.1.1mongo
9.1.2第三方管理工具
9.2備份和恢復
9.2.1數據檔案備份
9.2.2mongodump和mongorestore
9.2.3fsync和鎖
9.2.4從備份
9.3導入和導出
9.3.1mongoimport
9.3.2mongoexport
9.4管理伺服器
9.4.1啟動一台伺服器
9.4.2停止伺服器運行
9.4.3瀏覽日誌檔案
9.4.4伺服器狀態
9.4.5識別和修復MongoDB
9.4.6識別和修復集合級別的數據
9.5監控MongoDB
9.5.1mongostat
9.5.2mongod網路接口
9.5.3第三方外掛程式
9.5.4MongoDB雲管理器
9.6本章小結
第10章MongoDB用例
10.1用例1——性能監控
10.1.1模式設計
10.1.2操作
10.1.3分片
10.1.4管理數據
10.2用例2——社交網路
10.2.1模式設計
10.2.2操作
10.2.3分片
10.3本章小結
第11章MongoDB使用限制
11.1MongoDB的空間過大(對於MMAPv1而言)
11.2記憶體問題(對於MMAPv1而言)
11.332位與64位對比
11.4BSON文檔
11.5命名空間使用限制
11.6索引使用限制
11.7固定集合使用限制——固定集合中文檔的最大數量
11.8分片使用限制
11.8.1及早分片以避免出現問題
11.8.2不能更新分片鍵
11.8.3分片集合使用限制
11.8.4選擇合適的分片鍵
11.9安全性限制
11.9.1默認情況下沒有身份驗證
11.9.2與MongoDB的互動通信沒有被加密
11.10寫入和讀取限制
11.10.1大小寫敏感的查詢
11.10.2類型敏感的欄位
11.10.3沒有聯結
11.10.4事務
11.11MongoDB不適用的範圍
11.12本章小結
第12章MongoDB的最佳實踐
12.1部署
12.1.1MongoDB網站的硬體配置建議
12.1.2要注意的一些要點
12.2編碼
12.3應用程式回響時間最佳化
12.4數據安全性
12.5管理
12.6複製延遲
12.7分片
12.8監控
12.9本章小結