一·什么是NoSQL?
- NoSQL可以理解为Not Only Sql,范指非关系型数据库
- 相对于当时铺天盖地的关系型存储,这一概念无疑是一种全新的思维的注入
- 简单的说,NoSQL具有以下特点:灵活的可扩展性;灵活的数据模型;与云计算紧密融合
二·关系型数据库为何“过时”?
▶ 关系型数据库已经无法满足Web2.0的需求
- 无法满足海量数据的管理需求
- 无法满足数据高并发的需求
- 无法满足高可扩展性和高可用性的需求
▶ One size fits all模式不再好用
关系模型企图既被用于数据分析,又被用于在线业务——前者强调高吞吐量,后者强调低延迟,鱼和熊掌不可兼得,企图“一套模型适合全部”是不可能的。
▶ 关系数据库引以为傲的完善事务机制和高效查询机制在Web2.0时代成为鸡肋
- Web2.0不要求严格的数据库事务
- Web2.0不要求严格的读写实时性
- Web2.0甚至不需要大量复杂的SQL查询
三·NoSQL VS 关系型数据库
NoSQL | 关系型数据库 |
---|---|
超大规模数据 | 无法支持大规模数据 |
灵活的数据模型 | 死板的数据模型 |
较好支持Web2.0应用 | 无法较好支持Web2.0应用 |
强大的横向扩展能力 | 较差的扩展能力 |
缺乏数学理论基础 | 完善的代数理论基础 |
查询性能低 | 查询性能极高 |
不能实现事务 | 支持事务ACID四性 |
语法不统一 | 统一的SQL语法 |
技术不成熟,缺乏专业团队 | 技术成熟,专业团队提供技术支持 |
🌟 关系型数据库和NoSQL各有优缺点,它们之间的关系是合作而非取代——在很长一段时间内都将如此
关系型数据的应用场景——银行等关键业务,需要保证事务强一致性
NoSQL数据库的应用场景——互联网企业的非关键业务,比如数据分析
混合架构——关系型数据库和NoSQL的使用现状
案例:亚马逊的电商应用
· “购物篮”这种临时的非关键信息,采用键值存储
· 订单信息非常重要,放在关系型数据库里
· 大量的历史订单信息,则适合放在MongoDB等文档数据库中
四·NoSQL四大类型
理解并比较几种常见的数据库
- MySQL:像一把菜刀,MySQL产生年代较早并已经成熟,虽然稍显过时,但它强大、高效,仍是现在使用最多的数据库
- MongoDB:像一个多功能小刀,MangoDB是新生事物,有着灵活的数据模型,以及异步提交、地理位置索引等五花十色的功能
- HBase:像一个仗势欺人的大象兵,HBase的强大主要依仗Hadoop的分布式环境,使用者需要养一头大象(Hadoop)
- Redis:像一个金箍棒,Redis是键值数据库最杰出的代表,它简单、高效,并因其伸缩性而可大可小
五·NoSQL三大基石
NoSQL三大基石:CAP、BASE、最终一致性。
▊ CAP
▶ CAP分别是指?
- C(Consistency):一致性。即多个节点在同一时间具有相同的数据
- A(Availability):可用性。不管对错,反正请求一定要有相应。
- P(Tolerance of Network Partition):分区容忍性。分离的节点可以独立运行,即不局限在一台机器。
▶ 鱼和熊掌,不可兼得
▶ 不同产品的设计理念
▊ BASE
提到NoSQL的BASE特性,就不得不说传统关系型数据库的事务ACID四性,我们可以加以对比进行学习 >_<
ACID | 含义 | 通俗解释 |
---|---|---|
A | Atomicity 原子性 | 要么全部成功,要么全部失败 |
C | Consistency 一致性 | 事务完成时,所有相关数据一致 |
I | Isolation 隔离性 | 并发事务相互隔离 |
D | Durability 持久性 | 事务完成后,这个影响是永久性的 |
BASE | 含义 | 通俗解释 |
---|---|---|
B A | Basically Availble 基本可用 | 分区出问题,整个系统仍然可用 |
S | Soft state 软状态 | 相对于硬状态的数据立即一致,软状态容忍数据的滞后 |
E | Eventual consistency 最终一致性 | 下面解释 |
▊ 最终一致性
一致性分为强一致性和弱一致性:
- 强一致性:一次更新后,可以保证后续访问到的都是最新的数据
- 弱一致性:一次更新后,不能保证后续访问到的都是最新的数据
最终一致性是弱一致性的特例——此时“不能保证”,但过一段时间,则“可以保证”;从“最终结果”看,一致性得到了保证。
五·再从NoSQL到NewSQL
▶ 大数据时代的理念变革
▶ 产品分布图