Nosql基础
2017-05-22 本文已影响38人
词穷又词贫
NoSQL介绍:
NoSQL = Not Only SQL
关系型数据库遵循ACID规则:
A:(Atomicity)原子性,事物要么做完,要么就不做,做到一半就只能回滚
C:(Consistency)一致性,数据库一直处于一致状态,事物运行不会改变数据库原本的一致性
I:(Isolation)独立性,指的是并发事物之间不会互相影响
D:(Durability)持久性,一旦事物提交后,所做的修改将会永远保存在数据库上
BASE:反ACID模型,牺牲高一致性,获得可用性或者可靠性
Basically Available:基本可用,支持分区失败
Soft state:软状态,状态可以存在有一段时间不同步,就是异步
Eventually consistent:最终一致,最终数据一致性即可,无需时时一致。
CAP定理:(布鲁尔定理),分布式
一致性(Consistency):所有节点在同一时间具有相同的数据
可用性(Availability):保证每个请求,不管成功或者失败都有响应
分区容忍性(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的就运作
CA,CP,AP理论中,最优是AP,一致性可以通过最终一致性
数据一致性模型:强一致性,弱一致性,最终一致性
Quorum系统NRW策略:投票半数以上
N:数据总副本数
R:完成读操作所需读取的最少副本数
W:完成写操作所需写入的最少副本数
强一致性:R+W>N
最终一致性:R+W<=N
两段式提交:2PC(Two Phase Commint Protocol)
两类节点:协调者,事物参与者
两阶段:请求阶段(由协调者发出请求),事物参与者提交与确认阶段
时间戳策略:依据顺序执行命令的时间戳来保证一致性
Paxos:帕克索斯算法,多个过程,通过消息传递,达成某种一致性
向量时钟:数据集多个副本,每个副本更新类似版本号机制,同步至其他节点相同副本
分布式计算的优点:
可靠性(容错),可扩展性,资源共享,灵活性,更快的速度,开放系统,更高的性能
分布式计算的缺点:
故障排除,软件,网络,安全性
http://nosql-database.org/
NoSQL的数据存储模型:
键值模型:Key-value存储
优点:O1类型,数据查找速度快
缺点:数据无结构,通过被当作字符串或者二进制数据
应用场景:内容缓存
实例:Redis,Dynamo
列式模型:
数据模型:数据按列式存储,将同一列数据存在一起,(关系型数据库以“行”为准)
优点:查找迅速(只有被涉及到的列才会被读取),可扩展性强,易于实现分布式
缺点:功能相对SQL很有限
应用场景:分布式文件系统或分布式存储
实例:Hadoop/HBase,Cassandra
文档模型:
数据模型:与键值模型类型,value指向结构化数据,可以嵌套文档
优点:数据格式要求不严格,无需事先定义结构,自动分片
缺点:查询性能不是特别高,缺乏同意查询语法
应用场景:web应用(字段按需创建,比较灵活)
实例:MongoDB,CouchDB,Elastic
图式模型:
数据模型:图结构模型
优点:利用图结构相关算法提高性能,特殊场景应用需求
缺点:难以实现分布式,功能在特别方向才合适
应用场景:社交网络,推荐系统,关系图谱
实例:Neo4J