zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    (转)Web自动化测试中的接口测试
    Redis在.net中的应用学习
    Redis学习第八课:Redis高级实用特性(一)
    Redis学习第七课:键值命令和服务器命令
    Redis学习第六课:Redis ZSet类型及操作
    先验概率 vs 后验概率
    cout格式化输出
    python练习linux下创建路径
    把“苹果中国首发”视为扬眉吐气是自卑的表现
    字符串处理算法(三)按指定位置交换字符串两部分的位置
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14951831.html
Copyright © 2011-2022 走看看