MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
对于关系型数据库,我们都比较熟悉,这里不做详细的介绍,主要来介绍的就是非关系型数据库,NoSql.
Ø NoSql
简介
什么是NoSql? NoSQL = Not Only SQL,也就是意味着不仅仅是sql。NoSQL,指的是非关系型的数据库。
NoSql的发展是随着互联网web2.0网站的兴起,而发展起来的,传统的关系型数据库在应对超大规模以及高并发的sns类型的访问的时候显然显得力不从心,而非关系型数据库则以其自身独特的优点得到了迅速的发展。
其自身主要独特的优势在于:面对对象进行存储,便于存储对象类型的数据;模式自由,存储在mongodb中的数据文档,我们无需知道它的结构定义;文档的存储类型为bson,也就是存储的文档是以键值的形式存在的;并且支持索引以及动态查询等等。
原因
NoSql的出现并非偶然,是随着互联网web2.0的兴起发展起来的,传统的关系型数据库在应对web2.0网站时,已经暴露出了弊端。主要表现在:
1. 数据库的高并发读写请求
个性化发展的今天。网站要根据用户的个性化设置生成对应的信息,所以静态页面此时是无法使用的。故而我们对于数据库的操作是十分频繁的,传统关系型数据库在应对万级sql查询勉强可以接受,但是在万级的写请求就是一个灾难性的操作,故而传统数据库在写操作上面存在瓶颈。
2、 海量数据的高效率访问
对于一些用户类网站,每天的访问量是十分巨大的,甚者上亿,在海量数据中进行查询,对于关系型数据库来说可谓是一个大的工作量,并且效率极低,可能因为大量用户访问导致系统不可用。
3、 高可用和高可扩展性
我们知道基本上很多的数据库是需要24小时不断地进行运行的,对于关系型数据库,横向扩展是很困难的,所以当用户量与日俱增的时候,添加硬件或者扩展节点是不容易的,系统升级更是不易。
但是我们知道关系型数据库存在自身的优点,比如:事务一致性,读写实时性,以及多表查询,但是这个对于web2.0网站来说是没有任何好处,反而限制了关系型数据库的横向扩展等等。
不同于关系型数据库,NoSql存在的优势就是:没有声明性查询语言;没有预定义的模式;键 - 值对存储,列存储,文档存储,图形数据库;最终一致性,而非ACID属性;非结构化和不可预知的数据;CAP定理;高性能,高可用性和可伸缩性。
当然也存在缺点:没有标准化,查询功能有限等。
大致了解了NOSql的知识后,我们来看看Mongodb。
Ø MongoDB
概念
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
主要特点
(1)面向集合存储:集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的。类似于关系数据库中的table
(2)文档型:文档是一组键 - 值对
(3)动态模式:文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。
关系型数据库与非关系型数据对比
安装
电脑安装的系统为windows,故而我们以在windows平台为例进行讲解
下载地址:https://www.mongodb.com/download-center#community
选择windows平台的进行下载
下载完毕点击直接安装即可。
安装完毕的目录结构
配置
第一步:为了方便我们使用mongodb中的命令,我们可以将bin目录设置到环境变量的path中去
第二步:建一个目录来存放Mongo的数据文件,如图:一个存储数据文件,另一个存储mongodb的日志文件
第三步:启动mongodb的服务端
使用mongod命令可以启动
此时因为我们配置了环境变量path,故而不需要进入到mongodb的安装目录bin下面启动,这也是配置到环境变量的好处。
我们还可以看到mongodb的默认监听的端口是27017。
看到端口号出现的时候表示我们的服务启动成功了
第四步:此时我们可以启动客户端
我们看到已经连接上了,默认连接到test数据库,当然我们也是可以切换的,使用use +数据库名,即可。使用db 命令可以查看当前数据库
此时服务端的改变是什么呢?显示的内容是;
1 (1 connection now open)
表示已经连接上了
当然为了更加便于启动,我们可以写成脚本文件,就是把我们的在命令窗口执行的,写在一个批处理文件中即可。
当然此时的客户端连接的默认端口为27017.
至此Mongodb的安装和配置讲解完毕,此外还有一提的是,因为我们在下面的学习中搭建了Mongodb的主从模式,在没有两台机器或者多台机器的情况下,我采用的建立多个文件夹,来指定不同的端口,从而搭建多个服务器。
至于如何更改Mongodb的端口号,我们在启动一个服务的时候,使用命令行,使用—port 参数,来自定义端口号。这样的话,那么你连接你的服务的时候也是需要手动指定你的连接端口号的。