第五章 NoSQL数据库

介绍NoSQL数据库的性质和分类。了解即可。
典型的NoSQL包括:键值数据库、列族数据库、文档数据库和图形数据库。
l 键值数据库:写操作性能高。条件查询效率低。
l 列族数据库:分布式拓展容易。功能简单。
l 文档数据库:类似能通过值来查询的键值数据库,值的结构比较复杂。数据结构灵活。查询语法不统一。
l 图形数据库:用来做图相关处理很好用。大小有限,应用场景比较死。

NoSQL数据库三大基石

分别为CAP、BASE、最终一致性

CAP

第五章与第六章 - 图1
C(Consistency):一致性。保证同步。
A(Availablitty):可用性。读的快。
P(Tolerance of Network Partition):分区容忍性。可拓展性,部分节点分区出错也没事。

CAP不可能同时达到,必须有所取舍。

CA: MySQL之类的关系数据库,读的速度不错并且安全,但是对分布式的支持就差。
CP:HBase之类的数据库,数据安全,且对分布式支持好。但是数据一致性同步比较慢,且同步时无法访问。
AP:Riak之类的数据库,写入的快,分布式支持好。但是会出现数据读取有延迟的现象。

BASE

BASE的含义是基本可用(Basically Availble)、软状态(Soft-state)、最终一致性(Eventual consistency)
基本可用:分区可以坏。
软状态:可以滞后同步。
最终一致性:最后能对得上。

最终一致性

对客户端而言,是如何获取最新数据的问题;对服务端而言,是怎样将数据复制到整个系统的问题。

NewSQL数据库

不仅具有NoSQL对大数据的存储能力,同时保留了传统数据库ACID与对SQL的支持。总之就是很牛逼。
第五章与第六章 - 图2
常见数据库分类

第六章 云数据库

介绍云数据库的概念,并以阿里云为例介绍了云数据库的系统UMP运作原理。吹水章节,随便看看。
云服务分为三种:
IaaS(Infrastructure as a Service):基础设施即服务,例如:云服务器
PaaS(Platform as a Service):平台即服务,例如:云中间件,各种API之类。
SaaS(Software as a Service):软件即服务,例如:云数据库、云游戏之类。
云数据库并不是一种数据库架构,而是把各种数据库以云端的方式展示。

UMP系统框架

阿里RDS云数据库框架,向用户提供云MySQL服务。
第五章与第六章 - 图3
Mnesia:用Erlang写的分布式DBMS。
RabbitMQ:Erlang开发的消息队列产品。负责节点间的通信。
Zookeeper:提供服务器集群管理。
LVS:虚拟Linux系统,用户操作命令行的地方。
Proxy:与用户的LVS直接交互,用户操作Proxy时就像操作MySQL。
Agent:部署在实际运行MySQL的机器上,对机器进行管理。


l 特别注意,为了实现负载均衡,每个用户都有两个数据库(主从库)。写操作主库负责,读操作均衡分配。但是从主库到从库的数据同步有延迟,可能在写入主库后读从库导致数据不一致,因此在一定延迟(300ms)内读数据时,会被强制分配到主库上,保证读取数据最新。

其余部分没有什么参考价值,随便看看就行。