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月前
|
人工智能 运维 NoSQL
云栖大会|AI浪潮下的NoSQL演进:下一代数据库的破局之道
AI浪潮下的NoSQL演进:下一代数据库的破局之道
|
12月前
|
存储 NoSQL 搜索推荐
NoSQL数据库分类概览
以上就是我们的NoSQL数据库奇幻之旅。每一种NoSQL数据库都有自己独特的魅力和专长,择选合适的数据库,就像在魔法世界中挑选最适合自己的魔杖,使你的数据管理变得更加高效和神奇。在当今数据驱动的时代,懂得这些数据库的秘密,就掌握了处理各种数据挑战的关键。
568 61
|
存储 NoSQL 关系型数据库
【赵渝强老师】什么是NoSQL数据库?
随着大数据技术的兴起,NoSQL数据库(Not Only SQL)得到广泛应用。它不局限于二维表结构,允许数据冗余。常见的NoSQL数据库包括Redis、MongoDB和HBase。Redis是基于内存的高性能数据库,采用单线程模型和多路复用I/O,支持高效的数据结构。MongoDB使用BSON格式存储文档,查询语言强大,类似关系型数据库。HBase基于HDFS,适合数据分析,采用列式存储,支持灵活的列族设计。视频讲解及更多内容见下文。
926 79
|
缓存 NoSQL Redis
Redis原理—2.单机数据库的实现
本文概述了Redis数据库的核心结构和操作机制。
Redis原理—2.单机数据库的实现
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
622 15
|
存储 缓存 网络安全
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
350 2
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
593 2

热门文章

最新文章