虹科干货 | 什么是数据库一致性?

redis缓存与数据库一致性问题解决 redis缓存与数据库一致性问题解决更多干货分布式实战(干货)spring cloud 实战(干货)mybatis 实战(干货)spring boot 实战(干货)React 入门实战(干货)构建中小型互联网企业架构(干货)一、需求起因假设先写数据库,再淘汰缓存:第一步写数据库操作成功,第二步淘汰缓存失败,则会出现DB中是新数据,Cache中是旧数据,数据不一致【如下图:db中是新数据,cache... 阅读详情

数据库一致性(database consistency)由一组值定义,数据库系统中的所有数据点都必须与这些值保持一致,才能正确读取和接受数据。如果任何不符合先决条件值的数据进入数据库,将导致数据集出现一致性错误。数据库一致性通过建立规则来实现。任何写入数据库的数据事务都只能按照数据库开发人员制定的规则,包括特定约束、触发器、变量、级联等来更改受影响的数据。

例如,假设您某地区的交通安全研究所工作。您的任务是创建一个新驾照数据库。在过去的十年中,该地区的人口激增,因此需要为所有首次申领驾照的人提供新的字母和数字格式。在您的数据库中,该地区驾照的新设定值如下:1个字母+ 7个数字,现在每个条目都必须遵循这一规则。如果输入"C08846024",则返回错误。为什么?因为输入的值是1个字母+8个数字,这实质上是一种不一致的数据形式。

一致性还意味着,一个表中任何一个特定对象的任何数据更改都需要在该对象所在的所有其他表中进行更改。继续以驾照为例,如果新驾驶员的家庭地址发生变化,则必须在所有存在该地址的表中体现该更新。如果一个表中的地址是旧的,而其他所有表中的地址都是新的,这也是数据不一致的典型例子。

注意:数据库一致性并不保证在任何给定事务中引入的数据是正确的,它只保证在系统中写入和读取的数据符合所有有资格进入数据库的数据的先决条件。更简单地说,在上面的示例中,您可以输入符合1个字母+ 7个数字规则的数据事务,但这并不能保证数据与实际的驾照相对应。数据库一致性并不考虑数据所代表的内容,只考虑其格式。

为什么数据库一致性很重要?

一致的数据使数据库能够像运转良好的机器一样运行。已建立的规则/值可将不一致的数据排除在主数据库和副本之外,从而保持其操作顺利:

  • 准确性
  • 增加数据库空间
  • 更快、更高效的数据检索

数据库一致性对所有输入数据进行管理。因此,尽管数据库在接受新数据时会发生变化,但它至少会根据一开始制定的验证规则一致地发生变化。如今,全球每天都有数十亿美元的决策是根据数据库的一致性做出的。当实时信息成为现代数字业务的基础时,制定验证规则以确保数据集没有错误信息就显得至关重要。因为数据错误增加延迟,损害实时体验。

数据库一致性示例

现实世界中有哪些数据库一致性操作的例子?我们已经在上文的驾照数据库场景中探讨了一个例子。现在我们转向银行业看看。

假设您正在将资金从一个账户转入另一个账户。您刚刚将12000元转入一个已有3000元的账户中。假设正确刷新后,账户余额会显示为15000元。但是,新余额现在显示为0元,说明最新的操作并没有反映在您的余额中。这种技术上的疏忽是数据库弱一致性的一个典型例子。诸如此类的问题可能会损害银行声誉并造成巨大损失。对于任何行业的数据库开发人员和消费者来说,数据库系统的强一致性正变得越来越不可或缺。

强一致性 vs 弱一致性

强一致性:主节点、副本及其所有相应节点中的所有数据都符合验证规则,并且在任何给定时间内都是相同的。有了强数据库一致性,无论从哪个客户端访问数据—客户将始终看到遵循数据库既定规则的更新版本数据。

弱一致性:无法保证主节点、副本节点或节点中的数据在任何时刻都是相同的。某个客户可以访问数据,并看到通过验证规则的信息,但可能不是最近更新的数据,从而导致一致性错误。

Redis Enterprise(Redis企业版数据库)的Active-Active地理分布允许多个主数据库,使您能够灵活地处理越来越大的工作负载。所谓 “Active-Active”,是指数据库的每个实例都可以接受对任何键的读写操作。每个数据库实例,无论距离多远,都是网络上的一个对等节点。这意味着,当对任何实例进行写操作时,该节点会自动向网络上的所有其他实例发送消息,说明缓存中的哪些内容发生了更改,并确保所有实例保留一致的缓存数据集。

