NoSQL数据库介绍

阅读数:70 评论数:0

跳转到新版页面

分类

数据库

正文

CAP理论

(1)Consistency一致性,任何一个读操作总能读取到之前完成的写操作结果。

(2)Avaliability 可用性,每一个操作总是能够在确定的时间内返回。

(3)Tolerance of network Partition 分区容忍性,在出现网络分布的情况下,能容错。

(4)最多只能同时满足以上两种需求。

由于当前网络硬件肯定会出现延迟丢包等问题,所以分区容忍性必须实现.

CAP理论不能同时满足的场景:

(1)数据同步需要时间(C),响应时间(A)也要保障,那么机器数量就要少,这样的情况下,容错性(P)就无法保证.

(2)数据同步需要时间(C), 机器数量也要够用(P), 但是数据同步城要时间,所以不能同时满足可用性. 代表是Zookeeper

(3)机器数量够多(P), 响应时间要正常 (A),那么数据不能及时同步到每个节点上. 代表是eureka

BASE模型:

(1)反ACID模型,牺牲高一致性,获得可用性和可靠性。

(2)基本可用,支持分区失败;软状态,状态可以有一段时间不同步,异步;最终一致,状态达到最终一致就可以。

(3)按功能划分数据库,sharding分片。

 

关于内存和磁盘:

(1)如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需访问,这个临界点就是5分钟。

(2)把随机读写交给RAM,磁盘尽量用作顺序读写及持久化。

 

一致性哈希:

(1)要解决的问题:分布式Key-Value系统中,加入有N个服务节点,如何将一个key对应的value对象均匀的映射到N个节点上进行存储。

 

Quorum NRW 机制:

(1)数据复制的一致性协议实现。这个协议有三个关键值:R、W、N。

(2)N:复制的节点数。R:成功读操作的最小节点数。W:成功写操作的最小节点数。通过W+R>N保证强一致性。

 

Vector clock:

(1)一个(node,counter)的向量,记录数据历史版本。

 

Merkle Tree:

(1)又被称为Hash Tree,是一种树状Hash结构。

(2)当节点宕机后数据恢复时,用于数据检验与数据同步。

(3)结构简单,叶子节眯是一些Hash值,非叶子节点保存一个范围的key值是由子节点计算Hash得来,自底向上构建。

(4)比较过程,自顶向下。先从根节点比较,相同则表示完全一致,否则子节点继续进行交换比较。

(5)传输过程中只传输要比较的层,大大减少网络传输量。

 

Paxos算法:

(1)解决分布式系统如何就某个值(决议)达成一致,基于消息传递模型。

(2)参与角色:proposers,acceptors, leaners。

a.value只有被Proposers踢出后才能批准。

b.在一次paxos算法实例中,只批准一个value。

c.learners只能获得被批准的value。

(3)算法过程:

a.proposer选择一个提案编号n,并将prepare请求发送给acceptors中的一个多数派。

b.acceptor收到prepare消息后,如果提案编号大于已经恢复的所有prepare消息,则将自己上次批准的回复给proposer,并承诺不再批准小于n的编号。

c.当一个Proposor收到多数acceptors对prepare的回复后,向回复的acceptor发送accept请求,包括n和value。

d.acceptor在不会违背向proposer提出的承诺前提下,批准此请求。

e.learners在accept后按n的大小学习value.

 




相关推荐