NoSQL 简介

NoSQL is “Not Only SQL”,意为不仅仅是 SQL。

NoSQL 是指非关系型数据库,是对不同于传统的关系型数据库管理系统的统称。它常用于超大规模的数据存储,这些类型的数据存储不需要固定的模式,无需多余操作即可横向扩展。

ACID 规则

传统关系型数据库事务(transaction)遵循 ACID 规则: 0. Atomicity(原子性)
原子性很好理解,可以理解为一个事务要么不做,要么做完。有点类似于操作系统里面的原语。只要一个操作失败,整个事务就需要回滚。

  1. Consistency(一致性)
    数据库要处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

  2. Isolation(独立性)
    是指并发的事务之间不会相互影响。

  3. Durability(持久性)
    事务提交后将会永久的保存在数据库,不会因为宕机而丢失。

RDBMS/NoSQL

RDBMS

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

NoSQL

  • 代表着不仅仅是 SQL;
  • 没有声明性查询语句;
  • 没有预定义的模式;
  • 键值对存储,列存储,文档存储,图形数据库;
  • 最终一致性,而非 ACID 属性;
  • 非结构化和不可预知的数据;
  • CAP 定理;
  • 高性能,高可用性和可伸缩性;

NoSQL 优缺点

优点

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构灵活,半结构化数据
  • 没有复杂的关系

缺点

  • 没有标准化
  • 有限的查询功能
  • 最终一致是不直观的程序

CAP 定理

CAP 定理(CAP theorem),又称布鲁尔定理,它指对于一个分布式计算机系统来说,不可能同时满足一下三点:

  • 一致性(Consistency)所有节点在同一时间具有相同数据;
  • 可用性(Availability)保证每个请求不管成功或者失败都有相应;
  • 分割容忍(Partition tolerance)系统中任意信息的丢失或失败不会影响系统的继续运作。

CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性和分割容忍这三个需求,最多只能同时较好的满足两个。

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则,满足 CP 原则和满足 CP 原则三个大类:

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

cap-theoram-image.png

分布式计算优缺点

优点

  • 可靠性,亦容错性
  • 可扩展性
  • 资源共享
  • 灵活性
  • 更快的速度
  • 开放系统
  • 更高的性能

缺点

  • 故障诊断比较繁琐
  • 较少的软件支持
  • 安全性