云计算
基本概念:通过网络将大量的计算处理分拆到多部服务器,在计算之后回传用户终端。包括分布存储、并行计算、虚拟化(存储云、计算云、虚拟云)。Cloud computing is the use of computing resources (HW and SW) that are delivered as a service using a network of remote servers typically hosted on the internet to store, manage and process data.
虚拟化:个人用户是将一台物理机器的资源虚拟化成多份,以能同时启动多个操作系统; 而云虚拟化是将多个物理机器虚拟成一个大的资源池,让用户感觉是在使用一个机器。其有两种模式,一是运行在操作系统上,支持硬件广泛;一是直接运行在硬件上,效率更高(e.g. VMware ESX Server)。

云分层
IaaS: Infrastructure-as-a-Service(基础设施即服务)
PaaS: Platform-as-a-Service(平台即服务)
SaaS: Software-as-a-Service(软件即服务)
DaaS: Destop-as-a-Service
Your IT needs are fluctuated, traditional IT capacity is flat.

分布式数据库
特点:物理上分别存储在不同的物理节点,这是与集中式数据库的最主要的区别。数据会分片。

数据分片(Sharding/partition)
1)水平分片
2)垂直分片
3)导出分片
4)混合分片

NoSQL
解释:即非关系型数据库,为此我们首先要知道什么是关系型数据库,关系型数据库(RDBMS)特点是建立在关系模型(Entity-Relationship Model,简称E-R Model)基础上,事务符合ACID特性,满足CAP理论中的CA。
目标:是为了应对大数据情况。
特点:1)能应付大数据,即高性能;2)事务符合BASE特性;3)满足CAP理论中的AP或CP。
分类:
1)Key-Value存储(如Bigtable)
2)列存储(如HBase)
3)文档型(如MongoDb)
4)图形存储



CAP理论


一致性(Consistency) 


可用性(Availability) 


分区容忍性(Partition tolerance)


CAP原理指的是,对于一个分布式系统,这三个要素最多只能同时实现两点,不可能三者兼顾。


对于分布式数据系统,分区容忍性是基本要求。对于大多数web应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是目前多数分布式数据库产品的方向。不要求强一致性,但还是要求最终一致性eventually consistent


(要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。)



ACID


1)A (Atomicity) 原子性,一个操作失败,整个事务就失败,需要回滚。


2)C (Consistency) 一致性,一直处于一致,如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10。


3)I (Isolation) 独立性,A事务的改动未提交,则B事务未受影响。


4)D (Durability) 持久性,一旦事务提交,则改动会持久化(即保存到硬盘文件)。



BASE


由于CAP理论的存在,为了提高性能,出现了与ACID对应的BASE特性。


1)Basic Availability:基本可用


2)Soft-state :软状态/柔性事务,可以理解为”无连接”的, 而 “Hard state” 是”面向连接”的


3)Eventual consistency:最终一致性,最终整个系统(时间和系统的要求有关)看到的数据是一致的。


事务隔离级别
READ_UNCOMMITTED 会出现脏读、不可重复读、幻读
READ_COMMITTED   解决脏读,会出现不可重复读、幻读问题
REPEATABLE_READ 解决脏读、不可重复读,会出幻读
SERIALIZABLE 保证所有的情况不会发生(锁表)

脏读 : A事务改动未提交,B事务也能读到改动;
不可重复读 : A事务update提交,B事务能半路中途读到改动;
幻读 : A事务insert或delete提交,B事务能半路中途读到改动;


OLAP
联机分析处理(Online Analytical Processing),侧重多维分析、决策支持;
相对应的是联机事务处理OLTP(on-line transaction processing,传统二维数据)。