0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

广州虹科电子 来源:广州虹科电子 作者:广州虹科电子 2023-07-13 13:56 次阅读

数据库一致性(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企业版特有模块】,可以任何规模在云、本地和混合部署中运行现代应用程序,提供无服务器、多模型的数据库解决方案。

一致性级别

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

隔离级别

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

有四种类型的隔离级别:

(1)未提交读取:最低级别。如果前一个事务对该行进行了未提交更新,则停止该行的更新。

(2)已提交读取:不允许"脏读"。如果事务已经更新,但尚未提交,则会阻止任何读取或写入。

(3)可重复读取:该级别使正在读取的数据行不会被访问和更新。

(4)可序列化:最高隔离级别,可序列化通常锁定整个表,而不是特定的数据行。

复制过程中的一致性

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

向数据库发布的任何更新通常按以下流程执行:

(1)应用程序发出写操作

(2)代理与系统中包含给定键的正确主(也称为“master”)"分片"通信

(3)分片写入数据并向代理发送回执

(4)代理将回执发送给应用程序

(5)主分片向副本发送写入信息

(6)副本将写入确认发回给主服务器

(7)写入副本的内容被持久化到磁盘上

(8)副本内部确认写入

wKgZomSvkb6AU24NAADTTR7XeEg201.png

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

命令的写操作流程如下所示:

(1)应用程序发出写操作

(2)代理与系统中包含给定key的正确主 "分片"通信

(3)复制将更新传递给副本分片

(4)复制将更新持久化到磁盘(假设选择了每次写入都自动更新)

(5-8)通过步骤5至8,确认从副本一直发回代理。

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

wKgZomSvkdiAGzW5AADVnZ09ZqE750.png

使用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提供了较强的最终一致性。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63375
收藏 人收藏

    评论

    相关推荐

    企业数据备份体系化方法论的七大原则:深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别

    在数字化时代,数据备份成为了企业信息安全的核心环节。但在备份过程中,两个关键概念——应用一致性和崩溃一致性,常常被误解或混淆。本文旨在阐明这两个概念的差异,并分析它们在数据备份中的重要
    的头像 发表于 03-11 14:05 122次阅读
    企业<b class='flag-5'>数据</b>备份体系化方法论的七大原则:深入理解<b class='flag-5'>数据</b>备份的关键原则:应用<b class='flag-5'>一致性</b>与崩溃<b class='flag-5'>一致性</b>的区别

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别

    深入理解数据备份的关键原则:应用一致性与崩溃一致性的区别 在数字化时代,数据备份成为了企业信息安全的核心环节。但在备份过程中,两个关键概念——应用
    的头像 发表于 03-11 11:29 226次阅读
    深入理解<b class='flag-5'>数据</b>备份的关键原则:应用<b class='flag-5'>一致性</b>与崩溃<b class='flag-5'>一致性</b>的区别

    DDR一致性测试的操作步骤

    DDR一致性测试的操作步骤  DDR(双数据率)一致性测试是对DDR内存模块进行测试以确保其性能和可靠性。在进行DDR一致性测试时,需要遵循一系列的操作步骤,以保证测试的准确性和完整性
    的头像 发表于 02-01 16:24 371次阅读

    求助,为什么miniWiggler的JTAG信号映射与设备端(TC397)不一致

    )通过引出个JTAG插座,同时兼容JTAG和DAP两种协议。由于上面提到的不一致性,只能通过调整线缆线序来满足这种需求,即当使用DAP协议时,需要将设备(TC397)侧JTAG插座的TMS(DAP1
    发表于 02-01 06:47

    Redis缓存与Mysql如何保证一致性

    基本流程就是客户端A请求,先去删除缓存,然后将数据写入数据库,此时客户端B查询先去查询缓存,缓存没有返回,去查数据库,此时还没有完成主从同步,拿到是从库的旧数据,然后将旧
    的头像 发表于 12-02 14:23 647次阅读
    Redis缓存与Mysql如何保证<b class='flag-5'>一致性</b>?

    AD9826存偏置电压不为0,并且一致性较差的原因?

    我这边做了批包含AD9826芯片的板卡,实测本底暗信号幅度都是样的,对应到AD9826应该是3000的DN值。但是AD9826采集出来不一致,变化从1500~4800。板卡更换AD9826芯片,暗信号DN值立马跟着改变。请问
    发表于 12-01 06:33

    redis与mysql如何保持数据一致性

    Redis和MySQL是两个常用的数据库系统,它们都有自己的特点和用途。在某些场景下,我们可能需要将Redis和MySQL进行结合使用,并保持数据一致性。 一、Redis与MySQL简介
    的头像 发表于 11-16 11:27 612次阅读

    ADA4960工作在单端输入-差分输出模式下,其输出P、N之间的相位一致性该怎么测试呢?

    ADA4960 工作在单端输入-差分输出模式下,其输出P、N之间的相位一致性该怎么测试呢? 我使用矢量网络分析仪进行测试,未用到的端口接50Ω负载,接线方式如下图 原理图如下:增益电阻RG=100
    发表于 11-14 06:53

    如何解决数据库与缓存一致性

    缓存一致性 每次逢年过节的时候抢票非常艰难,放票的时候那么多人同时去抢票,如果所有人查询、购票等都去访问数据库,那数据库的压力得有多大,这时候很多都会引入缓存, 把车票信息放入缓存,这样可以减少
    的头像 发表于 09-25 15:25 663次阅读
    如何解决<b class='flag-5'>数据库</b>与缓存<b class='flag-5'>一致性</b>

    ARM CoreLinK CCN-502高速缓存一致性网络技术参考手册

    CCN-502是基于AMBA 5 CHI架构的可扩展相干互连。它设计用于高端网络和企业计算系统。 CCN-502将互连和一致性功能组合到单个模块中。它提供以下外部接口: •四个完全一致的CHI端口
    发表于 08-02 10:38

    数据填报中如何保证数据一致性?#数据填报 #光点科技

    数据
    光点科技
    发布于 :2023年07月31日 09:45:53

    什么是数据库营销

    数据库一致性(database consistency)由一组值定义,数据库系统中的所有数据点都必须与这些值保持一致,才能正确读取和接受
    的头像 发表于 07-13 11:38 404次阅读
    什么是<b class='flag-5'>数据库</b>营销

    数据中台如何保证数据一致性和准确?#数据中台 #光点科技

    数据
    光点科技
    发布于 :2023年07月06日 17:43:22

    分布式一致性算法(1)#大数据处理

    数据
    未来加油dz
    发布于 :2023年07月05日 11:04:41

    如何使用Vector CANoe与S32k148evb进行LIN一致性测试?

    大家好, 我正在使用 Vector CANoe 进行 LIN 一致性(合规)测试,我正面临这个问题,那么它的原因应该是什么,解决方案是什么? 在测试用例 PT-CT88,89,90,93 中。 IUT 未响应诊断请求
    发表于 05-09 09:31