MongoDB游记之轻松入门到进阶图书
人气:8

MongoDB游记之轻松入门到进阶

MongoDB作为*受欢迎的文档存储类型的NoSQL数据库,操作技巧大展现
  • 所属分类:图书 >计算机/网络>数据库>数据库理论  
  • 作者:[张泽泉]
  • 产品参数:
  • 丛书名:数据库技术丛书
  • 国际刊号:9787302478607
  • 出版社:清华大学出版社
  • 出版时间:2017-09
  • 印刷时间:2017-08-01
  • 版次:1
  • 开本:16开
  • 页数:--
  • 纸张:胶版纸
  • 包装:平装-胶订
  • 套装:

内容简介

MongoDB作为受欢迎的文档存储类型的NoSQL数据库,越来越多的公司在使用它。本书以符合初学者的思维方式,系统、层层递进地介绍了MongoDB数据库,通过本书的学习,读者能够胜任实际工作环境中MongoDB的相关开发管理工作。 本书共分四个部分23章,部分讲解了MongoDB的相关概念和原理以及其内部工作机制,可以让读者对MongoDB有一个的认识。第二部分和第三部分从应用角度,结合实例讲解了MongoDB的安装、配置、部署、开发、集群部署和管理等在实际工作中会用到的技能。第四部分是经验部分,这部分是作者多年使用MongoDB后总结的技巧,对读者在工作中使用MongoDB有极大的参考价值。 本书适合MongoDB的初学者,希望深入了解MongoDB安装部署、开发优化的软件工程师,希望深入了解MongoDB管理、集群扩展的数据运维管理员,以及任何对MongoDB相关技术感兴趣的读者。

编辑推荐

讲解MongoDB的相关知识,使读者对MongoDB有的认识以直接、细致的方式指导读者轻松掌握MongoDB的安装、部署与使用以实际工作框架为例子进行讲解,使读者真正能胜任MongoDB的开发管理工作由浅入深,层层递进,路线清晰

作者简介

张泽泉,毕业于四川理工学院,数据工程师、中级职称软件设计师、CSDN博客专家。致力于数据采集、数据分析、数据分布式运算架构等技术的应用与研究。多年一线MongoDB数据库存储、部署、开发经验,以及将其应用于房地产数据分析、金融数据分析、基因数据分析等领域行业经验。

目录

及时部分 基础与架构理论篇

第1章 初识MongoDB 3

1.1 MongoDB简介 3

1.1.1 MongoDB是什么 3

1.1.2 MongoDB的历史 3

1.1.3 MongoDB的发展情况 4

1.1.4 哪些公司在用MongoDB 5

1.2 MongoDB的特点 5

1.3 MongoDB应用场景 6

1.3.1 MongoDB适用于以下场景 6

1.3.2 MongoDB不适合的场景 7

第2章 MongoDB的结构 8

2.1 数据库 8

2.1.1 数据库的层次 8

2.1.2 数据的命名 8

2.1.3 自带数据库 9

2.2 普通集合 9

2.2.1 集合是什么 9

2.2.2 集合的特点—无模式 9

2.2.3 集合命名 9

2.2.4 子集合 10

2.3 固定集合(Capped) 10

2.3.1 Capped简介 10

2.3.2 Capped属性特点 10

2.3.3 Capped应用场景 10

2.4 文档 11

2.4.1 文档简介 11

2.4.2 文档的特点 11

2.4.3 文档的键名命名规则 11

2.5 数据类型 11

2.5.1 基本数据类型 11

2.5.2 数字类型说明 12

2.5.3 日期类型说明 14

2.5.4 数组类型说明 16

2.5.5 内嵌文档类型说明 16

2.5.6 _id键和ObjectId对象说明 17

2.5.7 二进制类型说明——小文件存储 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的大文件存储规范GridFs 22

3.1 GridFS简介 22

3.2 GridFS原理 23

