首页  

NoSQL 简介     所属分类 architecture 浏览量 931
NoSQL  Not Only SQL
关系型数据库 ACID

ACID
ACID 原子性(Atomicity)  each transaction is "all or nothing"
一致性(Consistency)  data should be valid according to all defined rules 
隔离性(Isolation)    transactions do not affect each other
持久性(Durability)   committed  data would not be lost,even after power failure 

隔离性(Isolation)  
事务隔离级别
读未提交(Read uncommitted)  读提交(read committed) 可重复读(repeatable read) 串行化(Serializable)

NoSQL的基本需求是支持分布式存储,严格一致性与可用性需要互相取舍

CAP理论
一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)、分区容错性(P:Partition tolerance)这三个基本需求,并且最多只能满足其中的两项。

分布式系统 分区容错是基本需求 , 在C和A之间寻求平衡

C  Consistency  一致性(注意与ACID的C的区别)
一致性是指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。

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


A  Availability  可用性
可用性是指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。

P  Partition tolerance  分区容错性
分区容错性是指“the system continues to operate despite arbitrary message loss or failureof part of the system”,
即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

BASE理论
权衡一致性与可用性 

Base = Basically Available + Soft state + Eventually consistent

Soft state
允许系统数据存在中间状态,但不会影响到系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步时存在延时。

E - Eventually Consistent - 最终一致性
要求系统数据副本最终能够一致,而不需要实时保证数据副本一致。最终一致性是弱一致性的一种特殊情况。最终一致性有5个变种:
因果一致性
读己之所写(因果一致性特例)
会话一致性
单调读一致性
单调写一致性



Paxos   一致性算法 


Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。
一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。
为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。


节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。


NoSQL 优缺点

优点  易扩展 高性能 数据模型灵活 高可用
缺点  没有标准 不支持sql 功能不够完善

NoSQL数据库分类

键值(Key-Value)存储   TokyoCabinet/Tyrant Redis Voldemort BDB
列存储数据库  Cassandra HBase Riak
文档型数据库  MongoDB 
图形(Graph)数据库  Neo4J InfiniteGraph InfoGrid
对象存储 db4o

上一篇     下一篇
面向对象 六原则 一法则

为何RedisCluster设计成16384个槽

java面试题

zookeeper为何不适合做服务发现

zookeeper在kafka中的应用

zookeeper如何保证数据一致性