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

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

3天内不再提示

嵌入式数据库中的变更数据捕获

星星科技指导员 ? 来源:嵌入式计算设计 ? 作者:Steve Graves ? 2022-11-24 16:36 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

变更数据捕获 (CDC) 广义上定义为跟踪数据库中的变更。跟踪更改的目的多种多样。嵌入式数据库系统中的 CDC 可以通过几种不同的方式实现,这些方式有时对应用程序是不可见的,也可以通过这些方式实现应用程序用于数据共享、响应事件和增量备份。

在嵌入式数据库中实现CDC的第一个(也可能是最明显的)是实现事务的ACID属性的一部分:原子性,一致性,隔离性和持久性。将事务成功应用于数据库会将该数据库从一个一致状态移动到一个新的一致状态。相反,不成功将事务应用于数据库必须将数据库返回到在成功应用事务之前存在的一致状态。为了满足这些要求,数据库管理系统必须跟踪更改。实现细节因数据库系统而异,甚至在数据库系统系列中,从纯内存中数据库、持久内存中数据库以及部分或完全持久数据库(混合数据库)也有所不同。

对于纯内存数据库,没有记录更改的事务日志。因此,在事务处于活动状态时,更改或更改记录的前映像都需要保存在缓冲区中,以便在事务中止时可以将数据库还原到其事务前状态。

对于具有持久性的内存中数据库,所有更改也会追加到存储在持久性媒体上的事务日志中,该事务日志可在崩溃后重播以进行恢复。

对于持久性(基于磁盘的)数据库,还利用事务日志记录来优化性能和支持从崩溃中恢复。在这种情况下,可以提供两种形式的事务日志记录:撤消日志记录和预写日志记录 (WAL)。WAL 如上一段所述。撤消日志记录将已更改记录的前映像写入事务日志文件。在发生崩溃时,UNDO 日志信息用于回滚不完整的事务(即将数据库返回到上一个一致状态)。

CDC在某些数据库系统中的另一个内部用途是通过MVCC(多版本并发控制)实现乐观并发控制。乐观并发控制意味着应用程序不必获取锁,这也意味着应用程序永远不必等待另一个应用程序持有的锁。这要求数据库系统知道两个应用程序是否同时尝试修改同一个数据库对象。这是通过跟踪提交事务时检查的版本号来完成的(因此称为多版本并发控制)。如果对象的版本在应用程序获取对象副本和应用程序想要提交对该对象的更改之间发生了更改,则意味着另一个应用程序首先修改了基础对象,必须中止并重试此事务。MVCC 背后的理论是,这种冲突很少见,并且偶尔重试比总是必须获取锁并可能使用这些锁阻止其他应用程序更有效。

CDC 还用于需要“五个 9”可用性(即 99.999% 正常运行时间)的系统的高可用性 (HA) 实施中。HA 由不同的数据库供应商以不同的方式实现:实时事务复制、SQL 语句复制、日志文件转发等。有所谓的 1-safe(又名惰性、异步)和 2-safe(又名 eager、同步)实现。例如,实时事务复制可以是 1 安全或 2 安全(在eXtremeDB 中,我们将其称为时间识别两阶段提交);日志转发本质上是 1 安全的。

CDC 可在嵌入式数据库和/或第三方系统中用于可在应用程序中使用的其他目的:开放复制、触发器/事件通知和增量备份。

一些嵌入式数据库系统实现复制,例如,支持高可用性和/或数据库集群。此类系统使得在同一数据库系统的两个或多个实例之间复制数据或事务变得容易,但是当需要从嵌入式数据库复制到任何其他目标时,它们不是解决方案。有第三方产品试图填补这一空白,例如Actian DataConnect和Oracle Golden Gate。或者通过自定义提取-转换-加载 (ETL) 解决方案,该解决方案可能对源和/或目标数据库中的更改敏感。

触发器和事件通知方案是变更数据捕获的典型用例。毕竟,触发器是在指定表的 INSERT、UPDATE 或 DELETE 语句执行时触发的。换句话说,数据已经改变,触发器捕获了该变化,以便周围系统以某种方式采取行动。

嵌入式数据库系统中变更数据捕获的最后一个重要目的是实现增量备份设施。增量备份方案必须知道在上次完整快照或上次增量备份之间数据库中发生的增量更改。

结论

变更数据捕获是任何数据库管理系统的核心。它有助于实现并发性和持久性、复制、触发器/事件通知以及备份和还原的 ACID 属性。

审核编辑:郭婷

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

    关注

    5161

    文章

    19784

    浏览量

    319690
  • 数据库
    +关注

    关注

    7

    文章

    3948

    浏览量

    66810
  • 触发器
    +关注

    关注

    14

    文章

    2042

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    数据库数据恢复—MongoDB数据库文件丢失的数据恢复案例

    MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍
    的头像 发表于 07-01 11:13 ?208次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MongoDB<b class='flag-5'>数据库</b>文件丢失的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 ?229次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    MySQL数据库是什么

    开发、企业应用和大数据场景。以下是其核心特性和应用场景的详细说明: 核心特性 关系型数据库模型 数据以 表(Table) 形式组织,表由行(记录)和列(字段)构成。 通过 主键、外键 实现表间关联,支持复杂查询和事务处理。 示例
    的头像 发表于 05-23 09:18 ?564次阅读

    分布存储数据恢复—虚拟机上hbase和hive数据库数据恢复案例

    分布存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布存储故障:
    的头像 发表于 04-17 11:05 ?292次阅读

    数据库数据恢复——MongoDB数据库文件拷贝后服务无法启动的数据恢复

    MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的
    的头像 发表于 04-09 11:34 ?374次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复——MongoDB<b class='flag-5'>数据库</b>文件拷贝后服务无法启动的<b class='flag-5'>数据</b>恢复

    数据库数据恢复—SQL Server附加数据库提示“错误 823”的数据恢复案例

    SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份
    的头像 发表于 02-28 11:38 ?540次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server附加<b class='flag-5'>数据库</b>提示“错误 823”的<b class='flag-5'>数据</b>恢复案例

    分布云化数据库有哪些类型

    分布云化数据库有哪些类型?分布云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库
    的头像 发表于 01-15 09:43 ?557次阅读

    MySQL数据库的安装

    MySQL数据库的安装 【一】各种数据库的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】MySQL 介绍
    的头像 发表于 01-14 11:25 ?646次阅读
    MySQL<b class='flag-5'>数据库</b>的安装

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

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

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

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

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

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

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

    一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库
    的头像 发表于 10-31 13:21 ?763次阅读
    <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 ?811次阅读
    Oracle<b class='flag-5'>数据</b>恢复—异常断电后Oracle<b class='flag-5'>数据库</b>启<b class='flag-5'>库</b>报错的<b class='flag-5'>数据</b>恢复案例

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

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