3.3 GridFS应用场景 24

3.4 GridFS的局限性 24

第4章 MongoDB的分布式运算模型MapReduce 25

4.1 MapReduce简介 25

4.2 MapReduce原理 26

4.3 MapReduce应用场景 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复制集 35

6.1 复制集简介 35

6.1.1 主从复制和副本集 35

6.1.2 副本集的特点 38

6.2 副本集工作原理 38

6.2.1 oplog(操作日志) 38

6.2.2 数据同步 39

6.2.3 复制状态和本地数据库 39

6.2.4 阻塞复制 40

6.2.5 心跳机制 40

6.2.6 选举机制 41

6.2.7 数据回滚 42

第7章 了解MongoDB分片 43

7.1 分片的简介 43

7.2 分片的工作原理 44

7.2.1 数据分流 44

7.2.2 chunkSize和块的拆分 47

7.2.3 平衡器和块的迁移 47

7.3 分片的应用场景 48

第二部分 管理与开发入门篇

第8章 安装MongoDB 51

8.1 版本和平台的选择 51

8.1.1 版本的选择 51

8.1.2 平台的选择 52

8.1.3 32位和64位 52

8.2 Windows系统安装MongoDB 53

8.2.1 查看安装环境 53

8.2.2 安装步骤 53

8.2.3 目录文件了解 55

8.3 Linux系统安装MongoDB 56

8.3.1 虚拟机简介 56

8.3.2 虚拟机安装以及安装Linux系统 58

8.3.3 安装MongoDB 67

8.4 Mac OSX系统安装MongoDB 73

8.4.1 查看安装环境 73

8.4.2 官网安装包安装 73

8.4.3 Mac软件仓库安装 74

第9章 启动和停止MongoDB 75

9.1 命令行方式启动和参数 75

9.1.1 Windows系统命令行启动MongoDB 75

9.1.2 Linux系统命令行启动MongoDB 76

9.1.3 Mac OS 系统命令行启动MongoDB 79

9.2 启动参数 80

9.3 配置文件方式启动 82

9.4 启动MongoDB客户端 84

9.5 关闭MongoDB 84

9.5.1 Windows系统设置MongoDB关闭 84

9.5.2 Linux系统设置MongoDB关闭 86

9.5.3 Mac OS系统设置MongoDB关闭 87

9.6 设置MongoDB开机启动 88

9.6.1 Windows系统设置MongoDB开机启动 88

9.6.2 Linux系统设置MongoDB开机启动 89

9.6.3 Mac OS系统设置MongoDB开机启动 93

9.7 修复未正常关闭的MongoDB 96

第10章 基本命令 97

10.1 数据库常用命令 97

10.2 集合 99

10.3 文档 101

10.4 索引 104

10.5 基本查询 106

10.5.1 find简介 106

10.5.2 游标 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 数组 112

10.8 高级查询$where 115

10.8.1 JavaScript语言简介 115

10.8.2 JavaScript编程简单例子 115

10.8.3 JavaScript与$where结合使用 115

10.9 查询辅助 116

10.9.1 条数限制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 原生聚合运算 119

10.11.1 数量查询count 119

10.11.2 不同值distinct 119

10.11.3 分组group 120

10.11.4 灵活统计MapReduce 123

10.12 聚合管道 127

10.12.1 aggregate用法 127

10.12.2 管道操作器 128

10.12.3 管道表达式 139

10.12.4 复合使用示例 141

第11章 GUI工具:数据库外部管理工具 144

11.1 MongoDB的GUI工具简介 144

11.2 Robomongo基本操作 144

11.2.1 连接MongoDB 145

11.2.2 创建删除数据库 145

11.2.3 插入文档 145

11.2.4 查询文档 146

11.2.5 更新文档 146

11.2.6 创建索引 147

11.2.7 执行JavaScript 148

第12章 监控 149

12.1 原生管理接口监控 149

