6.29MongoDB简介

MongoDB简介

MongoDB是一款非关系型数据库

基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

NoSQL简介

定义:

NoSQL,指的是非关系型的数据库。

作用:

NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

NoSQL主要指:

  • 非关系型

  • 分布式

  • 不提供ACID

存储特点:

  • key-value存储、文档存储、列存储、图形数据库

  • 没有声明性查询语言

  • 没有预定义的模式

  • 最终一致性

  • 非结构化和不可预知的数据

  • 高性能、高可用、可伸缩性

  • CAP定理

什么是CAP(CAP theorem)定理

布鲁尔定理

内容:

指出一个分布式系统不可能同时满足以下三点:

  • 一致性(Consistency):所有节点在同一时间具有相同的数据

  • 可用性(Availability):保证每个请求不管成功或者失败都有响应

  • 分隔容忍(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作

CAP理论的核心:--->分别指(Consistency n.一致性/Availability n.可用性/Partition n.划分 Tolerance n.容忍)

一个分布式系统不可能同时很好的满足一致性、可用性、分区容错性这三个需求,最多只能同时较好的满足两个。--->因此CAP原理将数据库分成了三大类:

  • CA---->单点集群,满足一致性、可用性。通常在可扩展性上不太强大。

  • CP--->满足一致性、分区容忍性。通常性能不是特别高。--->代表:MongoDB、Redis、HBase

  • AP--->满足可用性、分区容忍性。通常可能对一致性要求低一些。

BASE

什么是BASE?

BASE是NoSQL数据库通常对可用性及一致性的弱要求原则

  • Basically Available --基本可用--->对应原子性

  • Soft-state --软状态/柔性事务。可以理解为"无连接"的--->这一点在Java连接MongoDB实践中有体会--->对应一致性

  • Eventually Consistency -- 最终一致性, 也是 ACID 的最终目的。--->对应隔离性(注意不是对应关系型数据库的一致性)

关系型数据库遵循ACID规则

事务(transaction)的四大特点:

  • A(Atomicity)原子性

    • 事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

  • C(Consistency)一致性

    • 完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

  • I(Isolation)独立性

    • 并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

  • D(Durability)持久性

    • 一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

NoSQLs数据库分类(按照存储方式分类)

类型部分代表特点
列存储 Hbase、Cassandra、Hypertable 按列存储数据。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储 MongoDB、CouchDB 存储格式类似json,存储内容是文档型。可以对某些字段建立索引,实现关系型数据库的某些功能
Key-Value存储 Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
xml数据库 Berkeley DB XML 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14951831.html