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

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

3天内不再提示

什么是数据库营销

广州虹科电子科技有限公司 来源:虹科云科技 2023-07-13 11:38 次阅读

数据库一致性(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)副本内部确认写入

4a501b06-212e-11ee-962d-dac502259ad0.png

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

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

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

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

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

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

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

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

4a8310ba-212e-11ee-962d-dac502259ad0.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提供了较强的最终一致性。





审核编辑:刘清

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

    关注

    14

    文章

    2000

    浏览量

    61134
  • 隔离器
    +关注

    关注

    4

    文章

    773

    浏览量

    38321
  • WAIT
    +关注

    关注

    0

    文章

    4

    浏览量

    2512

原文标题:虹科干货 | 什么是数据库一致性?

文章出处:【微信号:Hongketeam,微信公众号:广州虹科电子科技有限公司】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分
    的头像 发表于 12-16 11:05 120次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—Mysql<b class='flag-5'>数据库</b>表记录丢失的<b class='flag-5'>数据</b>恢复流程

    数据库事件触发的设置和应用

    数据库无论对于生产管理还是很多的实际应用都非常重要。小编这次聊一下数据库事件触发的应用。示例使用了postgresql和Python。
    的头像 发表于 12-13 15:14 110次阅读

    数据库数据恢复—MYSQL数据库ibdata1文件损坏的数据恢复案例

    mysql数据库故障: mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库
    的头像 发表于 12-09 11:05 138次阅读

    数据库数据恢复—通过拼接数据库碎片恢复SQLserver数据库

    一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库
    的头像 发表于 10-31 13:21 203次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—通过拼接<b class='flag-5'>数据库</b>碎片恢复SQLserver<b class='flag-5'>数据库</b>

    Oracle数据恢复—异常断电后Oracle数据库报错的数据恢复案例

    Oracle数据库故障: 机房异常断电后,Oracle数据库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据
    的头像 发表于 09-30 13:31 299次阅读
    Oracle<b class='flag-5'>数据</b>恢复—异常断电后Oracle<b class='flag-5'>数据库</b>启<b class='flag-5'>库</b>报错的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—Oracle数据库文件system01.dbf损坏的数据恢复案例

    打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。
    的头像 发表于 09-21 14:25 321次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—Oracle<b class='flag-5'>数据库</b>文件system01.dbf损坏的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例

    SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库
    的头像 发表于 09-20 11:46 338次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>出现823错误的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SqlServer数据库底层File Record被截断为0的数据恢复案例

    SQL Server数据库数据无法被读取。 经过数据库数据恢复工程师的初步检测,发现SQL Server数据库文件无法被读取的原因是底层
    的头像 发表于 07-26 11:27 379次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SqlServer<b class='flag-5'>数据库</b>底层File Record被截断为0的<b class='flag-5'>数据</b>恢复案例

    恒讯科技分析:sql数据库怎么用?

    SQL数据库的使用通常包括以下几个基本步骤: 1、选择数据库系统: 选择适合您需求的SQL数据库系统,如MySQL、PostgreSQL、Microsoft SQL Server、SQLite等
    的头像 发表于 07-15 14:40 346次阅读

    数据库数据恢复—SQL Server数据库所在分区空间不足报错的数据恢复案例

    SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。
    的头像 发表于 07-10 13:54 481次阅读

    数据库数据恢复—数据库所在分区空间不足导致sqlserver故障的数据恢复案例

    数据库数据恢复环境: 某品牌r520服务器,服务器中有7块SAS硬盘,这7块硬盘组建了一组2盘raid1阵列和一组5盘raid5阵列,raid1阵列存储空间安装操作系统,raid5阵列存储空间存放
    的头像 发表于 05-22 13:16 453次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>数据库</b>所在分区空间不足导致sqlserver故障的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—raid5阵列上层Sql Server数据库数据恢复案例

    数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区
    的头像 发表于 05-08 11:43 505次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—raid5阵列上层Sql Server<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    选择 KV 数据库最重要的是什么?

    经常有客户提到 KV 数据库,但却偏偏“不要 Redis”。比如有个做安全威胁分析平台的客户,他们明确表示自己对可靠性要求非常高,需要的不是开源 Redis 这种内存缓存,而是 KV 数据库。虽然
    的头像 发表于 03-28 22:11 693次阅读
    选择 KV <b class='flag-5'>数据库</b>最重要的是什么?

    数据库数据恢复】Oracle数据库ASM实例无法挂载的数据恢复案例

    oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
    的头像 发表于 02-01 17:39 519次阅读
    【<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复】Oracle<b class='flag-5'>数据库</b>ASM实例无法挂载的<b class='flag-5'>数据</b>恢复案例

    mysql怎么新建一个数据库

    mysql怎么新建一个数据库 如何新建一个数据库在MySQL中 创建一个数据库是MySQL中的基本操作之一。下面将详细介绍在MySQL中如何新建一个数据库。 在MySQL中创建
    的头像 发表于 12-28 10:01 886次阅读