MongoDB讲解

MongoDB的使用

一、nosql的讲解

1、nosql

	什么是nosql : NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系
型的数据库
	nosql的代表:MongDB、 Redis、Memcache

2、为什么使用nosql

	随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和
高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关
系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规
模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
	虽然NoSQL流行语火起来才短短几年的时间,但是不可否认,现在已经开始了第二代运动。尽
管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着
一个严酷的事实:技术越来越成熟——以至于原来很好的NoSQL数据存储不得不进行重写,也有少数
人认为这就是所谓的2.0版本。一些比较知名的工具,可以为大数据建立快速、可扩展的存储库。
	例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需
要固定的模式,无需多余操作就可以横向扩展。
	简而言之:就是为了满足现在的需求

3、常见的nosql

3.1) . 键值(Key-Value)存储数据库
	这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更
新的时候,Key/value就显得效率低下了。[3]  
	举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
3.2) . 列存储数据库
	这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了
多个列,这些列是由列家族来安排的。
	如:Cassandra, HBase, Riak.
3.3文档型数据库
	文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。
该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据
库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询
效率更高。
	如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
3.4) . 图形(Graph)数据库
	图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,
并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询
需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。
	如:Neo4J, InfoGrid, Infinite Graph.

4、NoSql数据库在一下的这几种情况下比较适用

    1) 数据模型比较简单;
    2) 需要灵活性更强的IT系统;
    3) 对数据库性能要求较高;
    4) 不需要高度的数据一致性;
    5) 对于给定key,比较容易映射复杂值的环境。

5、关系型数据库与NoSQL的区别?

5.1) . RDBMS (Relational Database Management System)
高度组织化结构化数据
结构化查询语言(SQL)
数据和关系都存储在单独的表中
数据操纵语言,数据定义语言
严格的一致性
基础事务
    
ACID
关系型数据库遵循ACID规则
事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

A (Atomicity) 原子性
	原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的
条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银
行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B
账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其
妙少了100元。

C (Consistency) 一致性
	一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数
据库原本的一致性约束。

I (Isolation) 独立性
	所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外
一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现
有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的
账户,是看不到新增加的100元的

D (Durability) 持久性
	持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也
不会丢失。
5.2) . NoSql
代表着不仅仅是SQL
没有声明性查询语言
没有预定义的模式
键-值对存储,列存储,文档存储,图形数据库
最终一致性,而非ACID属性
非结构化和不可预知的数据

CAP定理
    高性能,高可用性和可伸缩性
    分布式数据库中的CAP原理(了解)

CAP定理:
    Consistency(一致性), 数据一致更新,所有数据变动都是同步的
    Availability(可用性), 好的响应性能
    Partition tolerance(分区容错性) 可靠性
        P: 系统中任意信息的丢失或失败不会影响系统的继续运作。
        定理:任何分布式系统只可同时满足二点,没法三者兼顾。

CAP理论的核心是:
	一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,
因此,根据 CAP 原理将 NoSQL 数据库分成了满足CA原则、满足CP原则和满足AP原
则三 大类:
    CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP-满足一致性,分区容忍性的系统,通常性能不是特别高。
    AP-满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

	CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网
络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。

	所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

	ps:       C:强一致性 A:高可用性 P:分布式容忍性

	举例:
            CA:传统Oracle数据库

            AP:大多数网站架构的选择

            CP:Redis、Mongodb

	注意: 分布式架构的时候必须做出取舍。一致性和可用性之间取一个平衡。多余大多
数web应用,其实并不需要强一致性。因此牺牲C换取P,这是目前分布式数据库产品的方向。

6、一些使用nosql的公司

	Google、Facebook、Mozilla、Adobe、Foursquare、LinkedIn、Digg、
McGraw-Hill Education、Vermont Public Radio

二、MongoDB的基本讲解

1、MongoDB

	什么是MongoDB : 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应
用提供可扩展的高性能数据存储解决方案。

2、MongoDB的特点

	1) 灵活动态文档模型 : 存储数据的格式为BSON,其是一种基于JSON的升级版本
  	2) 高可用性强 : 主要体现在mongodb的吞吐量上
   	3) 扩展性强 : 可以很方便的水平扩容
   	4) 全文搜索 : 支持全文查找匹配
   	5) 内存引擎 : 直接作用于内存,速度很快 

3、MongoDB的使用场景

	1) 网站数据 : MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据
存储所需的复制及高度伸缩性

	2) 缓存:由于性能很高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启
之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载

	3) 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,
在此之前,很多时候程序员往往会选择传统的文件进行存储

	4) 高伸缩性的场景:MongoDB 非常适合由数十或数百台服务器组成的数据库。
MongoDB的路线图中已经包含对 MapReduce 引擎的内置支持

	5) 用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式非常适合文档化格
式的存储及查询

	例如:
		1>游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文
	档的形式存储,方便查询、更新
		2>物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以
	MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
		3>社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过
	地理位置索引实现附近的人、地点等功能
		4>物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志
	信息,并对这些信息进行多维度的分析
		5>视频直播,使用 MongoDB 存储用户信息、礼物信息等

4、MongoDB的安装

推荐的下载地址:http://dl.mongodb.org/dl/win32/x86_64

0.安装:先下载MongoDB的安装文件,一顿下一步,然后finish

1.配置环境变量:
     打开系统的环境变量设置项-->编辑
      path : C:\Program Files\MongoDB\Server\3.4\bin
2.配置数据存放的地方和日志存放的位置
  	在D盘下创建一个名字为MongodbData的文件夹,并在里面创建两个文件夹分
别为data和logs 还有一个配置文件(mongod.config) ,且在logs文件夹下
创建一个mongodb.log 的文件
3.以管理员身份运行的cmd中先进入到C:\Program Files\MongoDB\Server\3.4\bin下
	本次操作输入的指令为:cd "C:\Program Files\MongoDB\Server\3.4\bin"
4.将MongoDB的服务写入到Windows的服务启动项中:
	设置为自动,是为了以后使用的时候方便
   	本次操作输入指令(指令是一整句,每一小句后需要有空格隔开): 
   				mongod --dbpath  
   				"D:\MongodbData\data"  
   				--logpath "D:\MongodbData\logs\mongodb.log" --install 
   				--serviceName "MongoDB"
5.启动新添加的系统服务:net start MongoDB
6.验证成功: 此时是已经启动了MongoDB的服务了,为了验证是否成功可以在浏览器
端输入:“http://127.0.0.1:27017”如果出现It looks like you are trying to 
access MongoDB over HTTP on the native driver port.说明是启动成功了

ps:	以上操作均是在win10系统中,且匹配的mongoDB的版本为
		mongodb-win32-x86_64-2008plus-ssl-3.4.6-signed.msi
操作示例图片

1.配置环境变量.png
在这里插入图片描述
2.配置数据存放的地方和日志存放的位置.png
在这里插入图片描述
3.步骤操作.png
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值