没有合适的资源?快使用搜索试试~ 我知道了~
首页MongoDB管理与开发实战详解.pdf
MongoDB管理与开发实战详解.pdf

MongoDB管理与开发实战详解.pdf 支持免费,拒绝rar解压需要密码!
资源详情
资源评论
资源推荐

第 1 篇 基础篇
首先简单介绍了关系型数据库,从关系型数据库所遇到的问题讲到 NoSQL 的崛
起,然后讲述了 MongoDB 的基础操作和技巧,包括 MongoDB 的特点。数据类
型、扩展性、功能性、管理、使用场合等等。然后更深入的讲解了 MongoDB 的
数据结构、文档、集合、MongoDB shell 的使用。还包括文档的增加、修改及删
除。
第 1 章 MongoDB 简介
MongoDB 是当前 NoSQL 数据库产品中最热门的一种。它在许多场景下可用于
代替传统的关系型数据库或者键/值存储方式,MongoDB 使用 C++开发。MongoDB
的官方网站地址:http://www.MongoDB.org/,读者可以登录此网站获得更详细的
信息。
1.1 关系型数据库介绍
关系型数据库是建立在关系模型基础上的数据库。关系模型是由关系数据结构、
关系操作集合(关系操作是指对关系实施的各种操作,包括选择、投影、连接、
并、交、差、增、删、改等,其特点是集合操作方式,也就是操作的对象和结果
都是集合)、关系完整性约束(关系完整性包括:实体完整性、参照完整性、用
户定义完整性)三部分组成。标准数据库查询语言 SQL 就是一种基于关系型数据
的语言,这种语言执行对关系型数据库中的数据的检索和操作。
关系型数据库中的每个数据库包包含一个或者多个数据表。表是以行和列的形
式组织起来的数据集合。
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表(二维表
名就是关系名,表中的第一行通常称为属性名,表中的每一个元组合属性都是不
可分的,且元组的次序是无关紧要的。简单来说就是一个只有上下左右,没有前
后的平面。如 Excel 就是一个二维表)及其之间的联系组成的一个数据组织。当
前最流行的关系型数据库有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、
MySQL 等。
1.2 关系型数据库面临的问题
1.数据库并发负载高
2.海量数据存储和访问
3.数据库数据越来越大
4.事务管理的负担
5.关系型数据库读/写实时性的忽略
6.多表关联查询被弱化

1.3 NoSQL 的崛起
关系型数据库在越来越多的应用场景下暴露了这么多难以克服的问题,为了解决
这类问题,NoSQL 数据库运用而生。
NoSQL 是非关系型数据存储的广义定义,次概念在 2009 年初得到了广泛的认同,
也产生了很多种类的 NoSQL 数据库。
存储类型
NoSQL 产品
特性
文档式存储
MongoDB
文 档 存 储 一 般 用 类 似
JSON 格式存储,存储的内
容是文档类型的,这样也
就有机会对某些字 段建
立索引,实现关系型数据
库的某些功能
列式存储
Hbase
Cassandra
Hypertable
按列存储数据,最大的特
点是方便存储结构 化和
半结构化数据,方便做数
据压缩,针对某一列或者
某几列的查询有非 常大
的 I/O 优势
键值存储
Redis
TokyoCabinet
Tokyo Tyrant
Flare
可以通过键快速查 询到
值。一般来说,存储不管
值的格式,照单全收
对象式存储
db4o
Versant
通过类似面向对象 语言
的语法操作数据库,通过
对象的方式存取数据
图形式存储
Neo4J
FlockDB
图形关系的最佳存 储方
式。使用传统关系型数据
库来解决性能低下,而且
设计不方便
XML 式存储
Berkeley DB XML
BaseX
高效地存储 XML 数据,并
支持 XML 的内部查询语
法,如 XQuery、Xpath
相比关系型数据库而言,NoSQL 的优势有以下几点:
1.NoSQL 数据库种类繁多,他们都有一个共同的特点,就是去掉了关系型数据库
的关系型特点。
数据库之间没有关系(面向集合存储,易于存储对象类型数据,存储不需要固定
的表结构),这样就非常容易扩展。
2.NoSQL 数据库具有非常好的读/写性能,特别是在大数据库量下,读/写性能同

样表现得非常优秀。这是因为它没有关系性,数据库结构简单。
3.NoSQL 数据库不需要提前为要存储的数据建立字段,一个集合中随时可以存入
自定义的数据格式。而在关系型数据库中,增加和删除字段是一件非常麻烦的事
情,特别是数据量大的表。而在 NoSQL 数据库中可以轻而易举地做到。
4.NoSQL 数据库可以在不影响性能的情况下,非常方便地实现高可用的架构。例
如:Cassandra、Hbase 模型,可以复制模型也可以实现高性能。
5.NoSQL 数据库的出现,解决了关系型数据库所面临的问题,从而,弥补了关系
型数据库的不足。而且还在某些方面极大地节省了开发成本和维护成本。
NoSQL 发展至今,出现了好几种菲关系型数据库,本书就以 NoSQL 中目前最热
门的 MongoDB 为例来进行说明。
1.4 MongoDB 是如何解决这些问题的
MongoDB 是 NoSQL 中的一种,当然也具有 NoSQL 的特性。数据库之间没有关系,
所以 MongoDB 数据库之间是非常容易扩展。
MongoDB 中每个数据包包含一个或者多个数集合。集合是以 BSON(Binary
Serialized Document Format)数据结构组织起来的文档对象集合。
MongoDB 数据库没有关系性,数据结构非常简单,所以它的读/写性能非常高。
MongoDB 数据库可以处理大量的数据,也可以运行在便宜的 PC 服务器集群上,
PC 集群扩充起来非常方便并且成本很低。
MongoDB 数据结构非常简单,存储不需要固定的表结构,易于存储对象类型数
据,因此就不需要进行表与表之间的关联查询了。
1.5 初识 MongoDB
MongoDB 是一种非常强大、灵活、可扩展性的数据存储方式。MongoDB 功能非
常丰富,容易上手、便于使用。从而让我们关注编程本身,不再为存储数据而烦
恼。
1.5.1 MongoDB 的特点
MongoDB 最大的特点就是有非常强大的查询语言,其语法与面向对象的查询语
法非常相似,可以实现关系型数据库单表查询的大部分功能,也支持对数据建立
索引。MongoDB 数据库的特点如下:
面向集合存储,易于存储对象类型的数据,如一个字段中可以存入一个
对象。
模式自由,一个集合中可以存储一个键值对的文档,也可以存储多个键
值对的文档,还可以存储键不一样的文档。
支持动态查询,查询语句使用 JSON 形式作为参数,可以很方便地查询内
嵌文档和对象数组。
支持完全索引,包含内部对象,可以对内嵌文档创建索引。

