Mongo入门-1-原理

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

数据库的分类

在这里插入图片描述

关系型数据库遵循的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-基本操作

  • 37
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值