Mongodb学习
说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成。MongoDB是异步写数据。
第一章 环境配置
一、Mongodb简介
- 功能特点
- 适用范围
功能特点
官方网址:http://www.mongodb.org/
MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。
它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等,主要功能特性有:
面向文档存储:(类JSON数据模式简单而强大)。
- 高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
- 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。
- Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
- 动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- 全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
- 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
优缺点:
mongodb作为一个很热门的nosql数据库有着比较多的优点,大概归纳为以下五点。
(1)、无模式
mongodb是一个文档型存储的数据库,每一行数据都是一个文档,每一个文档中的字段可以不一致,个数也可以不相同,而且是一个以bson方式存储的文档。bson: short for Binary JSON
(2)、高性能
mongodb的高性能是怎么实现的呢?
这个主要依靠2点来解决(当然还有很多其它的)。第一点是mongodb的存储空间是预先分配的。以64位机器为例,首先分配64m,以0填充,然后每次文件空间大小翻倍,直到2G,然后每次分配2G。预先分配的好处是不需要每次存储的时候都分配空间,加快了存储的效率。第二点是mongodb的内存映射机制。mongodb首先将数据写到内存,然后异步写道硬盘上(如果是非安全模式的话)。mongodb是不管理内存的,它将这份工作交给了操作系统。
(3)、易扩展
mongodb集群是很容易扩展的(添加删除节点简单),而且可以支持数据的分片。(后面的章节会详细的介绍怎么分片以及怎么扩展)
(4)、易管理
mongodb的管理几乎都是自动的。自动故障转移:当一个分片中的primary机器down后,其它机器会自动选举,选出一台机器当primary。自动负载均衡:当两个分片的数据相差很大时,集群会自动将一部分数据转移到数据少的分片上。
(5)、多功能
mongodb的功能很多,例如:索引,聚合,分布式的文件存储,js存储过程,GridFS文件存储,定容集合等。
优点说到这,mongodb同样也有着它的限制或缺点,主要是下面两点。
(1)、mongodb占用存储空间大。
这主要是由三个因素决定的。第一,mongodb的空间预分配方式,这样会让mongodb最多浪费不超过2G+2G文件大小的空间。第二,mongodb的字段名占用,即使是相同的字段,mongodb也会在每一个文档中都存储,这里会浪费极大的空间。第三,mongodb删除数据并不会释放空间,而只是将空间记录为删除状态以便重用。
(2)、mongodb没有事务模式,所以事务要求严格的系统慎用。
适用范围
适用场景:
- 适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性。
- 适合作为信息基础设施的持久化缓存层。
- 适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对MapReduce引擎的内置支持。
- Mongo的BSON数据格式非常适合文档化格式的存储及查询。
不适用场景:
- 高度事务性的系统。
- 传统的商业智能应用。
- 复杂的SQL查询。
二、Mongodb下载与安装
- 下载地址
- 安装步骤
下载地址
http://www.mongodb.org/downloads,选择相应的版本下载
安装步骤
- 在(C/D/E/F)盘新建文件夹MongoDB。
- 解压下载的文件,将bin目录拷贝到文件夹MongoDB。
- 在文件夹MongoDB下新建文件夹data,在文件夹data下新建文件夹db和log(db下放的是数据库文件,log下方的是windows日志,后面将讲解)。
- 执行命令:【mongod -auth --dbpath "E:mongodbdatadb"】将mongodb的数据库文件创建到E:mongodbdatadb 目录下,此时数据库就已启动。如图:
三、Mongodb服务管理
- window服务注册
- 服务开闭
window服务注册
注意:一定要以管理员的身份打开cmd。具体请参考官网说明http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
使用命令【mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath E:mongodbdatalogmongodb.log --dbpath E:MongoDB --directoryperdb】注册window服务。
服务开闭
使用命令【net stop mongodb】关闭mongodb服务。
使用命令【net start mongodb】启动mongodb服务。