Nosql数据库原理学习:CAP原理、BASE和最终一致性

简介: Nosql数据库原理学习:CAP原理、BASE和最终一致性

前言


本人大数据专业初入大三刚刚接触并开始学习Nosql数据库原理,当然初入一些算法和原理还不是很熟练掌握,有待提升自己的编程结合能力。在此领域本人有诸多不明确疑问,可能文章会有些许错误,望大家在评论区指正,本篇文章错误将会不断更正维护。


一、CAP


1.CAP原理


CAP是指分布式系统中Consistency(一致性)、Availibility(可用性)、Partition tolerance(分区容错性)三个特性。

20200926202453107.png


根据学习资料了解


C(一致性):是指分布式系统中所有节点都能对某个数据达成共识。具体到NoSQL系统中表示,主要关注数据的多个副本内容是否相同,多篇论文也称之为Atomic(原子性),以便和ACID中的术语相贴切。简单的来说,就是保持其他节点与该节点保存的副本文件内容一致。当然在多副本的情况下,就要在数据写入、读取等过程设计一致性策略。


A(可用性):是指系统能够对用户的操作给予反馈。这里的可用性通常是指系统的反馈的及时程度,符合大多数软件系统对用户的反馈效果。当然还有一些操作系统将不给予反馈,需要操作者自己处理查询。


P(分区容错性):也可称之为分区保护性。可以这么理解:当该集群有一节点发生故障导致信息不可传递或者部分消息丢包,此时系统分为了多个区域,该区域下该节点失能但却对该分区功能影响不大,仍可以继续工作,继续提供服务。


CAP理论认为分布式系统只能兼顾其中两个特性,既该集群只有CA、CP、AP者三种情况。兼顾CA则系统不能采用多副本,兼顾CP则必须容忍系统响应迟缓,兼顾AP则需要容忍系统内多副本数据可能出现不一致的情况。


2.CAP原理实用性


在实践中,一般会根据实际情况进行权衡,支持用户进行策略选择。CAP不仅仅可理解为用在分布式软件的设计原则上,在不同的层面、子系统或模块中,都可以根据CAP原理制定局部策略。不仅适用于大数据、Nosql领域,也适用于网站的分布式架构设计和业务流程设计等方面。


二、BASE和最终一致性


1.选择策略


根据CAP原理可知无法实现兼顾C、A、P三个原理的完美方案。因此在Nosql数据库的设计就会遇到采取策略的问题,比如稳二保一等。为了解决难题,便提出了BASE原则。


(1)Basically Available(基本可用):允许分布式系统中部分节点或功能出现故障的情况下,系统的核心部分或其他数据仍然可用。


(2)Soft-state(软状态/柔性事务): 允许系统中出现“中间状态”,在Nosql中可以体现为允许多个副本存在暂时的不一致情况。


(3)Eventual Consistency(最终一致性):允许系统的状态或者多个副本之间存在暂时的不一致,但随着时间的推移,总会变得一致。


2.最终一致


最终一致性可以看作是BASE理论的核心,即通过弱化一致性要求,实现更好的伸缩性、可靠性和响应能力。Nosql和关系型数据库在一致性上的取舍差异,也体现出二者不能像代替的特点。


总结


稳扎稳打

目录
相关文章
|
8天前
|
JSON NoSQL MongoDB
理解Nosql数据库的mongodb
【5月更文挑战第5天】MongoDB是2009年发布的一款通用型NoSQL数据库,结合了关系模型和NoSQL的优点,适用于各种现代应用。其特点包括图形界面、数据服务、云基础设施集成(AWS, Azure, Google Cloud)。它具备全面的查询能力、ACID事务、可调整的一致性保证,并有多语言驱动及工具,可在任何地方运行。
73 4
|
2天前
|
JavaScript 小程序 Java
学习辅助|基于SSM+vue的学习辅助系统的设计与实现(源码+数据库+文档)
学习辅助|基于SSM+vue的学习辅助系统的设计与实现(源码+数据库+文档)
11 0
|
2天前
|
JavaScript Java 关系型数据库
学习平台|基于Springboot+vue的学习平台系统的设计与实现(源码+数据库+文档)
学习平台|基于Springboot+vue的学习平台系统的设计与实现(源码+数据库+文档)
17 0
|
2天前
|
JavaScript Java 关系型数据库
平面设计课程在线学习|基于SSM+vue的平面设计课程在线学习平台系统的设计与实现(源码+数据库+文档)
平面设计课程在线学习|基于SSM+vue的平面设计课程在线学习平台系统的设计与实现(源码+数据库+文档)
8 0
|
2天前
|
JavaScript Java 关系型数据库
公考学习|基于SprinBoot+vue的公考学习平台(源码+数据库+文档)
公考学习|基于SprinBoot+vue的公考学习平台(源码+数据库+文档)
4 0
公考学习|基于SprinBoot+vue的公考学习平台(源码+数据库+文档)
|
2天前
|
安全 JavaScript Java
党务学习|基于SprinBoot+vue的大学生党务学习平台(源码+数据库+文档)
党务学习|基于SprinBoot+vue的大学生党务学习平台(源码+数据库+文档)
10 0
|
3天前
|
存储 NoSQL 分布式数据库
大数据存储技术(4)—— NoSQL数据库
大数据存储技术(4)—— NoSQL数据库
18 1
|
3天前
|
数据库 数据库管理
理解数据库的ACID原则:确保数据完整性与一致性的基石
【5月更文挑战第20天】ACID原则是数据库事务处理的核心,包括原子性、一致性、隔离性和持久性。原子性保证事务操作全完成或全不完成,保持数据完整;一致性确保事务前后数据库保持一致性状态,不破坏完整性约束;隔离性防止并发事务相互影响,通过锁等技术实现;持久性则保证事务提交后的修改永久保存,即使系统故障也能恢复。这些原则确保了数据的可靠性和安全性。
|
5天前
|
NoSQL Shell MongoDB
NoSQL数据使用指令和引擎连接数据库实例
【5月更文挑战第8天】本文介绍了MongoDB的本地使用和常用操作,包括通过mongo shell连接数据库、显示数据库和集合,以及副本集设置。最后提到了MongoDB的日志功能和顶点集的使用,如capped collection的创建和管理。
47 3
|
5天前
|
存储 缓存 NoSQL
NoSQL缓存数据库的使用场景实例和命令速查表
【5月更文挑战第8天】Redis 是一个内存数据结构服务,用 C 编写,支持五种数据结构,不仅限于键值对。它用于缓存、消息队列、订阅/发布系统等,提供持久化、主从复制和集群支持。了解其核心数据结构和应用场景是有效利用 Redis 的关键。
60 3
NoSQL缓存数据库的使用场景实例和命令速查表