Redis Enterprise独特的Active-Active地理分布采用了复杂的算法,旨在处理可能导致缓存不一致的潜在写入冲突。这些算法基于无冲突复制数据类型(CRDT),确保来自多个副本的写入数据能够以有效保持一致性的方式进行合并。

虹科是Redis企业版数据库中国区战略合作伙伴。Redis企业版软件(Redis Enterprise)是企业级的数据库软件,也是一款实时数据平台,为全球超过8500家知名企业提供实时数据服务。具有线性可扩展性、高可用性、持久性、备份和恢复、地理分布、分层内存访问、多租户、安全性等8大核心功能、拥有RediSearch、RedisJSON等7大【Redis企业版特有模块】,可以任何规模在云、本地和混合部署中运行现代应用程序,提供无服务器、多模型的数据库解决方案。Redis企业版的核心优势是采用Redis on flash分层存储技术即【内存+闪存+磁盘】的存储方式,其Active-Active地理分布式架构允许跨地理位置同时进行数据读写操作、拥有亚毫秒延迟和极高吞吐量。

一致性级别

一致性级别是另一组先决条件值,它决定了有多少个副本或节点必须响应新的允许数据,然后才被确认为有效事务。这种操作可以根据每笔事务进行更改。例如,程序员可以规定,在确认数据一致性之前,只有两个节点需要读取新输入的数据。一旦数据跨过了这个界限,它就会被认为是一致的数据。

隔离级别

隔离级别是数据库ACID(原子性、一致性、隔离性、持久性)属性的一部分。ACID是SQL数据库一致性的基本概念,也是某些数据库为优化数据库一致性而遵循的基本概念。隔离(Isolation)是ACID属性之一,它将某些数据块与特定数据库网络中的所有信息隔离开来,使其不会被其他用户事务修改。隔离被用来减少并发事务中产生的无关数据的读写。

有四种类型的隔离级别:
(1)未提交读取:最低级别。如果前一个事务对该行进行了未提交更新,则停止该行的更新。
(2)已提交读取:不允许"脏读"。如果事务已经更新,但尚未提交,则会阻止任何读取或写入。
(3)可重复读取:该级别使正在读取的数据行不会被访问和更新。
(4)可序列化:最高隔离级别,可序列化通常锁定整个表,而不是特定的数据行。

复制过程中的一致性

Redis企业版软件能够将数据复制到另一个数据库实例,以获得高可用性,并将内存中的数据永久持久化到磁盘上,以获得持久性。使用WAIT命令,可以控制复制和持久化数据库的一致性和持久性保证。

向数据库发布的任何更新通常按以下流程执行:
(1)应用程序发出写操作
(2)代理与系统中包含给定键的正确主(也称为“master”)"分片"通信
(3)分片写入数据并向代理发送回执
(4)代理将回执发送给应用程序
(5)主分片向副本发送写入信息
(6)副本将写入确认发回给主服务器
(7)写入副本的内容被持久化到磁盘上
(8)副本内部确认写入

使用WAIT命令,应用程序可以要求仅在复制或持久性在副本上确认后等待确认。

使用WAIT命令的写操作流程如下所示:
(1)应用程序发出写操作
(2)代理与系统中包含给定key的正确主 "分片"通信
(3)复制将更新传递给副本分片
(4)复制将更新持久化到磁盘(假设选择了每次写入都自动更新)
(5-8)通过步骤5至8,确认从副本一直发回代理。

通过此流程,应用程序只有在复制到副本和持久化存储实现耐久性后,才能从写入中获得确认。

使用WAIT命令,应用程序可以保证即使在节点故障或节点重新启动的情况下,也会记录已确认的写入。

数据库一致性常见问题解答(QA)

Q:数据一致性意味着什么?
A:如果数据在同一时间出现在所有相应的节点中,无论用户在哪里访问数据,数据都是一致的。

Q:数据一致性与数据库一致性是一回事吗?
A:数据一致性是指数据在整个网络中以及在使用该数据的众多应用程序之间尽可能保持一致的过程。数据库一致性要求对进入网络的数据制定验证规则,以使其在公式上与表中的所有其他数据保持一致。

