一、CAP理论
Condidtency 一致性
Availbaility 可用性
Partition Tolerance 分区容错性
数据库最多支持3个中的两个
二、SQL(RDBMS)
(一)首先了解两个概念:
事务:
事务:保持逻辑数据一致性与可恢复性,必不可少的利器。
什么是保持逻辑数据的一致性和可恢复性?
假如你要执行两条sql语句来修改原始数据,但是其中一条没有执行成功,那么事务就会回滚,将数据恢复到修改之前的状态,
另外一条语句肯定不会执行,确保关系逻辑的一致性。
举一个生活中具体的例子:银行的转账:
你去银行转账,你向一个账户转了5000元,那么另外那个账户就会多5000元,你的账户就会少5000元,
假如你这一边转账失败或者对方失败,那么这个就没有执行成功,事务就会回滚,恢复账户内原始的余额,
确保原始数据的一致。
事务:具有原子性,一致性,隔离性,持久性。
原子性:事务要么全部执行成功,要么全部不执行。
一致性:事务结束的时候,所有的内部数据都是正确的。
隔离性:并发多个事务时,各个事务不干涉内部数据,处理的都是另外一个事务处理之前或之后的数据。
持久性:事务提交之后,数据是永久性的,不可再回滚。
锁:
锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写。
例如:在多用户都用事务同时对数据进行增删改操作时,另外用户进行读取时,就会造成数据读写异常:
然而锁定,就是为解决这些问题所生的,他的存在使得一个事务对他自己的数据块进行操作的时候,而另外一个事务则不能插足这些数据块。这就是所谓的锁定。分为:
共享锁(S):还可以叫他读锁。可以并发读取数据,但不能修改数据。也就是说当数据资源上存在共享锁的时候,所有的事务都不能对这个资源进行修改,直到数据读取完成,共享锁释放。
排它锁(X):还可以叫他独占锁、写锁。就是如果你对数据资源进行增删改操作时,不允许其它任何事务操作这块资源,直到排它锁被释放,防止同时对同一资源进行多重操作。
(二)、SQL特点:
事务:继承了CAP理论中的C和A:
强一致性:
锁:
默认查询:不加锁
可以添加锁:select ... lock in share mode/
增删改查:自动加行锁(独占锁)
事务:ACID
开启事务:(关闭自动提交)-->commit/bollback
Atomic
Consistenct
Isolated
Durable
三、 NoSQL
(一)、NoSQL:非关系型数据库
特点:自由扩展:基于Hadoop[列式存储]数据库
告诉读写:block(块) cache/bloom filter
最终一致性:中间过程的数据不强制要求,最后结果一致
基于CAP理论:非关系型数据库的一个重要特性就是分区容错
P
/ \
C A
/ \
HBase Dynamo
Big Table CouchDB
MongDB Cassandra
Redis Voldemort