12.2 使用serverStatus在Shell监控 150

12.3 使用mongostat在Shell监控 151

12.4 使用第三方插件监控 152

第13章 安全和访问控制 153

13.1 绑定监听ip 153

13.2 设置监听端口 154

13.3 用户认证 154

13.3.1 启用认证 154

13.3.2 添加用户 155

13.3.3 用户权限控制 155

13.3.4 用户登录 157

13.3.5 修改密码 157

13.3.6 删除用户 157

第14章 数据管理 158

14.1 数据备份mongodump 158

14.2 数据恢复mongorestore 159

14.3 数据导出mongoexport 159

14.3.1 导出JSON格式 159

14.3.2 导出CSV格式 159

14.4 数据导入mongoimport 160

14.4.1 JSON格式导入 160

14.4.2 CSV格式导入 160

第15章 MongoDB驱动 161

15.1 MongoDB驱动支持的开发语言 161

15.2 驱动使用流程 163

第16章 Java操作MongoDB 165

16.1 安装JDK 165

16.2 Eclipse安装 166

16.3 加载驱动 167

16.4 查阅Java操作语法 167

16.5 测试操作 168

16.5.1 连接数据库 168

16.5.2 插入数据 169

16.5.3 查询数据 170

16.5.4 更新数据 170

16.5.5 删除数据 171

16.5.6 聚合方法执行 171

16.5.7 操作GridFS 172

16.5.8 运行示例 173

第三部分 管理与开发进阶篇

第17章 副本集部署 177

17.1 总体思路 177

17.2 MongoDB环境准备 178

17.3 创建目录 181

17.4 创建Key 182

17.5 初始化副本集 183

17.6 数据同步测试 190

17.7 故障切换测试 192

17.8 Java程序连接MongoDB副本集测试 194

17.9 主从复制部署 196

第18章 分片部署 198

18.1 总体思路 198

18.2 创建3个Shard Server 201

18.2.1 创建目录 201

18.2.2 以分片Shard Server模式启动 201

18.3 启动Config Server 202

18.3.1 创建目录 202

18.3.2 以分片Config Server模式启动 202

18.4 启动Route Process 203

18.5 配置sharding 204

18.6 对数据库mytest启用分片 205

18.7 集合启用分片 206

18.8 分片集群插入数据测试 208

18.9 分片的管理 209

18.9.1 移除Shard Server,回收数据 209

18.9.2 新增Shard Server 211

第19章 分片 副本集部署 212

19.1 总体思路 212

19.2 创建3个复制集 215

19.2.1 创建目录 215

19.2.2 以复制集模式启动 215

19.2.3 初始化复制集 216

19.3 创建分片需要的Config Server与Route Process 217

19.3.1 创建目录 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项目 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 创建index.jsp和IndexController 232

20.4.6 启动Web项目 233

第21章 注册登录功能的实现 235

21.1 UI框架Bootstrap 235

21.1.1 简介 235

21.1.2 应用Bootstrap 235

21.2 新建用户实体 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 运行测试 244

21.6 Sping Data MongoDB操作 246

21.6.1 插入数据 247

21.6.2 查询数据 247

21.6.3 更新数据 249

21.6.4 删除数据 250

21.6.5 聚合方法执行 250

21.6.6 操作GridFS 251

21.6.7 运行示例 253

第四部分 管理与开发经验篇

第22章 MongoDB开发的经验 257

22.1 尽量选取稳定新版本64位的MongoDB 257

22.2 数据结构的设计 257

22.3 查询的技巧 259

22.4 安全写入数据 262

22.5 索引设置的技巧 264

22.6 不要用GridFS处理小的二进制文件 268

22.7 优化器profiler 269

第23章 MongoDB管理的经验 271

23.1 MongoDB安全管理 271

23.2 不要将MongoDB与其他服务部署到同一台机器上 273

23.3 单机开启日志Journal,多机器使用副本集 274

