mongodb

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
上一篇下一篇

猜你喜欢

热点阅读