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和关系型数据库在一致性上的取舍差异,也体现出二者不能像代替的特点。


总结


稳扎稳打

目录
相关文章
|
1月前
|
存储 NoSQL 关系型数据库
【赵渝强老师】什么是NoSQL数据库?
随着大数据技术的兴起,NoSQL数据库(Not Only SQL)得到广泛应用。它不局限于二维表结构,允许数据冗余。常见的NoSQL数据库包括Redis、MongoDB和HBase。Redis是基于内存的高性能数据库,采用单线程模型和多路复用I/O,支持高效的数据结构。MongoDB使用BSON格式存储文档,查询语言强大,类似关系型数据库。HBase基于HDFS,适合数据分析,采用列式存储,支持灵活的列族设计。视频讲解及更多内容见下文。
193 79
|
2月前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
82 15
|
3月前
|
存储 缓存 网络安全
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
|
3月前
|
存储 缓存 NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
184 59
|
3月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
92 2
|
4月前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
193 2
|
4月前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
125 1
|
4月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
106 0
|
4月前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
49 2
|
4月前
|
存储 SQL 分布式计算
NoSQL 简介
10月更文挑战第10天
65 0

热门文章

最新文章