23.4 生产环境不要信任repair恢复的数据 275

23.5 副本集管理 276

23.6 副本集回滚丢失的数据 278

23.7 分片的管理 279

23.8 MongoDB锁 280

附录 A MongoDB地理位置距离单位 285

附录 B 相关网址 287

在线预览

第 2 章? MongoDB的结构 ?

要很好地使用MongoDB,需要对它的组成结构进行了解,本章我们就来学习MongoDB的结构。MongoDB的组成结构如下:数据库包含集合,集合包含文档,文档包含一个或多个键值对,如图2-1所示。 图2-1 文档包含键值对key:value2.1 数据库2.1.1 数据库的层次MongoDB中数据库包含集合,集合包含文档。一个MongoDB服务器实例可以承载多个数据库,数据库之间是独立的。每个数据库有独立的权限控制,在磁盘上不同的数据库放置在不同的文件中。一个应用的所有数据建议存储在同一个数据库中。当同一个MongoDB服务器上存放多个应用数据时,建议使用多个数据库,每个应用对应一个数据库。2.1.2 数据的命名数据库通过名字来标识。数据库名可以使用满足以下条件的任意UTF-8字符串来命名:? 不能是空字符串("")。? 不能含有' ' (空格)、.(点)、$、/、\和\0(空字符)。? 应全部小写。? 最多64字节。数据库名有这么多的限制是因为数据库名最终会变成系统中的文件。2.1.3 自带数据库MongoDB有一些一安装就存在的数据库,这些数据库介绍如下:(1)admin从权限角度来看,这是超级管理员("root")数据库。在admin数据库中添加的用户会具有管理数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,如列出所有的数据库或者关闭服务器。(2)local这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。(3)config当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。2.2 普通集合2.2.1 集合是什么集合就是一组文档。同一个应用的数据我们建议存放在同一个数据库中,但是一个应用可能有很多个对象,比如一个网站可能需要记录用户信息,也需要记录商品信息。集合解决了上述问题,我们可以在同一个数据库中存储一个用户集合和商品集合。集合类似于关系型数据库中的表。2.2.2 集合的特点—无模式集合是无模式的,也就是说一个集合里的文档可以是各式各样的,非常自由。集合跟表较大的差异在于表是有表头的,每一列存的什么信息需要对应,表在存储信息之前需要先设计表,每一列是什么数据类型,字符串类型的数据是不能存储进数值类型的列中的。而集合则不需要设计结构,只要满足文档的格式就可以存储,即使他们的键名不同,非常灵活。MongoDB会自动识别每个字段的类型。2.2.3 集合命名集合通过名字来标识区分。集合名可以是满足下列条件的任意UTF-8字符串。? 不能是空字符串("")。? 不能含有\0(空字符),这个字符表示集合名的结尾。? 不能以“system.”开头,这是为系统集合保留的前缀。 ? 不能含有保留字符$。这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。有些驱动程序的确支持在集合名里面包含$,但是我们不建议使用。2.2.4 子集合子集合是集合下的另一个集合,可以让我们更好地组织存放数据。惯例是使用“.”字符分开命名来表示子集合。在MongoDB中使用子集合,可以让数据的组织更清晰。例如我做一个论坛模块,按照面向对象的编程我们应该有一个论坛的集合forum,但是论坛功能里应该还有很多对象,比如用户、帖子。我们就可以把论坛用户集合命名为forum.user,把论坛帖子集合命名为forum.post。也就是我们把数据存储在子集合forum.user和forum.post里,数据forum集合是不存储数据的,甚至可以删除掉。也就是说forum这个集合跟它的子集合没有数据上的关系。子集合只是为了让数据组织结构更清晰。

网友评论(不代表本站观点)

来自建水县**的评论:

内容不错,很好很实用

2017-11-13 20:03:03
登录后即可发表评论

免责声明

更多相关图书
在线咨询