支持查询。
支持复制和故障恢复,从节点可以复制主节点的数据,主节点的所有对
数据的操作都会同步到从节点。从节点的数据跟主节点的数据是完全一
样的,以作备份。主节点发生故障之后,从节点可以升级为主节点,也
可以通过从节点对故障主节点进行数据恢复。
使用高效地二进制数据存储,包括大型对象(如视频),可以将图片文件
甚至视频转换成二进制的数据存储到数据库中。
自动处理碎片,以支持云计划层次的扩展,可以水平扩展数据库集群,
动态添加片(服务器)。
支持 Python、Ruby、Java、C、C#、Javascript、Perl 及 C++语言的驱动程
序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序。
文件存储格式为:BSON(一种 JSON 扩展)。
可以通过网络访问。
有很多 MongoDB 常用的客户端 GUI 管理工具,如:
MongoVUE、RockMongo、MongoHub,
下载路径如下:
Http://www.mongovue.com/
Http://rackmongo.com/
Http://github.com/bububa/MongoHub
1.5.2 数据模型
MongoDB 数据库是一个面向集合并模式自由的文档类型数据库。
1. 面向集合
面 向 集 合 是 指 数 据 被 分 组 存 在 在 数 据 集 中 , 被 称 为 一 个 集 合
(Collencton==table)。集合类似于关系型数据库的表(table),不同于表的是,
集合不需要定义任何模式,集合在存储文档,一个文档类似于关系型数据库
的一条记录。
在 MongoDB 中,要操作一个表并不需要创建它,可以直接往集合中插入数据,
如果集合不存在,它会自动创建这个集合。
2. 模式自由
模式自由就是对存储在 MongoDB 数据库中的数据,我们不需要知道它是什么
结构(可以是任务的文档)。
3. 文档型
文档型存储的数据是键值对的集合,键是字符串,值可以是数据类型集合中
的任意类型,包括数组和文档。我们把这个数据格式称为 BSON(Binary
Serialized dOcumentNotation)
1.5.3 扩展性
MongoDB 采用面向文档的数据模式,可以自动在多台服务器中直接分割数据。还

可以平衡集群的数据和负载,自动重排文档。如果需要扩大容量,只需在集群中
添加新的机器,然后数据库会自动出来剩下的事情。
1.5.4 功能性
完整的索引支持:可以对文档创建索引,甚至还可以对内嵌文档以及数组创建索引。
MongoDB 的查询优化器会自动分析查询语句,然后生成一个高效的查询集合。
动态查询:MongoDB 的查询指令使用 JSON 形式,使查询表达式变得非常丰富,
还可以非常容易地查询文档中的内嵌对象和数组。
查询监视:MongoDB 提供了很多性能监视工具,用于分析数据库操作的性能。
复制及自动故障转移:MongoDB 数据库支持服务器之间的复制,从节点可以
复制主节点的数据,主节点的所有对数据的操作都会同步到从节点。从节点
的数据跟主节点的数据是完全一样的,以作备份。主节点发生故障之后,从
节点可以升级为主节点,也可以通过从节点对故障主节点进行数据恢复。
高效地传统存储方式:支持二进制数据及大型对象(如视频),可以将图片
文件甚至视频转换成二进制的数据存储到数据库中。
自动分片以支持云级别的伸缩性:,可以水平扩展数据库集群,动态添加片(服
务器)。
注意:有些关系型数据库常见的功能 MongoDB 并不具备,如链接(Join)和复杂的多
项事务。MongoDB 考虑的主要是提高扩展性,而分布式系统上实现这两个功能也
的确很难。
1.5.6 便于管理
MongoDB 启动服务器之后,我们只需要知道如何在集群中添加新的节点,添加新
的节点之后,数据库会自动集成和分配新的节点,如果主机服务器死机,MongoDB
会自动切换到备份的服务器上,并将备份服务器升级为活跃的服务器。在分布式
环境下,让数据库的管理变得非常方便。
MongoDB 的管理理念就是尽可能地让服务器自动配置,让用户能在需要的时候调
整设置(不强制)。
1.5.7 使用场合
网站数据
具有缓存层
大尺寸,低价值的数据
高伸缩性的场景
用于对象及 JSON 数据的存储
剩余237页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论6