开发者学堂课程【快速掌握 MongoDB 数据库:MongoDB简介】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/400/detail/5184
MongoDB简介
内容介绍
一、MongoDB简介(了解)
二、为什么要两个数据库结合使用?
一、MongoDB简介(了解)
MongoDB 数据库是一种 NOSQL 数据库,NOSQL 数据库不是这几年才有的,从数据库的初期发展就已经存在NOSQL 数据库。数据库之中支持的 SQL 语句是由 IBM 开发出来的,并且最早就应用在 Oracle 数据库,但 SQL 语句的使用并不麻烦,就是几个简单的单词:SELECT、FROM、WHERE、DROUP BY、HAVING、ORDER BY(几个有限的语句组成了现在的 SQL)。但是在这个时候有人开始反感于编写SQL 操作。实际上在 SQL 这个问题反感的典型代表包括微软最早的某产品,所以它里面要增加就使用 insert 函数,修改就使用update 函数。于是有人就开始提出一个理论——不要去使用 SQL ,所以最早的 NOSQL 概念产生了。但是后来的发展产生了一点变化,在90年代到2010年之间,世界上最流行的数据库依然是关系型数据库,并且围绕着关系型数据库开发出大量的程序应用,比如玩的网络游戏、使用的电话移动信息、所有的个人信息化操作都在关系型数据库里保存着。但是后来又随着移动技术的发展,关键是移动技术的发展还伴随着另外的技术(云技术,大数据)在这样的环境下发展,传统的关系型数据库的最大的问题就是数据存储空间有限,所以 Oracle 里面提供了操作,能够实现跨数据的数据共享,但是配置极其复杂,如果要想用 Oracle 来实现一个数据库局限操作,实践起来是相当复杂。随着发展,很多公司并不愿意使用大型的厂商数据库--Oracle、DB2,因为都已经习惯于使用于 MYSQL 数据库。MYSQL数据库的发展特别好,然后发现在大数据、云计算的环境下,数据存储受到了很大的挑战,后来就开始重新进行了NOSQL 数据库的开发,但是经过长期的开发发现 NOSQL 数据库依然不能离开传统的关系型数据库(NOSQL、Not Only SQL),不能仅仅是传统的 SQL 数据库,应该是两个数据库结合使用。
二、为什么要两个数据库结合使用?
1、实际上在现实的开发之中一直存在一个神奇的问题:
(1)、数据表==>JDBC读取==>POJO(VO、PO)==>控制层转化为 JSON 数据==>客户端
这样的转换实在是太麻烦了,最好的方法就是直接有一个数据库里存放有要显示的json数据库,那么就省略了所有需要进行转换的过程。
(2) 、每一个程序确定程序的好坏是最基本的标准是时间复杂度和空间的复杂度,很明显这个转换会造成时间的加长,而不是空间的加大,因为索取的数据是有限的。取得数据是有分页操作,一定不可能站的地方特别大,但一定存在操作时间的加长,他的时间在资源里零点几秒也是时间,能用0.1的时间而用0.5秒就是浪费资源。所以在这样的环境下,发现的数据库之中应该存有副本,所以在一定的实际开发之中,除了关系型数据库之外还要提供一个 NOSQL 数据库负责数据的读取,因为直接保存的就是 json(前提: mongDB 中的数据是排列好的组合数据)
(3)、例如:
要求显示出每个雇员的编号、姓名、职位、部门名称、部门位置、工资等级。如果想拿它做个列表就需要三张表关联,就要求五个量的显示,那么传统的关系型数据库中需要存放大量的数据。
(4) 、传统的关系型数据库之中一定要存放大量的冗余数据,不合理。而有了NOSQL 数据库之中,可以直接在业务层里面将数据交给NOSQL 数据库保存,按照指定的结构进行存储。记住结构存储是人为定义的结构,结构是不能被改变、修改,大概解释是每行可以不一样,但要尽量保持一样。
2、在MongoDB 数据库之中与 Oracle e数据库有如下的概念对应:
NO. |
关系型数据库 |
NOSQL 数据库 |
1 |
数据库 |
数据库(类似于MySQL ) |
2 |
表 |
集合 |
3 |
行 |
文档 |
4 |
列 |
成员 |
5 |
主键 |
Object ID(自动维护) |
(1) 、在整个行业之中,MongoDB 数据库是发展最好的一个NOSQL 数据库,因为它与node.js 捆绑在一起了,如果要从事 node.js 的开发,那么一定要使用MongoDB,而 node.js 在国内最好的应用--taobao。实际在整个行业中所有的后台业务中心用Java搭建是最好用、最安全、最保守的。这些是因为前面 node.js 一个最大的特点是基于 JavaScript 操作,相当于把 JavaScript 放到了服务器端,不再是简单的客户端。
(2) 、MongoDB 之所以能够很好的发展也取决于:面向集合的存储过程、模式自由(无模式)、方便的进行数据的存储扩充、支持索引、支持短暂数据保留、具备完整的数据库状态监控、基于 BSON 应用。
(3)、模式自由:传统数据库是有模式的,一般情况下用户名和模式名称现在是分不开、一样的,所以往往把用户名理解成模式名,但实际上是两个概念。
(4)、短暂数据保留:比如最常见的功能:给手机注册发了验证码。该验证码90秒内能使用,但过了可能会使用,因为时间可能不准,可以作为临时的数据保留。
(5)、BSON 应用:是一种计算机数据交换格式,主要被用作 MongoDB 数据库中的数据存储和网络传输格式。
(6)、MongoDB 支持各种主流语言,在 prp 编程世界里很大一部分用户是使用MongoDB 数据库去开发,MongoDB 数据库与传统的关系型数据库不是互斥的关系,是互补的关系,两者一定是同时存在。