MongoDB 擴展技術
第1 章 歡迎來到分布式計算的世界 1
第2 章 理解分片 5
2.1 分割數據 7
2.1.1 分配數據 8
2.1.2 如何創(chuàng)建塊 11
2.2 平衡 14
2.3 mongos 17
2.4 配置服務器 18
2.5 集群的構造 18
第3 章 建立集群 21
3.1 選擇片鍵 23
3.1.1 小基數片鍵 23
3.1.2 升序片鍵 25
3.1.3 隨機片鍵 26
3.1.4 好片鍵 27
3.2 新老集合分片 29
3.2.1 快速起步 29
3.2.2 配置服務器 29
3.2.3 mongos 30
3.2.4 分片 31
3.2.5 數據庫和集合 32
3.3 增減容量 33
3.3.1 移除分片 34
3.3.2 修改分片中的服務器 35
第4 章 使用集群 37
4.1 查詢 39
4.2 為什么會這樣 39
4.2.1 計數 39
4.2.2 唯一索引 40
4.2.3 更新 41
4.3 MapReduce 42
第5 章 管理 43
5.1 使用命令行 45
5.1.1 了解概況 45
5.1.2 配置集合 46
5.1.3 應該連接什么 47
5.2 監(jiān)控 47
5.2.1 mongostat 48
5.2.2 Web 管理界面 48
5.3 備份 49
5.4 關于架構的建議 50
5.4.1 創(chuàng)建應急站點 50
5.4.2 挖護城河 50
5.5 錯誤處理 51
5.5.1 分片停機 51
5.5.2 多數分片停機 51
5.5.3 配置服務器停機 52
5.5.4 mongos 進程死掉 52
5.5.5 其他注意事項 53
第6 章 學習資源 55
MongoDB 開發(fā)技巧50 例
第1 章 應用設計技巧 65
1.1 技巧1:速度和完整性的折中 67
1.1.1 示例:網上購物車 68
1.1.2 考慮因素 69
1.2 技巧2:適應未來的數據要范式化 70
1.3 技巧3:盡量單個查詢獲取數據 71
1.3.1 示例:博客 71
1.3.2 示例:相冊 72
1.4 技巧4:嵌入關聯數據 72
1.5 技巧5:嵌入時間點數據 73
1.6 技巧6:不要嵌入不斷增加的數據 73
1.7 技巧7:預填充數據 73
1.8 技巧8:盡可能預先分配空間 74
1.9 技巧9:用數組存放要匿名訪問的內嵌數據 75
1.10 技巧10:文檔要自給自足 77
1.11 技巧11:優(yōu)先使用$ 操作符 79
1.11.1 深入了解 79
1.11.2 提高性能 79
1.12 技巧12:隨時聚合 80
1.13 技巧13:編寫代碼處理數據完整性問題 80
第2 章 實現技巧 83
2.1 技巧14:使用正確的類型 85
2.2 技巧15:用簡單唯一的id 替換_id 85
2.3 技巧16:不要用文檔做_id 86
2.4 技巧17:不要用數據庫引用 86
2.5 技巧18:不要用GridFS 處理小的二進制數據 87
2.6 技巧19:處理“無縫”故障切換 88
2.7 技巧20:處理復制組失效及故障恢復 88
第3 章 優(yōu)化技巧 89
3.1 技巧21:盡可能減少磁盤訪問 91
3.2 技巧22:使用索引減少內存占用 92
3.3 技巧23:不要到處使用索引 94
3.4 技巧24:索引覆蓋查詢 95
3.5 技巧25:使用復合索引加快多個查詢 95
3.6 技巧26:通過建立分級文檔加速掃描 96
3.7 技巧27:AND 型查詢要點 98
3.8 技巧28:OR 型查詢要點 98
第4 章 數據安全性和一致性 101
4.1 技巧29:單機做日志,多機則復制 103
4.2 技巧30:堅持使用復制或日志, 或兩者兼用 104
4.3 技巧31:不要信任repair 恢復的數據 105
4.4 技巧32:getlasterror 105
4.5 技巧33:開發(fā)過程中一定要使用安全寫入 106
4.6 技巧34:使用w 參數 106
4.7 技巧35:一定要給w 設置超時 107
4.8 技巧36:不要每次寫入都調用fsync 108
4.9 技巧37:崩潰之后正常啟動 108
4.10 技巧38:持久性服務器的瞬時備份 108
第5 章 管理技巧 109
5.1 技巧39:手工清理塊集合 111
5.2 技巧40:用repair 壓縮數據庫 111
5.3 技巧41:不要改變復制組成員投票的權值 112
5.4 技巧42:無活躍節(jié)點時可重置復制組 113
5.5 技巧43:不必指定--shardsvr 和--configsvr 參數 115
5.6 技巧44:開發(fā)時才用--notablescan 115
5.7 技巧45:學習JavaScript 116
5.8 技巧46:在shell 中管理所有服務器和數據庫 116
5.9 技巧47:獲得幫助 117
5.10 技巧48:創(chuàng)建啟動文件 118
5.11 技巧49:自定義函數 119
5.12 技巧50:使用單個連接讀取自身寫入 120