MongoDB数据库学习笔记
1、数据库是按照数据结构来组织、存储和管理数据的仓库
2、我们的程序都是内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失,所以为了让程序运行的数据能够保存下来,需要将一些程序运行的数据持久化到硬盘中,以确保数据的安全性,而数据库就是数据持久化的最佳选择,即数据库就是一个用来存储数据的仓库
3、数据库主要分为两类:关系型数据库(RDBMS)和非关系型数据库(NoSQL)
4、关系型数据库的特点在于数据库中全都是表,所有的关系型数据库都是使用结构化查询语言(SQL)来操作的,SQL是一种标准化的查询语言。常见的关系型数据库有MySQL,Oracle,DB2,SQL Server等
5、NoSQL(Not only SQL)的意思是"不仅仅是SQL",它可以代指非关系型数据库,是对不同于传统的关系型数据库的数据库的统称。NoSQL用于超大规模的数据的存储,这些类型的数据存储不需要特定的格式,无需多余操作就可以横向拓展。常见的非关系型数据库有MongoDB,Redis等
6、MongoDB是非关系型数据库中像关系型数据库的
文章目录
- MongoDB数据库学习笔记
- 一、NoSQL数据库介绍
- 1.为什么使用NoSQL
- 2. RDBMS和NoSQL的对比
- 3. NoSQL四大家族
- 4. NoSQL的优缺点
- 5、总结
- 二、MongoDB数据库介绍
- 1、MonogoDB简介
- 2、MongoDB与关系型数据库术语对比
- 3、MongoDB的数据类型
一、NoSQL数据库介绍
1.为什么使用NoSQL
随着互联网的飞速发展和普及,上网产生的数据越来越多,这些数据大部分都是关系型数据库来进行处理的,但是关系型数据库的范式约束、事务特性、磁盘IO等特点导致大量数据产生时,其无法满足快速查询和插入数据的要求,所有需要NoSQL数据库来解决这些问题。
NoSQL通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,获取到了性能的提升。同时这也导致了NoSQL在一些绝对要有事务和安全指标的场景下不适用。故现有的项目大多数都采用了两种数据库结合工作的形式。
2. RDBMS和NoSQL的对比
NoSQL | RDBMS |
代表着不仅仅是SQL | 高度组织化结构化数据 |
没有统一的查询语言 | 结构化统一的查询语言 |
没有预定义模式 | 数据和关系都存在单独的表中 |
键-值对存储,列存储,文档存储,图像数据库 | 数据操纵语言,数据定义语言 |
最终一致性,而非ACID属性 | 严格的一致性 |
非结构化不可预知的数据 | 基础事务 |
CAP定理 | |
高性能定理、高可用性和可伸缩性 |
3. NoSQL四大家族
- 键值对(key-value)存储
特点:键值数据库就像传统语言中的哈希表,通过key添加,查询或删除数据
优点:查询速度快
确定:数据无结构化,通常只被当作字符串或者二进制数据存储
应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载
NoSQL代表:Redis、Memcached - 文档(Document-Oriented)存储
特点:文档数据库将数据以文档的形式存储,类似JSON,是一系列数据项的集合,每个数据项都有一个名称和与之对应的值,值既可以是简单的数据类型,如字符串、数字和日期等,也可以是复杂的类型,如有序列表和关联对象
优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
缺点:查询性能不高,缺乏统一的查询语法
应用场景:日志、Web应用等
NoSQL代表:MongoDB、CouchDB - 列(Wid Column Store/Column-Family)存储
特点:列存储数据库将数据存储在列族(Column Family)中,将多个列聚合成一个家族,键仍然存在,但是他们的特点是指向了多个列。比如:如果存在一个Person类,通常会一起查询他们的性命和年龄而不是薪资,这种情况下姓名和年龄就会被放入到一个列族中,而薪资就会被放入另一个列族中
优点:列存储查找速度快,可拓展性强,更容易进行分布式拓展,适用于分布式的文件系统,应对分布式存储的海量数据。
缺点:查询性能不高,缺乏统一的查询语法
应用场景:日志、分布式的文件的文件系统(对象存储)、推荐画像、时空数据、消息/订单等
NoSQL代表:Cassa - 图形(Graph-Oriented)存储
特点:图形数据库允许我们将数据以图的形式存储
优点:图形相关算法,比如最短路径寻址、N长度关系查找等
缺点:很多时候需要对整个图形做计算才能得出需要的信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃
应用场景:社交网络、推荐系统等,专注于构建关系图谱
NoSQL代表:Neo4j,Infinite Graph
4. NoSQL的优缺点
5、总结
NoSQL数据库在以下几种情况下比较适用:
二、MongoDB数据库介绍
1、MonogoDB简介
- mongo一词源于Humongous(巨大的、庞大的),表示支持海量数据存储
- MongoDB是一个基于分布式文件存储的NoSQL数据库,由C++语言编写,旨在为WEB应用提供可拓展的高性能数据存储解决方案
- MongoDB是一个介于关系型数据库和非关系型数据库的数据库,是非关系型数据库中功能最丰富、最像关系型数据库的数据库
- MongoDB使用BSON(Binary JSON)对象来存储数据,与JSON格式的键值对(key/value)类似,字段值可以包含其他文档,数组及文档数组,支持的查询语言非常强大,其语法优点类似于面向对象的查询语言,几乎可以实现类似关系型数据库表单查询的绝大部分功能,而且还支持对数据建立索引
2、MongoDB与关系型数据库术语对比
SQL术语概念 | MongoDB术语概念 |
databse(数据库) | databse(数据库) |
table(表) | collection(集合) |
row(行) | document or BSON document(文档) |
index(索引) | index(索引) |
table joins(表连接) | embeded documents and linking(嵌入的文档和链接) |
3、MongoDB的数据类型
数据类型 | 描述 |
String | 字符串,存储数据常用的数据类型,在MongoDB中,utf-8编码的字符串才是合法的 |
Integer | 整型数值,用于存储数值,根据采用的服务器,可以分为32位或64位 |
Boolean | 布尔值,用于存布尔值 |
Min/Max keys | 将一个值与BSON元素的最低值和最高值相对比 |
Arrays | 用于将数组或列表或多个值存储为一个键 |
Timestamp | 时间戳,用于记录文档修改或添加的具体时间 |
Object | 用于内嵌文档 |
Null | 用于创建空值 |
Symbol | 符合,该数据类型基本上等同于字符串类型,但不同的是它一般采用特殊符号类型的语言 |
Date | 日期时间。用UNIX时间格式来存储当前日期或时间,可以指定自己的日期时间:创建Date对象,传入年日月信息 |
Object ID | 对象ID,用于创建文档的ID |
Binary Data | 二进制数据,用于存储二进制数据 |
Code | 代码类型,用于在文档中存储JavaScript代码 |
Regular expression | 正则表达式类型,用于存储正则表达式 |