深入学习MongoDB(附PDF下载地址)
MongoDB 扩展技术
第 1 章 欢迎来到分布式计算的世界 .......... 1
第 2 章 理解分片 .... 5
2.1 分割数据 ......... 7
2.1.1 分配数据 ................... 8
2.1.2 如何创建块 ............. 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
VI | 目录
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 监控 ............... 47
5.2.1 mongostat ................. 48
5.2.2 Web 管理界面 ......... 48
5.3 备份 ............... 49
5.4 关于架构的建议 .................. 50
5.4.1 创建应急站点 ......... 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 开发技巧 50 例
第 1 章 应用设计技巧 ................ 65
1.1 技巧 1:速度和完整性的折中 .............. 67
1.1.1 示例:网上购物车 . 68
1.1.2 考虑因素 ................. 69
目录 | VII
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:用数组存放要匿名访问的内嵌数据
1.10 技巧 10:文档要自给自足 .. 77
1.11 技巧 11:优先使用 $ 操作符 .............. 79
1.11.1 深入了解 .............. 79
1.11.2 提高性能 .............. 79
1.12 技巧 12:随时聚合 ........... 80
1.13 技巧 13:编写代码处理数据完整性问题
第 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 处理小的二进制数据
2.6 技巧 19:处理“无缝”故障切换 ........ 88
2.7 技巧 20:处理复制组失效及故障恢复 88
第 3 章 优化技巧 .. 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:坚持使用复制或日志 , 或两者兼用
4.3 技巧 31:不要信任 repair 恢复的数据
VIII | 目录
4.4 技巧 32:getlasterror .. 105
4.5 技巧 33:开发过程中一定要使用安全写入
4.6 技巧 34:使用 w 参数 ....... 106
4.7 技巧 35:一定要给 w 设置超时 .......... 107
4.8 技巧 36:不要每次写入都调用 fsync
4.9 技巧 37:崩溃之后正常启动 .............. 108
4.10 技巧 38:持久性服务器的瞬时备份 108
第 5 章 管理技巧 109
5.1 技巧 39:手工清理块集合 .. 111
5.2 技巧 40:用 repair 压缩数据库 ...... 111
5.3 技巧 41:不要改变复制组成员投票的权值
5.4 技巧 42:无活跃节点时可重置复制组
5.5 技巧 43:不必指定 --shardsvr 和 --configsvr 参数 . 115
5.6 技巧 44:开发时才用 --notablescan
5.7 技巧 45:学习 JavaScript . 116
5.8 技巧 46:在 shell 中管理所有服务器和数据库 116
5.9 技巧 47:获得帮助 ........... 117
5.10 技巧 48:创建启动文件 . 118
5.11 技巧 49:自定义函数 ..... 119
5.12 技巧 50:使用单个连接读取自身写入
进入公众号:回复关键字 mongodb