您的位置:首页 > 数据库 > Mongodb

MongoDB学习整理(二)--特点及概念介绍

2015-02-28 16:40 471 查看
本文是学习MongDb:The Definitive Guide(Mongodb权威指南)一书做的浅显的整理,请大神们多多指教。

丰富的数据模型

MongoDB是面向文档的非关系型数据库,区别于关系型数据库,将关系型数据库的行的概念转变为文档。面向文档的方式可以将文档或数据内嵌到单个文档中,这样一条记录就可以表示非常复杂的数据结构关系。同时符合面向对象的设计思路。

MongoDB没有模式,文档的键不会事先定义也不会固定不变。由于不用将所有的数据都放到一种固定的模式里,所以应用层可以非常容易的变更数据模型,处理新增或丢失的键。没有模式的变更需求,也减少了大量数据迁移的需求。

容易扩展

数据的指数级增长,必定会使开发者面临一个非常困难的选择,如何扩展数据库?升级or扩展,升级是最省力的方法,但大型机一般都很昂贵且达到物理极限后的很难买到更好的机器。这样做即不划算也不现实。而扩展就不同了。

mongodb面向文档的特点,可以使其自动在多动服务器之间分割数据,平衡集群数据和负载,自动重排文档。当需要更大的容量时,只需在集群中增加新机器,数据的扩展交给数据库来完成。开发者也可以专注于如何编写应用,而不是考虑如何扩展数据。

丰富的功能

MongoDB支持通用辅助索引、能进行多种快速查询、提供唯一的,复合的和地理空间的索引能力。

开发人员不必使用存储过程,可以在服务端直接存取javascript函数和值。

支持MapReduce和其它聚合工具

固定大小的集合对某些类型的数据非常有用,如日志。

支持用一种容易使用的协议来存储大文件和元数据。

注意:MongoDb不支持联接(join)和复杂的多行事务。

简便的管理

除了启动数据库服务器外,几乎没有什么性格的管理操作。Mongodb尽量让服务器自治来简化数据库的管理。主服务器一旦挂掉,会自动切换到备用服务器,并设置备用服务器为活跃服务器。分布式环境下,集群只需要知道有新增的节点就会自动集成和配置新节点。

性能

Mongodb尽量将服务器端处理逻辑交给客户端,这样的设计获得了非常好的性能。MongoDb使用MongoDb传输协议作为与服务器交互的主要方式,对文档进行动态填充,预分配数据文件,用空间换取性能的稳定。默认的存储引擎使用了内存映射文件,将内存管理工作交给操作系统处理。动态查询优化器会记住执行查询最高效的方式。

基本概念

1、文档是Mongodb的核心概念,类似于关系型数据库中的行记录,是组成集合的基本数据单元,如:

{"greeting":"hello world!"}


这是一个简单的文档,只有一个键greeting,其对应的值为hello world。

一个文档可以有多个键值对,且位置没有固定要求。

文档中的值可以是其它数据类型,可以有整数据,有数组,有集合,如

{"name":"lim","age":1,"fruit":["apple","orange"],"comments":{"author":"mm","email":"mm@gmail.com"}}


键不能含有表示结尾的\0字符。

以_(下划线)开头的键是保留的。

$有特别的意义,在特定的环境下才使用。

不能有重复的键,键区分大小写。

每一个文档都有一个唯一的特殊的_id键,该键由12个字节组成,每个字节由2个字符组成,共24个字符。

2、集合类似于关系型数据库中的表,但它是无模式的,这就意味着集合中的文档可以是各种各样的,如:

{"name":"lim","age":27}


{"name":"lina"}


{"book":"war and peace","fruit":"apple","favorite":"sports"}


无模式并不意味着需要把所有的数据全放在一个集合里,这样做在具体的开发环境中并不是最合适的,原因有以下几点:

a、把所有的文档放在一个集合里,开发者要么需要每次查询只返回需要的文档。要么让查询应用程序处理所有不同类型的文档,这是一个非常烦人的过程,且在查询速度的上也不划算。

b、同类型的文档放在一起,数据会更加集中,且索引会更加有效。

集合的命名不可以是空字符串,不可以带有\0,不能以系统集合保留前缀system开头,不能含有保留字符$

组织集合名的一种通用方式是用.字符分开,按命名空间划分的子集合,如blog.author blog.content

3、数据库是由多个集合组成的,一个mongodb实例可以承载多个数据库,各数据库之间完全独立。

数据库的命名不可以是空字符串,不可以包含特殊字符(’‘ 空格、. $ \ / \0),全部采用小写,不超过64字节。

有一些数据库是保留的,可以直接访问。如:

admin:管理用户和用户权限。

local:存储本地单台数据库上的任意集合,不会被复制。

config:保存内部分片信息。

数据库加上集合名就是完整的命令空间,长度不可以超过121个字节

4.mongodb默认监听端口是27017,还会启动一个http服务器,监听28017端口。

5.自带JavaScript Shell,可以非常方便的管理Mongodb数据实例。shell在启动后自动连接mongodb服务器,所以确保使用shell前启动mongodb服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 特点