排版太烦了放弃
https://www.jianshu.com/p/24d0249b5be5
一、Nosql简介
Nosql的全称为”not only sql”,为非关系型数据库。这类数据库的主要特点是:
非关系型、分布式、开源的、水平可扩展的。
Nosql最典型的应用为key-value存储。Nosql的最主要的用途是大数据的处理,这个问题在传统的关系型数据库中有严重的系统瓶颈,而nosql的诞生很好的解决了这个问题。
传统的数据库在应付web2.0网站,特别是超大规模和高并发的网站的时候,暴漏除了很多的问题。
系统对数据的需求
1.High performance (对数据库高并发读写的需求)
因为web2.0的网站要根据用户的需求实时生成动态页面和提供动态的信息,所以基本上不能使用页面缓存的技术。因此数据库的并发负载特别高。所以要应付上万次并发的读写请求,传统数据库就有点力不从心了。
2.High Storage (对海量数据的高效存储和访问需求)
对于一些大型的网站,每天都要产生海量的信息,以国外的fack book为例,每个月就要达到2.4亿条数据,对于关系型数据库来说,一张表存储2.5亿条数据,然后再对其查询,其效率是极其低下的。
3.High Scalability&&High Availability (高扩展性和高可用性需求)
在一个web结构中,数据库是很难横向扩展的。当一个系统的用户量和访问量增长特别大的时候,你没有办法像web service那样通过简单的添加硬
件和服务节点来扩展性能和负载能力。往往要进行数据迁移,这个事情对
于很多DBA来说是比较痛苦的。
#####关系型数据库的缺点
对于海量数据,关系型数据库对于实时性这点来说是很难做到的,如果想做到,必须增加数据库服务器,而数据库服务器有很多文件,例如:控制文件、数据文件、日志文件等。特别是控制文件的结构特别复杂,增加服务器就涉及到备份数据库,这个工作将是很庞大的。而且有的时候,需要涉及到添加硬件。这就需要消耗大量的资金。
关系型数据库一次读取,需要消耗很多资源。例如:先打通数据库的连接,再开启会话,然后发送请求即sql语句。数据库内部解析SQL语句也是一个比较复杂的过程。如果碰到一次性大批量的数据的读写要求,这对关系型数据库是很难做到效率比较高的。
Nosql特点
可以处理超大数量的数据
可以运行在便宜的PC上,成本比较低
在查询的过程中,没有了sql语句,所以减少了数据库解析sql语句的环节,这个环节没有了,大大的提升了系统的性能。
Nosql的产品都是开源的。我们可以清楚的了解最底层的事情。
2.Mongoldb
Mongodb是发展最快的,当下用的最多的nosql数据库。它是在非关系型数据库中最类似关系型数据库的数据库。特点如下:
支持强大而复杂的查询
能建立索引
是一个面向集合、模式自由的文档型数据库
面向集合
在这里集合的概念,类似于关系型数据库中表的概念。称为Collection。
模式自由
我们不需要在集合中做各种约束,在关系型数据库中,如果一个表定义完成以后,那么字段的名称、类型、约束就定义好了。在该数据库中,不需要提前给集合定义类型等。而是动态添加的。例如:
{“welcome”,”itcast”}
{“java”,”very good”}
这是两条记录,完全可以记录在一个Collection中。
文档型
我们存储的数据是键值对的集合,值可以是数据类型集合中的任意类型,包括数组和文档。
Mongo特点
面向集合存储,易于存储对象类型的数据
模式自由
支持动态查询
支持索引
支持查询
支持复制和故障恢复
使用高效的二进制存储,包括大型对象
支持处理碎片,以支持云计算层次的扩展性。
支持大部分语言(java,net.php…,并且提供了相应的驱动程序)
Mongodb的下载与安装
下载
Mongodb的下载网址为: http://downloads.mongodb.org/win32/mongodb-win32-i386-1.8.1.zip。这里要注意:windowXP的系统,2.0以上的版本是不支持的。
安装
设置mongodb程序存放的目录
将下载的文件解压,在c盘的根目录中创建一个文件夹c:\mongo,把解压后bin的文件夹放入到mongo中。
设置数据文件存放目录
在C盘下创建一个文件夹c:\db,该db文件夹就是数据文件存放的目录
启动MongoDB服务
进入cmd控制台,c:\mongo\bin\mongod.exe –dbpath=c:\db
从上图可以看出默认的端口号是27017
将mongodb作为window服务随机启动
先创建一个c:\mongo\log.mongodb.log文件,用于存储mongodb的日志文件。再安装系统服务:
在这里要注意:因为window服务是随机启动的,这就意味着如果把服务的窗口关闭以后,mongodb的服务就不存在了,所以这里是不能关闭mongodb的服务窗口的。要想成为window的服务,查看3.3
客户端验证链接
打开一个新的窗口,输入c:\mongo\bin\mongo,如果有如下的提示,说明能连上数据库服务了。
这个时候也可以通过查看c:\mongo\log\mongodb.log查看日志。
window服务
使用该命令创建就可以成为window的服务
c:\mongo\bin>mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath c:\MongoDB.Log --dbpath c:\MongoDB --directoryperdb
在这里,serviceName指的就是window的服务
serviceDisplayName 指的是window的管理中服务的名称
4.Mongo的体系结构
一个运行着mongodb的数据库可以看做是一个mongodb server。该server由实例和数据库构成。
在一般情况下,一个mongoDB Server机器上包含一个实例和多个与之对应的的数据库。
但是在特殊情况下,允许一个mongoDB Server上有多个实例和多个数据库。
Mongodb的物理结构(数据文件和日志文件)和对应的逻辑结构(集合、文档)构成了mongodb的数据库。这个概念和oracle的系统结构的概念类似。
4.1 数据逻辑结构
Mongodb主要是由文档(document),集合(Collection)、数据库(database)这三部分组成。逻辑结构是面向用户的,用户在使用mongodb开发程序的时候,使用的就是逻辑结构。
Document
1、 document相当于数据库表中的一行记录。
2、可以随意的自定义document的结构,也就是说每一个document中的数据结构有可能是不一样的。可以在程序中随意的动态的定义document的结构。
4.2 Collection
Collection相当于关系数据库中的表,是由多个document组成的。
db
很多collection结合在一起,就形成了db。一个mongodb server支持多个数据库
4.3 关系