Q:什么是最终一致性?
A:通过最终一致性,经过更新的数据最终将反映在存储该数据的所有节点中。最终,通过最终一致性,无论任何客户端在网络中访问数据,所有节点都将生成相同的数据。

Q:关系数据库中的单个表包括?
A:关系数据库中的所有数据都存储在表中,表由行和列组成。数据点被组织在这些行和列中。行通常被称为 “记录”,代表数据类别,而列或 "字段 "则代表 “实例”。在数据库中可以找到表格,其基于主题的设计有助于防止数据冗余。

Q:关系数据库由哪些部分组成?
A:关系数据库由表组成

Q:ACID模型与BASE模型相比有何不同?
A:ACID和BASE(基本可用、软状态、最终一致)模型之间的主要区别在于,ACID致力于优化数据库一致性,而BASE则加强高可用性。ACID可保持事务一致性,因此如果您采用BASE模型,请确保一致性仍是重中之重,并得到彻底解决。

Q:Redis数据库是否一致?
A:当Redis用作缓存时,一致性问题可能发生在Redis实例(主/副本)之间,以及Redis缓存和作为主数据库的Redis之间。在这种情况下,如果两者之间的数据不匹配,数据就会不一致。对于开源Redis来说,一致性较弱,但Redis Enterprise的Active-Active Geo-Distribution提供了较强的最终一致性。

推荐阅读:
《虹科Redis企业版数据库简介》
《虹科干货 | 什么是数据库一致性?》

虹科是Redis企业版数据库的中国区战略合作伙伴,了解更多【企业级数据库解决方案】及【企业缓存购买】,欢迎前往虹科云科技官网!

AVL-Excite新手必看:5步搞定发动机阀系系统建模(附B站视频教程) 本文为AVL-Excite新手提供发动机阀系系统建模的5步详细指南,涵盖软件环境搭建、基本结构建立、关键参数设置、仿真分析及常见问题排查。通过清晰的步骤说明和实用技巧,帮助工程师快速掌握建模方法,并附有精选B站视频教程链接,便于实践学习。 阅读详情

相关推荐

【STM32G474实战】RS485通信的DMA优化策略与性能对比

本文深入探讨了在STM32G474微控制器上优化RS485通信的DMA策略。通过对比轮询、中断和DMA三种数据传输方式的代码实现与性能,揭示了DMA在解放CPU、降低占用率方面的巨大优势。文章提供了详细的DMA配置指南、高级应用技巧(如结合空闲中断)以及一个高可靠通信框架的实战思路,旨在帮助开发者构建高效、实时的工业控制系统。

weixin_29268331的博客 299

数据库:事务的基本特征 —— 原子性、隔离性、一致性、持久性

一、事务 事务是一组操作的集合,集合里的所有操作要么全部执行成功,要么全部失败回滚。 二、事务的特征(ACID) 1、原子性(Atomicity) 事务所包含的操作,要么全部执行成功,要么全部失败回滚。 2、隔离性(Isolation) 多用户访问数据库时,多个并发事务,之间的操作,需要相互隔离。 每个事务需要有,独立的...

weixin_41565755的博客 6436

保姆级教程:5分钟搞定微信小程序live-player组件接入监控视频流

本文提供了一份详细的微信小程序接入实时监控视频流的实战指南。文章对比了live-player与video组件的核心差异,重点解析了如何申请并开通live-player组件的严格权限,并提供了播放RTMP流(低延迟)的完整配置、状态监听与错误处理代码。同时,也介绍了使用video组件播放HLS流的备选方案,帮助开发者根据项目需求快速选择并实现稳定可靠的监控视频播放功能。

open4的博客 296

深度|不同数据系统中的“一致性”(Consistency)含义的区别

数据系统能否实现“强一致性”是当下产品选择的一个重要考量因素,但我们需要先弄清楚数据库、分布式系统、流处理引擎等不同数据系统中一致性需求究竟有何不同。

https://risingwave.com/ 1290

Anolis龙蜥内核升级实战:从查询到配置的全流程指南

本文提供了一份详尽的Anolis龙蜥操作系统内核升级实战指南。文章从升级的必要性出发,逐步讲解了升级前的系统检查与备份、从官方源获取正确内核包、分步安装与验证、配置默认启动项以及升级后的功能验证与安全回滚方案。旨在帮助运维人员安全、平稳地完成内核升级,以获取性能提升、新硬件支持及重要的安全漏洞修复。

