MongoDB管理与开发精要

MongoDB管理与开发精要

 

媒体评论

  最初,本书的部分初稿在几大IT技术社区“疯传”,被社区网友视为学习MongoDB的“宝典”。由于受到社区网友的热捧,在初稿的基础上,作者对本书内容进行了系统化的补充,使原有的内容获得了大大的完善。本书的第一大特点是实用性和可操作性强,作者是国内MongoDB领域的先驱和实践者,本书的所有内容都来自于作者的实践;本书的第二大特点是内容深入且全面,从MongoDB的使用、管理、维护、性能优化,到MongoDB的开发和实现原理,几乎涵盖了读者需要掌握的所有内容。强烈推荐!——51CTO(www.51cto.com,中国领先的IT技术社区)
  MongoDB是非关系型数据库中功能最丰富、最像关系型数据库的产品之一,因为具有高性能、易于部署、易于使用、存储数据方便等优势而深受欢迎。它最大的特点是支持的查询语言非常强大。从本书的内容可以看出,作者在MongoDB方面有非常多的实践经验,而且对MongoDB有非常深入的理解和认识,本书从实践的角度对MongoDB的方方面面做了透彻的讲解,有很大的参考价值。极力推荐!——中国DBA超级论坛(http://www.chinadba.net/)
  随着互联网的发展和新技术的不断涌现,企业会在实际的应用中使用各种不同的方案和产品来存放数据。由C++语言编写的MongoDB是一个基于分布式文件存储的数据库,能够为Web应用提供可扩展的高性能数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的NoSQL产品,具有几乎所有关系型数据库的功能。它会使你的开发和部署很容易,天然具有分布式和Failover的功能,深受众多公司喜爱。本书实战性较强,涵盖MongoDB的各个方面,作者通过大量实例讲解了如何使用MongoDB,以及如何解决在使用过程中遇到的各种问题。——杨海朝 新浪网(中国)技术有限公司首席DBA/新浪微博数据库负责人
  MongoDB是一个开源、高性能、面向集合存储的分布式文档存储数据库。著名的在线词典和语言库网站Wordnik大量使用了MongoDB对其数据进行存储。而令我印象最深的是,MongoDB使用操作系统的内存映射文件方式来管理内存,以此来简化内存的管理工作,同时提高了Cache的性能。本书作者多年从事一线的MongoDB管理与开发,相信通过他的介绍,不论是未曾接触过MongoDB的用户,抑或是已经在实际工作中使用MongoDB的用户,都会受益匪浅。——姜承尧 资深MySQL数据库专家,著有《MySQL技术内幕:InnoDB存储引擎》
 

内容简介


  《mongodb管理与开发精要》内容有三大特点:系统而全面,内容包含mongodb开发、管理、维护和性能优化等方方面面;详细而深入,不仅对mongodb的开发和管理方法进行了详尽的讲解,而且还对mongodb的工作机制进行了深入的剖析;注重实战,尝试通过实践中的案例来帮助读者理解使用mongodb数据库时遇到的各种问题的症结之所在,并给出了解决方案。
  本书一共分为六篇:一基础篇,主要讲解了mongodb的基础理论和基本操作,学习完这部分内容可以掌握mongodb的基本操作;二高级篇,讲解了高级查询、高级更新、高级功能应用等mongodb的高级技术,掌握这部分内容后就能熟练地应用mongodb来完成日常的工作;三管理篇,详细介绍了mongodb常用的运维管理工具、各种管理命令以及访问控制方面的技术,掌握这部分内容后就能具备一位mongodb dba所具有的全部技能;四性能篇,详细阐述了mongodb的索引、优化,以及性能监控方面的知识,这部分内容将使读者具备对mongodb进行调优的能力;五架构篇,重点讲解了主从复制、分片等高可用架构的细节,掌握这部分内容后就可以独立设计出mongodb应用系统的架构;六开发篇,讲解了如何用c#和java来操作mongodb数据库,掌握这部分内容后就可以将c#和java开发技术与mongodb数据库结合起来,从而完成特定应用系统的开发
 

前言

  为什么要写这本书
  2005年我开始从事J2EE(现在叫Java EE)开发,一年以后正式将精力放在数据库领域,并于当年正式成为DBA(数据库管理员),此后一直从事数据库的管理工作。从DB2 V8到DB2 V9,从SQL Server 2000到SQL Server 2008,从MySQL到MongoDB,6年的时间奋斗在DBA这个领域,至今我依然深爱着这个职业。在以往的日子里,每当遇到疑难问题时,我总是非常耐心地去处理,并享受着解决问题带来的喜悦。
  2010年,随着Web 2.0网站的大批涌现,NoSQL数据库逐渐流行起来。与传统的关系型数据库相比,NoSQL数据库具有操作简单、完全免费、源码公开、随时下载等特点,并可以用于各种商业目的。这使NoSQL数据库产品广泛应用于各种大型门户网站和专业网站,大大降低了企业运营成本。同时,NoSQL数据库对传统的关系型数据库造成了一定的冲击,例如,开源数据库代表MySQL已经将Memcached产品嵌入其解决方案中,与此同时,各种商业数据库也在不断推出列式数据处理方案来弥补自身的不足。由此可见,NoSQL的良好发展态势已经是不可逆转的了,它必将主宰未来的互联网数据库市场。MongoDB正是这些NoSQL产品中的杰出代表。
  在这种背景下,2010年,机械工业出版社华章公司的杨福川准备筹划一本关于MongoDB实战方面的书,我正好乐意与大家一起分享我多年工作实践的积累以及数据库开发、优化、管理和维护经验,于是我们一拍即合。
  此后,我开始蛰伏在北京的某个角落,从日出东方到夕阳西下,经历了不知多少个日日夜夜。看过漫天尘土的春季,浸泡在炎热的夏季,走过落叶纷飞的秋季,不知不觉进入了冬季。漫漫长路,本书终于尘埃落定。
  本书全面介绍了MongoDB数据库,重在实战演练,学习思路也是我亲身的学习经历。出于严谨的考虑,本书中的例子都在测试环境上调试通过。这耗费了我大量的时间和精力,但是,如果能够帮助读者以最快的速度掌握一门技术,一切努力都是值得的。
  读者对象
  全书内容循序渐进、由浅入深,既可以引导初学者入门,又可以帮助具备一定基础的IT技术从业人员进一步提高技术水平,力求不同层次的读者都能从本书中受益。本书的读者对象包括:
   准备扩展MongoDB知识的开发人员
   有兴趣了解MongoDB的DBA或数据库应用程序编程人员
   正在学习数据库课程的计算机相关专业的学生
   想使用MongoDB实现快速查询的技术人员
   想进一步了解MongoDB的“发烧友”
   数据库管理层和技术决策者
  本书特点
  本书针对IT技术人员在工作中的必备知识与技能,精心安排了篇章结构。本书从基础入手,通过细致入微的内容组织,配以深入浅出的文字论述,以实际项目应用为背景,力图让读者从多个角度对MongoDB有深入的认识和理解。
  本书最大的特点是实战性强,利用丰富的实例对MongoDB进行了详细的介绍。
  本书系统全面,涵盖了MongoDB开发、优化、管理和维护的方方面面。从写作风格上看,本书没有过多讨论抽象的理论,而是通过丰富的实例来帮助读者理解应用MongoDB数据库时会遇到的各种问题及其解决方法,使读者能够很轻松地部署测试环境,并且熟练地掌握MongoDB数据库的各种使用技巧。
  如何阅读本书
  本书主要以引导读者思考、体会和实践为目的,通过实例让读者以最快的速度全面接触MongoDB。在阅读本书的时候,最好有一个可以实践的MongoDB测试环境,通过自己动手实践来加深认识、真正理解。对于管理层和技术决策者来说,可能没有太多时间进行大量的测试和实践,学习解决问题的思路就可以了。
.  本书分为6个部分,共15章:
  第一部分基础篇(第1章~第2章):主要讲解MongoDB的基础理论和基本操作。通过这部分内容的学习,读者可以对MongoDB进行简单操作。
  第二部分高级篇(第3章~第5章):主要讲解MongoDB的高级技术,例如高级查询、高级更新、高级功能的应用。通过这部分内容的学习,读者可以熟练地应用MongoDB来完成日常的业务需求。
  第三部分管理篇(第6章~第8章):主要讲解MongoDB常用的运行和维护管理工具,例如数据的导入导出、数据的备份和恢复、数据的克隆和复制,以及与安全相关的实用技术。通过这部分内容的学习,读者应该具备一个MongoDB DBA所具有的全部技能。
  第四部分性能篇(第9章~第10章):主要讲解MongoDB的索引、优化、性能监控技术。通过这部分内容的学习,读者可以具备MongoDB调优的能力。
  第五部分架构篇(第11章~第13章):主要讲解MongoDB的高可用架构的细节,如主从复制、Sharding(分片)等。通过这部分内容的学习,读者可以独立设计MongoDB应用系统架构。
  第六部分开发篇(第14章~第15章):主要讲解如何用C#和Java来操作MongoDB数据库。通过这部分内容的学习,读者可以将C#或Java开发技术与MongoDB数据库结合起来,完成特定应用系统的开发。
  勘误和支持
  由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以将书中的错误或者学习本书时遇到的问题发送到mongodb_ book@126.com或者登录ChinaDBA.net(中国DBA超级论坛),我将尽量提供最满意的解答,期待得到你们的真挚反馈。
  致谢
  在本书的编写过程中,得到了家人、同事和朋友的支持与帮助,在这里表示衷心的感谢。
  感谢我的爸爸、妈妈和我的爱人,你们对我工作的大力支持与鼓励,才使本书顺利完成。
  感谢麒麟游戏副总裁魏峰先生和汤柯先生,是你们最先为我引入NoSQL和MongoDB的概念,同时支持我大胆地在项目上应用和实践。
  谨向杨福川先生和白宇女士致以特别的感谢,他们在本书出版过程中给予我指导和鼓励,并且与我共同完成此书。
  王文龙(红丸)
  2011年11月于中国北京 
 

目录

《mongodb管理与开发精要》
前言
第一部分 基 础 篇
第1章 认识mongodb / 2
1.1 nosql简介 / 2
1.1.1 产生背景 / 2
1.1.2 nosql的种类及其特性 / 4
1.1.3 nosql特点 / 8
1.1.4 发展现状 / 8
1.2 初识mongodb / 9
1.2.1 特点及功能 / 10
1.2.2 适用场合 / 11
1.3 mongodb实际应用案例 / 12
1.3.1 国内案例 / 12
1.3.2 国外案例 / 12
1.4 本章小结 / 13
第2章 快速入门 / 14
2.1 体系结构 / 14
2.1.1 数据逻辑结构 / 14
2.1.2 数据存储结构 / 15
.2.1.3 日志系统 / 17
2.1.4 元数据的存储 / 18
2.1.5 数据类型 / 19
2.2 mongodb的安装和配置 / 22
2.2.1 在windows平台下的安装和配置 / 22
2.2.2 在linux平台下的安装和配置 / 23
2.3 启动数据库 / 25
2.3.1 命令行方式 / 25
2.3.2 配置文件方式 / 25
2.3.3 daemon方式 / 26
2.3.4 mongod参数方式 / 26
2.4 停止数据库 / 27
2.4.1 ctrl+c组合键 / 27
2.4.2 shutdownserver()指令 / 28
2.4.3 unix系统指令 / 28
2.5 操作数据库 / 29
2.5.1 连接数据库 / 29
2.5.2 插入记录 / 29
2.5.3 查询记录 / 31
2.5.4 修改记录 / 34
2.5.5 删除记录 / 34
2.6 常用gui管理工具 / 34
2.6.1 mongovue / 34
2.6.2 rockmongo / 35
2.6.3 mongohub / 36
2.7 本章小结 / 37
第二部分 高 级 篇
第3章 高级查询 / 40
3.1 查询操作符 / 40
3.2 查询语法 / 46
3.2.1 数组内容的查询 / 47
3.2.2 内嵌文档的查询 / 47
3.2.3 正则表达式匹配 / 48
3.2.4 $where查询 / 48
3.3 联合查询 / 49
3.3.1 简单手工关联 / 49
3.3.2 dbref方式关联 / 50
3.4 游标和存储过程 / 51
3.4.1 游标 / 51
3.4.2 存储过程 / 52
3.5 本章小结 / 53
第4章 高级更新 / 55
4.1 数据更新命令详解 / 55
4.1.1 update命令 / 55
4.1.2 save命令 / 56
4.2 数据更新操作符 / 57
4.3 本章小结 / 62
第5章 高级特性 / 63
5.1 capped collection集合 / 63
5.1.1 创建capped collection / 63
5.1.2 capped collection的用途 / 64
5.1.3 注意事项 / 64
5.2 gridfs规范 / 65
5.2.1 如何实现海量存储 / 65
5.2.2 命令行工具 / 66
5.3 mapreduce编程模型 / 68
5.3.1 map进行分组 / 69
5.3.2 reduce聚合计算 / 69
5.3.3 result获取结果 / 70
5.3.4 finalize格式化输出 / 70
5.3.5 options定制输出 / 71
5.4 本章小结 / 72
第三部分 管 理 篇
第6章 管理工具集 / 74
6.1 数据迁移 / 74
6.1.1 导出工具mongoexport / 75
6.1.2 导出工具mongodump / 78
6.1.3 导入工具mongoimport / 79
6.2 数据的备份和恢复 / 81
6.2.1 备份工具mongodump / 81
6.2.2 恢复工具mongorestore / 84
6.3 命令行操作 / 86
6.3.1 通过eval参数执行指定语句 / 86
6.3.2 执行指定文件中的内容 / 87
6.4 本章小结 / 88
第7章 管理命令 / 89
7.1 克隆collection / 90
7.1.1 远程克隆collection / 90
7.1.2 本地克隆collection / 94
7.2 复制数据库 / 94
7.2.1 远程复制数据库 / 94
7.2.2 本地复制数据库 / 96
7.3 刷新磁盘 / 97
7.4 捕获异常 / 98
7.4.1 返回异常信息 / 98
7.4.2 阻塞客户端 / 99
7.5 进程控制 / 99
7.5.1 查看活动进程 / 99
7.5.2 结束进程 / 100
7.6 验证collection的有效性 / 100
7.7 数据压缩 / 101
7.8 本章小结 / 102
第8章 访问控制 / 103
8.1 限制特定ip地址访问 / 104
8.2 设置监听端口 / 104
8.3 使用用户名和口令登录 / 105
8.3.1 建立系统root用户 / 107
8.3.2 建立指定权限用户 / 108
8.3.3 删除指定用户 / 109
8.4 本章小结 / 110
第四部分 性 能 篇
第9章 索引及优化 / 112
9.1 mongodb索引概述 / 112
9.2 索引操作 / 113
9.2.1 基础索引 / 113
9.2.2 静默方式创建索引 / 115
9.2.3 文档索引 / 115
9.2.4 组合索引 / 116
9.2.5 唯一索引 / 116
9.2.6 强制使用索引 / 117
9.2.7 删除索引 / 119
9.2.8 重建索引 / 119
9.2.9 explain查看执行计划 / 119
9.3 优化器profiler / 121
9.3.1 开启profiler功能 / 121
9.3.2 查询profiler记录 / 122
9.4 性能优化概述 / 123
9.4.1 性能优化的原则 / 123
9.4.2 影响性能的因素 / 124
9.5 常用的优化方案 / 124
9.5.1 创建索引 / 124
9.5.2 限定返回结果条数 / 125
9.5.3 只查询用到的字段 / 125
9.5.4 采用capped collection / 126
9.5.5 采用server side code execution命令集 / 126
9.5.6 使用hint / 127
9.5.7 采用profiler / 127
9.6 本章小结 / 128
第10章 性能监控 / 129
10.1 mongosniff工具 / 129
10.2 mongostat工具 / 131
10.3 db.serverstatus命令 / 132
10.4 db.stats命令 / 134
10.5 http监控接口 / 135
10.6 本章小结 / 136
第五部分 架 构 篇
第11章 复制集 / 138
11.1 replica sets架构 / 138
11.2 部署replica sets / 139
11.3 主从操作日志 / 144
11.4 主从配置信息 / 146
11.5 管理replica sets / 147
11.5.1 主从切换 / 147
11.5.2 读写分离 / 149
11.5.3 故障转移 / 151
11.5.4 增减节点 / 153
11.6 本章小结 / 160
第12章 分片 / 161
12.1 sharding简介 / 161
12.1.1 sharding的特点 / 161
12.1.2 sharding架构 / 162
12.2 构建一个简单的sharding cluster / 163
12.2.1 启动shard server / 163
12.2.2 启动config server / 164
12.2.3 启动route process / 164
12.2.4 配置sharding / 164
12.2.5 验证sharding / 165
12.3 维护sharding / 167
12.3.1 列出所有的shard server / 168
12.3.2 查看sharding信息 / 168
12.3.3 判断是否是sharding / 169
12.3.4 对现有的表执行sharding / 169
12.3.5 新增shard server / 171
12.3.6 移除shard server / 172
12.4 本章小结 / 175
第13章 replica sets + sharding方案 / 176
13.1 replica sets+sharding架构 / 176
13.2 搭建一个高可用架构 / 177
13.2.1 创建数据目录 / 177
13.2.2 配置replica sets / 178
13.2.3 配置3台config server / 181
13.2.4 配置3台route process / 181
13.2.5 配置shard cluster / 181
13.2.6 验证sharding / 182
13.3 本章小结 / 183
第六部分 开 发 篇
第14章 c#开发接口 / 186
14.1 c#快速入门 / 186
14.1.1 下载驱动和开发环境 / 186
14.1.2 访问控制 / 188
14.1.3 c#对数据库的基础操作 / 189
14.2 c#驱动一致性 / 194
14.3 c#常用操作 / 195
14.3.1 对mongodb实例的操作 / 195
14.3.2 对用户的操作 / 198
14.3.3 对collection的操作 / 202
14.3.4 对索引的操作 / 208
14.4 c#高级查询 / 211
14.4.1 判断列名是否存在 / 211
14.4.2 比较运算符 / 213
14.4.3 逻辑运算符 / 221
14.4.4 正则表达式查询 / 223
14.4.5 跳过查询 / 224
14.5 用c#操作gridfs / 225
14.5.1 插入数据 / 225
14.5.2 查询数据 / 226
14.5.3 读取并保存数据 / 227
14.5.4 删除数据 / 228
14.6 本章小结 / 229
第15章 java开发接口 / 230
15.1 java快速入门 / 230
15.1.1 下载驱动和开发环境 / 230
15.1.2 访问控制 / 232
15.1.3 java对数据库的基础操作 / 233
15.2 java驱动一致性 / 237
15.3 java常用操作 / 238
15.3.1 对mongodb实例的操作 / 238
15.3.2 对用户的操作 / 241
15.3.3 对collection的操作 / 243
15.3.4 对索引的操作 / 250
15.4 java高级查询 / 253
15.4.1 通过游标获取所有document / 253
15.4.2 比较运算符 / 254
15.4.3 逻辑运算符 / 263
15.4.4 正则表达式查询 / 264
15.4.5 跳过查询 / 265
15.5 用java操作gridfs / 266
15.5.1 插入数据 / 266
15.5.2 查询数据 / 267
15.5.3 读取并保存数据 / 268
15.5.4 删除数据 / 269
15.6 本章小结 / 270


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16502878/viewspace-739993/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16502878/viewspace-739993/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值