MongoDB数据库学习笔记(一)

本文深入探讨了NoSQL数据库的兴起背景和优势,对比了NoSQL与RDBMS的特性,并重点介绍了MongoDB,一个功能丰富的非关系型数据库。MongoDB以其灵活的数据模型和高性能,成为NoSQL数据库中的佼佼者,适合处理大量数据和需要高查询速度的场景。文章还列举了MongoDB与关系型数据库的术语对应,以及其支持的数据类型。
摘要由CSDN通过智能技术生成

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是非关系型数据库中像关系型数据库的

一、NoSQL数据库介绍

1.为什么使用NoSQL

        随着互联网的飞速发展和普及,上网产生的数据越来越多,这些数据大部分都是关系型数据库来进行处理的,但是关系型数据库的范式约束、事务特性、磁盘IO等特点导致大量数据产生时,其无法满足快速查询和插入数据的要求,所有需要NoSQL数据库来解决这些问题。
        NoSQL通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,获取到了性能的提升。同时这也导致了NoSQL在一些绝对要有事务和安全指标的场景下不适用。故现有的项目大多数都采用了两种数据库结合工作的形式。

2. RDBMS和NoSQL的对比

NoSQLRDBMS
代表着不仅仅是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数据库在以下几种情况下比较适用:

  • 数据模型比较简单
  • 需要灵活性更强的IT系统
  • 对数据库性能要求高
  • 不需要高度的数据一致性
  • 对于给定的Key,比较容易映射复杂值的环境

二、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正则表达式类型,用于存储正则表达式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值