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

    文章

    1995

    浏览量

    61009
  • 隔离器
    +关注

    关注

    4

    文章

    766

    浏览量

    38265
  • WAIT
    +关注

    关注

    0

    文章

    4

    浏览量

    2503

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    无模式数据库的利与弊

    数据管理需求日益多样,无论是金融服务、游戏还是社交媒体行业,都要求支持实时数据处理和快速迭代,无模式数据库因其灵活性和易用性而逐渐成为开发者的新选择。那么,无模式数据库到底有哪些特性呢
    的头像 发表于 12-16 08:04 468次阅读
    无模式<b class='flag-5'>数据库</b>的利与弊

    数据库数据恢复—未开启binlog的Mysql数据库数据恢复案例

    mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎类型为innodb,独立表空间,无数据库备份,未开启binlog
    的头像 发表于 12-08 14:18 1051次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—未开启binlog的Mysql<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    关于JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值呢?
    的头像 发表于 12-06 13:46 821次阅读
    关于JSON<b class='flag-5'>数据库</b>

    mysql数据库基础命令

    MySQL是一个流行的关系型数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关的详细解释。 登录MySQL 要登录MySQL数据库,可以
    的头像 发表于 12-06 10:56 527次阅读

    oracle数据库的基本操作

    Oracle数据库是一种关系数据库管理系统(RDBMS),广泛应用于企业级应用中。它具有强大的功能和灵活的配置选项,可以满足复杂的数据处理需求。本文将介绍Oracle数据库的基本操作,
    的头像 发表于 12-06 10:14 632次阅读

    oracle数据库的使用方法

    Oracle数据库是一种关系型数据库管理系统,它由Oracle公司开发和维护。它提供了安全、可靠和高性能的数据库管理解决方案,被广泛应用于企业级应用和大型数据库环境中。本文将详细介绍O
    的头像 发表于 12-06 10:10 1146次阅读

    oracle数据库alert日志作用

    Oracle数据库的alert日志是数据库引擎和实例的核心组件之一,它记录着数据库的运行状况和事件。该日志对于数据库的性能调优、问题排查和安全管理起着重要作用。本文将详尽、详实、细致地
    的头像 发表于 12-06 10:08 1157次阅读

    什么是JSON数据库

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON数据库如何运作,它为应用程序开发者带来了哪些价值呢?文章速览:什么是JSON什么是JSON
    的头像 发表于 12-02 08:04 803次阅读
    什么是JSON<b class='flag-5'>数据库</b>

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 423次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型

    数据库数据恢复—SQLserver数据库被加密如何恢复数据

    一台服务器上的SQLserver数据库被勒索病毒加密,无法正常使用。该服务器上部署有多个SQLserver数据库,其中有2个数据库及备份文件被加密,文件名被篡改,数据库无法使用。
    的头像 发表于 11-23 14:42 864次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQLserver<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    navicat怎么导出数据库文件

    导出数据库文件是数据库管理中的一个重要操作,而Navicat是一款流行的数据库管理工具,具有强大的导出功能。在本文中,我将详细介绍如何使用Navicat导出数据库文件,并在步骤中提供所
    的头像 发表于 11-21 10:53 7778次阅读