mongoDB数据库理论基础

一、NoSQL(not only sql)

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

1. RDBMS VS NoSQL

mongoDB数据库理论基础_第1张图片

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中的基本概念

mongoDB数据库理论基础_第2张图片

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)丰富的查询语言等,可以参考可见或者笔记

你可能感兴趣的:(数据库技术,数据库,nosql,mongodb)