qq_27496129的博客 571

微信h5 支付,已经获得weixin://wap/pay?prepayid,但是无法调起微信客户端支付

结果几个接口,最终获得到到一直包含调起微信客户端的支付链接 但是直接打开这个页面,却不能调起微信客户端支付,原因是,在打开新页面的时候,需要设置a.rel = "noreferrer"; <body> <a href="javascript:void(0)" onclick="openNewWindowNoreferrer(this)">点击支付</a&...

qq_31683775的博客 4万+

数据库的一致性与可用性之间的关系

1.背景介绍 在分布式系统中,数据库的一致性和可用性是两个非常重要的性能指标。在实际应用中,我们需要在保证数据库一致性的同时,尽可能提高数据库的可用性。在这篇文章中,我们将深入探讨数据库的一致性与可用性之间的关系,并分析如何在实际应用中进行权衡。 1. 背景介绍 1.1 一致性与可用性的定义 一致性(Consistency):数据库的一致性是指数据库中的数据保持一致,不会出现脏数据。在分...

AI天才研究院 1525

iOS应用突然无法从App Store获取到内购(IAP)产品列表的解决

问题现象 Apple开发中,在应用中嵌入内购(IAP)功能的小伙伴们可能会发现,吃着火锅唱着歌,突然App就无法获取到产品列表了,而且产品请求操作并不会返回任何错误。 此时检查发现,并没有对App的内购逻辑做任何改动。 那么,这是什么原因导致的呢? Let’s find out!???? 问题分析 1. 排除其它原因 首先,你先得排除不是你IAP内购逻辑变更或其他原因导致的。 在SKProductsRequestDelegat代理实现的productsRequest方法里下断点: func produc

享受开发,颠倒银河 6141

数据库AICD特性之--一致性 Consistency

数据库在任何时候都保持一致状态——在每次提交或回滚之后,以及事务正在进行时。如果跨多个表更新相关数据,查询看到的要么是所有旧值,要么是所有新值,而不是新旧值的混合。一致性指数据库在事务执行前后,数据始终符合预设的完整性约束和业务规则。事务执行前数据是合法的,执行后也必须合法,不允许出现违反规则的中间状态。

weixin_44960490的博客 412

AI幻觉缓解的成本效益分析:投入产出比优化

在当今AI技术飞速发展的时代,AI幻觉成为了一个不容忽视的问题。AI幻觉就像是AI在“做梦”,会给出一些不符合实际或者错误的答案。我们这篇文章的目的就是要分析缓解AI幻觉所需要投入的成本和能够获得的效益,看看怎么能让投入和产出的比例达到最优。范围涵盖了常见的AI应用场景,比如智能客服、自动驾驶等领域。接下来,我们会先介绍一些和AI幻觉、成本效益分析相关的术语。然后用一个有趣的故事引出核心概念,解释什么是AI幻觉、成本效益分析等,以及它们之间的关系。

AI 原生应用开发的博客 934

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4192

一致性(Consistency)介绍

一致性是分布式领域必须面对的主要问题之一。理想的一致性模型是:当一条更新出现时,所有的观察者都能“看到”这个更新。但是该模型在分布式领域很难实现,对应的理论基础是。这里讨论的一致性关注副本的的一致性。在理解副本一致性时,要注意与关系数据库事务的ACID特性中一致性区分。ACID中一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。

云原生Java Web领域技术博客 8171

RK3588开发笔记-5G模块(SIM8200、广和通FM160、移远RM500U)调试笔记

RK3588 CPU提供了丰富的外设接口,本文主要介绍通过usb3.0接口驱动5G模块来实现5g无线数据传输功能。在物联网和边缘计算领域,5G网络支持的高速率、低延时连接为应用带来了更多可能性。RK3588作为一款高性能SoC,适合用于5G联网应用。SIM8200广和通FM160和移远RM500U。在RK3588上调试5G模块可以为设备提供稳定的高速联网能力。本文介绍了如何配置和调试SIM8200、广和通FM160和移远RM500U模块,通过AT指令和QMI/MBIM工具实现5G数据连接。

flypig has a dream! 2669

虹科干货| 虹科Redis企业版数据库:告别游戏卡顿,让快乐加速!

