MongoDB学习(一)介绍

这里写图片描述


NoSQL数据库

       MongoDB数据库是一种NoSQL数据库,NoSQL数据库不是这几年才有的,从数据库的初期发展就已经有了NoSQL数据库。数据库之中支持的SQL语句是由IBM开发出来的,并且最早就应用在了Orcale数据库,但是SQL语句的使用并不麻烦,就是简单的几个关键字:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。但是这个时候有人开始反感于编写SQL操作。于是有一些人就开始提出一个理论——不要去使用SQL,于是最早的NoSQL概念就产生了。可是后来的发展产生了一点变化,在90年代到2010年之间,世界上最流行的数据库依然是关系型数据库,并且围绕着关系型数据库开发出了大量的程序应用。后来又随着移动技术(云计算、大数据)的发展,很多公司并不愿意使用大型的厂商数据库——Oracle、DB2,因为这些人已经习惯使用MySQL数据库了。这些人发现在大数据、云计算环境下,数据存储受到了很大的挑战,那么后来就开始重新进行了NoSQL数据库的开发,但是NoSQL数据库的开发,经过长期的凡在NoSQL数据库依然不可能离开传统的关系型数据库(NoSQL==>Not Only SQL)

MongoDB数据库
一、简介
       mongoDB是一个开源的,基于分布式的,面向文档存储的NoSQL数据库。是非关系型数据库当中功能最丰富、最像关系数据库的。
       MongoDB是面向文档的数据库,不是关系型数据库。放弃关系模型的主要原因就是为了获得更加方便的扩展性,当然还有其他好处。
       mongoDB由C++编写,其名字来源于”humongous”这个单词,其宗旨在于处理大量数据。

       mongoDB可以运行在Windows、unix、OSX、Solaris系统上,支持32位和64位应用,提供多种编程语言的驱动程序。

       mongoDB支持的数据结构非常松散,是类似json的BSON格式,通过键值对的形式存储数据,可以存储复杂的数据类型。

       mongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

二、mongoDB的特性:

  1. 面向集合存储。数据被分组到若干集合,每个集合可以包含无限个文档,可以将集合想象成RDBMS的表,区别是集合不需要进行模式定义。
  2. 模式自由。集合中没有行和列的概念,每个文档可以有不同的key,key的值不要求一致的数据类型。
  3. 支持动态查询。mongoDB支持丰富的查询表达式,查询指令使用json形式表达式。
  4. 完整的索引支持。mongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。
  5. 高效的数据存储,支持二进制数据及大型对象(图片、视频等)。
  6. 支持复制和故障恢复。自动分片以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器。

三、 mongoDB的适用场景:

  1. 适合作为信息基础设施的持久化缓存层
  2. 适合实时的插入、更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性
  3. 适合文档化格式的存储及查询
  4. 适合由数十或数百台服务器组成的数据库

四、mongoDB不适用场景:

  1. 要求高度事务性的系统。例如对于银行或会计等需要大量原子性复杂事物的应用程序来说,还是需要关系型数据库的。
  2. 传统的商业智能应用
  3. 复杂的表级联查询

       实际上再实现的开发之中一存在一种神奇的转换过程:

       数据表→JDBC读取→POJO(VO、PO)→控制层转化为JSON数据→客户端

       可是这样的转换实在是太麻烦了,那么最好的做法是,直接有一个数据库就存放有要显示的JSON数据该有多好,那么就省略所有需要进行转换的过程。所以在实际的开发中,往往除了关系型数据库之外再提供一个NoSQL数据库。其中NoSQL数据库负责数据的读取,因为直接保存的就是JSON(MongolDB中的数据就是排列好的组合数据)

       例如:现在要求显示出每个雇员的编号、姓名、职位、部门名称、部门位置、工资等级。传统的关系型数据库中一定要存放在大量的冗余数据。而有了NoSQL数据库只用,可以直接在业务层里面将数据交给NoSQL数据库保存,按照指定的结构进行存储。

       在MongoDB数据库中于Oracle数据库有如下的概念对应:

       这里写图片描述

       在整个行业之中,MongoDB数据库是发展最好的NoSQL数据库,因为它是与Node.js捆绑在一起了,也就是如果你要从事Node.js的开发,通常会使用MongoDB,而Node.js在国内最成功的应用是淘宝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值