mongoDB数据库理论基础

一、NoSQL(not only sql)

泛指非关系型数据库,对于SQL的一个扩充,数据存储表示形式以键值对的,“键:值”

1. RDBMS VS NoSQL

在这里插入图片描述

2. 关系型数据库(RDBMS)的(ACID)设计模式

1)A (Atomicity) 原子性。也就是说事务里的所有操作要么全部做 完,要么都不做。
2)C (Consistency) 一致性。也就是说数据库要一直处于一致的状 态,事务的运行不会改变数据库原本的一致性约束。
3)I (Isolation) 独立性。是指并发的事务之间不会互相影响。
4)D (Durability) 持久性。指一旦事务提交后,它所做的修改将 会永久的保存在数据库上,即使出现宕机也不会丢失

3. CAP定理

在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定 理(Brewer’s theorem), 它指出对于一个分布式计算系统来说, 不可能同时满足以下三点
• 一致性(Consistency) (所有节点在同一时间具有相同的数据)
• 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
• 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影 响系统的继续运作)

4. NoSQL技术优势

根据CAP的核心定义,将CAP分成了三部分:CA、CP、AP
NoSQL很好的融合了CA、CP、AP定理,也就是:
• CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不 太强大。
• CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
• AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一 些。

5. NoSQL的优点和缺点

1)优点:
• 高可扩展性
• 分布式计算
• 低成本
• 架构的灵活性,半结构化数据
• 没有复杂的关系
2)缺点:
• 没有标准化
• 有限的查询功能(到目前为止)

二、MongoDB

1. 什么是Mongodb

MongoDB是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

2. Mongodb中的基本概念

在这里插入图片描述

2.1 数据库

• 一个mongodb中可以建立多个数据库。
• MongoDB的默认数据库为"db",该数据库存储在data目录中。
• MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据 库也放置在不同的文件中。
系统保留数据库:可以直接访问这些有特殊作用的数据库。
①admin: 从权限的角度来看,这是“root”数据库。
②local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合;
③config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

2.2 文档

一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的 字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
需要注意的是:
• 文档中的键/值对是有序的。
• 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型
• MongoDB区分类型和大小写。
• MongoDB的文档不能有重复的键。
• 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。但是,键不能含有\0 (空字 符)。这个字符用来表示键的结尾;.和$有特别的意义,只有在特定环境下才能使用;以下划线 "_"开头的键是保留的(不是严格要求的)。

2.3 集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。集合存在于数据库中,集合没有固定的结构,对集合可以插入不同格式和类型的数据,但通常 情况下我们插入集合的数据都会有一定的关联性。
集合命名的时候应该注意:
• 集合名不能是空字符串""。
• 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
• 集合名不能以"system."开头,这是为系统集合保留的前缀。
• 用户创建的集合名字不能含有保留字符。

三、问答

1.什么是NoSQL数据库?NoSQL和RDBMS有什么区别?在哪些情况下使用和不使用NoSQL数据库?
1)NoSQL是非关系型数据库,NoSQL = Not Only SQL。
2)关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。
3)在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时;随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。
4)在考虑数据库的成熟度;支持;分析和商业智能;管理及专业性等问题时,应优先考虑关系型数据库。

2.MySQL和MongoDB之间最基本的区别是什么?
关系型数据库与非关系型数据库的区别,即 数据存储结构的不同

3.MongoDB的特点是什么?
1)面向文档
2)高性能
3)高可用
4)易扩展
5)丰富的查询语言等,可以参考可见或者笔记

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/107520616
今日推荐