NoSQL 与 CAP 定理简介
本文创建时间较早,已长时间未更新信息可能不准确,文章内容仅供参考。
NoSQL 简介
NoSQL is “Not Only SQL”,意为不仅仅是 SQL。
NoSQL 是指非关系型数据库,是对不同于传统的关系型数据库管理系统的统称。它常用于超大规模的数据存储,这些类型的数据存储不需要固定的模式,无需多余操作即可横向扩展。
ACID 规则
传统关系型数据库事务(transaction)遵循 ACID 规则: 0. Atomicity(原子性)
原子性很好理解,可以理解为一个事务要么不做,要么做完。有点类似于操作系统里面的原语
。只要一个操作失败,整个事务就需要回滚。
Consistency(一致性)
数据库要处于一致的状态,事务的运行不会改变数据库原本的一致性约束。Isolation(独立性)
是指并发的事务之间不会相互影响。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 - 满足可用性,分割容忍的系统,通常可能对一致性要求低一些。
分布式计算优缺点
优点
- 可靠性,亦容错性
- 可扩展性
- 资源共享
- 灵活性
- 更快的速度
- 开放系统
- 更高的性能
缺点
- 故障诊断比较繁琐
- 较少的软件支持
- 安全性