刚刚面试完,心情很是不愉快,特此在此更博一篇,发泄一下

<>数据库的分类



<>关系型数据库遵循的ACID

* A (Atomicity)原子性
* C (Consisitency)一致性
* I (Isolation)独立性
* D (Durability)持久性
<>为什么使用NoSql
not only sql
现在个人信息爆炸
对爆炸的数据挖掘 传统的SQL数据库已经不在适合
NoSql解决了大数据的处理和存储问题

<>RDBMS NoSQL

RDBMS

* 高度组织化结构化数据
* 结构化查询语言SQL
* 数据和关系都存储在单独的表中
* 数据操纵语言,数据定义语言
* 严格的一致性
* 基础事务
NoSQl

* not only sql
* 没有声名性查询语句
* 没有预定义的模型 键值对存储,列存储,文档存储,图形数据库
* 最终一致性,而非ACID属性
* 非结构化和不可预支的数据
* CAP定理
* 高性能,高可用性和可伸缩性
<>CAP定理

对于一个分布式计算系统来说,不可能同时满足一下三点 最多满足两个

* 一致性(所有节点在同一时间具有相同的数据)
* 可用性(保证每个请求成功与否都有相应)
* 分隔容忍(系统中任意信息的丢失或者失败不会影响系统的继续运作)
因此根据CAP原理将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则

* CA-单点集群,满足一致性,满足性的系统,通常在可扩展性上不太强大
* CP-满足一致性,分区容忍性的系统,通常性能不是特别高
* AP-满足可用性,分区容忍性的系统,通常可以对一致性要求低一些


<>NoSQL的优缺点

优点

* 高拓展性
* 分布式计算
* 低成本
* 架构的灵活
* 半结构化数据
* 没有复杂的关系
缺点

* 没有标准化
* 有限的查询功能(目前为止)
* 最终一致是不直观的程序
<>NoSQl分类


# MongoDB简介
C++编写
分布式文件存储的开源数据库系统
可以横向扩展
将数据存储为一个文档,数据结构为(KV)
文档类似于JSON对象,字段值可以包含其他文档


<>主要特点

* 面向文档存储的数据库,操作起来比较简单
* 可以设置任何属性的索引(FirstName = “Sameer”,Address=“8”)实现更快的排序
* 通过本地或者网络床架数据镜像,使Mongo有更强的扩展性
* 分片:分布在计算机网络的其他节点
* Mongo支持丰富的查询表达式.查询指令JSON形式
* update实现替换完成的文档
* MR对数据进行批量处理和聚合操作
* Map函数调用emit(key,value)遍历集合中所有的记录,kv传给Reduce函数
* Reduce函数是JavaScript编的,通过db.runCommand或mapreduce命令来执行
* GridFS是MongoDB中的一个内置功能,可以用来存放大量小文件
* 允许在服务端执行脚本,可用javaScript编写某个函数,直接在服务端执行,函数定义也可以存储在服务端,下次直接调用即可
* 支持各种编程语言:ruby Python java C php等
<>MongoDB解析




<>数据库

一个MongoDB可以创建多个数据库

默认数据库为db 该数据库存储在data目录

单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库放置在不同文件中

数据库通过名字来标识.数据库名字可以是满足以下任意utf-8字符串
不不能是空字符串串("")。 不不得含有' '(空格)、.、$、/、\和\0 (空字符)。 应全部小小写。 最多64字节。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库

* admin root数据库,将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限.特定的命令只能够这个数据库运行(列出所有的数据库或关闭服务器)
* local 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
* config:当Mongo用于分片设置时,config在内部使用,用于保存分片的相关信息
<>文档

文档是一组kv(BSON).Mongo的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,与关系型数据库有很大差别,也是MongoDB的特点
{"site":"www.skedu.com", "name":"山山科大大mongodb"}
RDBMS与MongoDB对应的术语:

注意

* kv是有顺序的
* 文档中的值不仅可以是在双引号里的字符串,还可以是其他几种数据类型(甚至是整个嵌入式文档)
* 区分类型和大小写
* 文档不能有重复的键
* 键是字符串.除了少数例外,可以使用UTF-8
文档命名规范
* 键不能含有\0(空字符).这个字符用来表示键的结尾
* .和$有特殊意义
* _开头是有保留的(不是严格要求)
<>集合

集合就是 MongoDB 文文档组,类似于 RDBMS (关系数据库管理理系统:Relational Database
Management System)中的表格
没有固定的结构,意味着在对集合可以插入不同格式和类型的数据
但通常情况下插入集合的数据有一定的关联性
{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜⻦鸟教程","num":5}
<>MongoDB数据类型


下一篇
Mongo入门-2-基本操作 <https://blog.csdn.net/weixin_39381833/article/details/89221189>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信