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

    文章

    3993

    浏览量

    67739
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电缆组件相位一致性的意义

    、技术本质:定义与量化指标 相位一致性描述的是多通道电缆组件在相同频率与输入信号下,各通道输出信号相位差的稳定程度。核心衡量指标包括: 相位偏差 :单通道相位的波动范围 通道间相位差 :多通道之间
    的头像 发表于 11-27 13:41 73次阅读
    电缆组件相位<b class='flag-5'>一致性</b>的意义

    请教大家下DP一致性测试问题

    请教大家下,DP的Vbios中已经固定了预加重和Swing的值,DP的TX信号一致性测试项中Non Pre-Emphasis Level Test(Swing2/Swing0)-PLTPAT,这个测试项意思是Swing2与Swing0偏差吗?已经固定了Swing中,这
    发表于 11-12 15:57

    解决锂电池一致性难题!景锂新能源电池均衡仪为储能安全/电动车续航保驾护航

    解决锂电池一致性难题!景锂新能源电池均衡仪为储能/电动车电池续航保驾护航
    的头像 发表于 11-06 11:00 363次阅读

    直播回顾 | 深度解读CAN总线一致性测试的四大层级与实战方法,科技术直播助您破解汽车通信稳定性的关键

    •直播主题CAN总线一致性测试“一致性测试是保障总线系统稳定、兼容、可靠运行的核心环节。”随着整车电子电气架构日益复杂,ECU数量增多、通信负载加大,CAN节点之间若存在电气特性不匹配、时序偏差
    的头像 发表于 10-30 17:34 1944次阅读
    直播回顾 |  深度解读CAN总线<b class='flag-5'>一致性</b>测试的四大层级与实战方法,<b class='flag-5'>虹</b>科技术直播助您破解汽车通信稳定性的关键

    镜头不一致的问题原因分析

    在机器视觉系统的视界,镜头一致性犹如维系整个生态的隐形生命线,贯穿于光学成像、图像处理到智能决策的全链路,其细微波动足以颠覆整个检测系统的可靠。当工业界热衷于讨论算法精度与算力突破时,镜头这基础光学元件的
    的头像 发表于 09-11 09:45 703次阅读

    数据库数据恢复—服务器异常断电导致Oracle数据库故障的数据恢复案例

    Oracle数据库故障: 某公司台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持
    的头像 发表于 07-24 11:12 436次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b>故障的<b class='flag-5'>数据</b>恢复案例

    LED材料一致性比对(导热塑料开裂案例分享)

    不断地侵蚀着我们,面对这些劣质产品,可能个细小的失误就可能给企业造成巨大的财产损失或断送了前程。材料一致性比对的应用领域来料检验:由供应商未通知客户擅自改换原材料
    的头像 发表于 06-19 14:14 446次阅读
    LED材料<b class='flag-5'>一致性</b>比对(导热塑料开裂案例分享)

    SQLSERVER数据库是什么

    支持在Linux和容器化环境中运行。 核心特点 关系型数据库 基于SQL(结构化查询语言)进行数据操作,支持表、行、列等结构化存储。 提供ACID(原子一致性、隔离
    的头像 发表于 05-26 09:19 994次阅读

    车用锂离子电池机理建模与并联模组不一致性研究

    车用锂离子电池机理建模与并联模组不一致性研究
    发表于 05-16 21:02

    堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝一致性

    及稀释程度等关键参数对焊层质量有直接影响,实时监控熔池轮廓和温度分布可及时预警缺陷并指导参数优化,以保证焊层一致性与工艺稳定性。今天起了解堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝一致性。 堆焊简介 堆焊,又
    的头像 发表于 04-24 17:15 509次阅读
    堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝<b class='flag-5'>一致性</b>

    一致性校正与边缘融合拼接

    电子发烧友网站提供《差一致性校正与边缘融合拼接.pdf》资料免费下载
    发表于 04-10 18:02 0次下载

    请问如何保证多片AD1278的通道之间相位一致性

    读取手册,发现要保证多片AD1278的通道之间相位一致性需要两点:1、CLK一致;2、SYNC_N同时拉高。 我的情况: 1、各个AD1278的CLK来着不同的时钟源,即分别采用10ppm
    发表于 01-14 06:02

    数据库是哪种数据库类型?

    数据库种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型
    的头像 发表于 01-07 10:22 804次阅读

    如何使用cmp进行数据库管理的技巧

    使用 cmp 命令进行数据库管理可能不是最直观的方法,因为 cmp 通常用于比较两个文件是否相同。然而,如果你的意图是使用 cmp 来检查数据库文件或备份文件的一致性,以下是些技巧和
    的头像 发表于 12-17 09:31 972次阅读

    FCB-EV9520L光轴一致性的典范,焦距变换精准如初

    索尼FCB-EV9520L出色的光轴一致性在多个应用场景中展现出了其独特的优势和价值。通过提高图像的准确、减少图像畸变以及增强应用场景的适应,FCB-EV9520L成为了市场上备受瞩目的视频产品解决方案之
    的头像 发表于 12-09 09:45 996次阅读
    FCB-EV9520L光轴<b class='flag-5'>一致性</b>的典范,焦距变换精准如初