欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

什么是大数据?CAP、BASE、数据分割解析

程序员文章站 2022-04-21 20:48:51
1.CAP, BASE 1.CAP 数据一致性(consistency): 数据一致更新,所有数据变动都是同步的,如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果...

1.CAP, BASE

1.CAP

数据一致性(consistency):
数据一致更新,所有数据变动都是同步的,如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency) 服务可用性(availability):
好的响应性能,所有读写请求在一定时间内得到响应,可终止、不会一直等待。 分区容错性(partition-tolerance):
可靠性,在网络分区的情况下,被分隔的节点仍能正常对外服务。

CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。而对于分布式数 据系统,分区容忍性是基本要求 ,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡。

2.BASE

BASE是指基本可用(Basically Available):
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性 软状态( Soft State):
弱状态也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据传输的过程存在延时。 最终一致性( Eventual Consistency):
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性.

BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,牺牲高一致性,获得可用性或可靠性:

3.ACID

Atomic原子性
一个事务的所有系列操作步骤被看成是一个动作,所有的步骤要么全部完成要么一个也不会完成,如果事务过程中任何一点失败,将要被改变的数据库记录就不会被真正被改变。 Consistent一致性:
数据库的约束、级联和触发机制Trigger都必须满足事务的一致性。也就是说,通过各种途径包括外键约束等任何写入数据库的数据都是有效的,不能发生表与表之间存在外键约束,但是有数据却违背这种约束性。所有改变数据库数据的动作事务必须完成,没有事务会创建一个无效数据状态,这是不同于CAP理论的一致
性”consistency”. Isolated隔离性:
主要用于实现并发控制, 隔离能够确保并发执行的事务能够顺序一个接一个执行,通过隔离,一个未完成事务不会影响另外一个未完成事务。 Durable持久性:
一旦一个事务被提交,它应该持久保存,不会因为和其他操作冲突而取消这个事务。很多人认为这意味着事务是持久在磁盘上,但是规范没有特别定义这点。

2.数据分割

定义

数据分割是指把逻辑上是统一整体的数据分割成较小的、可以独立管理的物理单元进行存储,以便于重构、重组和恢复,以提高创建索引和顺序扫描的效率。数据分割使数据仓库的开发人员和使用者具有更大的灵活性。

优点

对当前细节数据进行分割的总体目的就是把数据划分成小的物理单元,为操作者和设计者在管理数据时提供更大的灵活性。小物理单元具有容易重构、*索引、顺序扫描、容易重组、容易恢复和容易监控等优点。数据仓库的本质之一就是灵活地访问数据,大块数据达不到这个目的。

层次

分割的层次一般分为系统层和应用层。系统层的分割由数据库管理系统和操作系统完成;应用层的分割由应用系统完成,在应用层上的分割更有意义。

方法

水平分割(Horizontal Splitting):
就是把全局关系的元组分割成一些子集,这些子集被称为数据分片或段(Fragment)。数据分片中的数据可能是由于某种共同的性质(如地理、归属)而需要聚集一起的。通常,一个关系中的数据分片是互不相交的,这些分片可以选择地放在一个站点上,也可以通过副本被重复放在不同的站点上。 垂直分割(Vertical Splitting):
就是把全局关系按着属性组(纵向)分割成一些数据分片或段(Fragment)。数据分片中的数据可能是由于使用上的方便或访问的共同性而需要聚集一起的。通常,一个关系中的垂直数据分片问只在某些键值上重叠,其他属性是互不相交的。这些垂直分片可以放一个站点上,也可以通过副本被重复放在不同的站点上。

3.副本策略–primary-secondary, paxos

1.primary-secondary协议

该协议是中心化副本控制协议中常常用到的,该协议将副本分为两大类:其中有且仅有一个副本作为primary副本,除primary意外的副本都作为secondary副本。维护primary副本的节点作为中心节点,中心节点负责维护数据的更新、并发控制、协同副本的一致性。
(1)数据更新基本流程
1.数据更新都由primary节点协调完成
2.外部节点将更新操作发给primary节点
3.primary节点进行并发控制即确定并发更新操作的先后顺序
4.primary节点将更新操作发送给secondary节点
5.primary根据secondary节点的完成情况决定更新是否成功并将结果返回外部节点
(2)数据读取方式
与数据更新流程类似,读取方式也与一致性高度相关。使用primary-secondary比较困难的是实现强一致性。实现强一致性一般有如下几个思路:
1.始终只读primary副本的数据
2.由primary控制节点secondary节点的可用性。
3.基于Quorum机制
(3)Primary副本的确定和切换
primary副本的确定通常由原信息管理,由专门的元数据服务器维护,执行更新操作时,首先查询元数据服务器获取副本的primary信息,从而进一步执行数据更新流程。
primary副本的切换通常可以使用lease机制来完成。
(4)数据同步
数据同步是因为primary副本可能会存在于secondary副本不一致的问题。通常有如下三种形式:
1.由于网络分化等异常,secondary上的数据落后于primary上的数据。—— redo primary副本上的操作日志。
2.在某些协议下,secondary上的数据有可能是脏数据,需要被丢弃。—— undo日志的方法删除脏数据
3.secondary是一个新增加的副本,完全没有数据,需要从其他副本上拷贝数据。—— 使用primary副本的snapshot(快照)功能

2.paxos协议

多个节点直接通过操作日志同步数据,如果只有一个节点称为主节点,就很容易在多个节点之间维护数据一致性。然后主节点可能出现故障,那么就需要选出主节点。Paxos协议就是用于解决多个节点之间的一致性问题
在paxos算法中,分为4种角色:

Proposer :提议者 Acceptor:决策者 Client:产生议题者 Learner:最终决策学习者

4种角色中,提议者和决策者是很重要的,其他的2个角色在整个算法中较弱
Proposer就像Client的使者,由Proposer使者拿着Client的议题去向Acceptor提议,让Acceptor来决策。
最终决策的paxos算法行为

Proposer提出议题 Acceptor初步接受 或者 Acceptor初步不接受 如果上一步Acceptor初步接受则Proposer再次 向Acceptor确认是否最终接受 Acceptor 最终接受 或者Acceptor 最终不接受 。