虹科Redis企业版数据库能够在游戏行业得到广泛应用,正得益于它作为一款高性能内存数据库,不仅能轻松实现高度个性化的交互、内容缓存、用户会话管理、社交参与、消息传递、实时分析和高速交易等功能,还具备亚毫秒级低延迟、大规模提供实时参与体验方面的效率和多功能性等优势,帮助开发者更为方便地构建游戏服务器,让玩家的游戏体验提升一个Level!,虹科持续关注各行业当下急切需求,专注于为企业解答疑问,制定专属服务,提供一站式解决方案,虹科提供的Redis企业版数据库点燃游戏激情,赋能数据驱动!

Hongke_Tech的博客 174

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【虹科干货】无模式数据库的利与弊

无模式数据库无需预定义数据架构,支持多种数据库类型如键值存储、文档存储等。与模式化数据库相比,它在实时数据领域更受欢迎。优点包括数据完整性、灵活性高;缺点则是缺乏统一查询语言、与SQL不兼容、分布式环境下可能存在数据一致性问题。

虹科网络安全的博客 1058

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

干货 | 万字详解整个数据仓库设计体系

数据仓库的基本概念 数据仓库概念: 本文首发在公众号:五分钟学大数据,回复【秘籍】即可获取大数据宝典一份 英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。它出于分析性报告和决策支持目的而创建。 数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。 基本特征: 数据仓库是面向主题的

yuan_more的博客 3883

干货笔记,数据仓库工具箱

《数据仓库工具箱—维度建模的完全指南》是数据仓库建模方面的经典著作, 1996年第一版出版被认为是数据仓库方面具有里程碑意义的事件。作者kimballl是数据仓库方面的权威,他将多年的数...

weixin_45727359的博客 1665

聊聊db和缓存一致性常见的实现方式

欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。数据存储在数据库中,为了加快业务访问的速度,我们将数据库中的一些数据放在缓存中,那么问题来了,如何确保...

路人甲Java 4519

聊聊db和缓存一致性的5种实现方式

数据存储在 数据库中,为了加快业务访问的速度,我们将数据库中的一些数据放在缓存中,那么问题来了,如何确保db和缓存中数据的一致性呢?我们列出了5种方法,大家都了解一下,然后根据业务自己选择。 方案1 获取缓存逻辑 使用过定时器,定时刷新 redis中的缓存。 db更新数据逻辑 更新数据不用考虑缓存中的数据,直接更新数据就可以了 存在的问题 缓存中数据和db中数据一致性可能没有那么及时,...

good575654643的博客 1799

干货 | 你想知道的数据仓库知识,这里都有!

数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策。 面向主题:数据仓库侧重于数据分析工作,所以数据仓库中的数据是按照一定的主题进行组织和存储。 集成:对原有分散的数据库数据经过系统加工、整理,消除源数据中的不一致性。 稳定:数据进入数据仓库以后只需要定期的加载、刷新,不需要频繁修改。 反映历史变...

CDA数据分析师 400

干货笔记,数据仓库工具箱(附电子书下载)

后台回复【工具箱】获取电子书---《数据仓库工具箱—维度建模的完全指南》是数据仓库建模方面的经典著作, 1996年第一版出版被认为是数据仓库方面具有里程碑意义的事件。作者kimballl...

a934079371的博客 4376

干货:数据仓库架构及基础知识

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料1、什么是数据仓库?权威定义:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的...

朱小厮的博客 1258

干货:数据仓库基础知识(全)

权威定义:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。1)数据仓库是用于支持决策、面向分析型数据处理;2)对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。面对大数据的多样性,在存储和处理这些大数据时,我们就必须要知道两个重要的技术。分别是:数据仓库技术、Hadoop。当数据为结构化数据,来自传统的数据源,则采用数据仓库技术来存储和处理这些数据,如下图:2、数据仓库和数据库的区别?

派可数据的博客 761

层 数据仓库_干货 | 你想知道的数据仓库知识,这里都有!

数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策。面向主题:数据仓库侧重于数据分析工作,所以数据仓库中的数据是按照一定的主题进行组织和存储。集成:对原有分散的数据库数据经过系统加工、整理,消除源数据中的不一致性。稳定:数...

weixin_35790607的博客 126
上一篇: 虹科方案 | Redis Enterprise:适用于任何企业的矢量数据库解决方案
下一篇: 虹科干货 | DevOps 团队为什么独独青睐 Redis Enterprise ?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值