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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Steve Graves 2022-06-30 15:00 次阅读

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

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

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

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

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

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

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

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

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

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

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

结论

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

审核编辑:郭婷

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

    关注

    5086

    文章

    19141

    浏览量

    305910
  • 数据库
    +关注

    关注

    7

    文章

    3817

    浏览量

    64482
  • 触发器
    +关注

    关注

    14

    文章

    2000

    浏览量

    61204
收藏 人收藏

    评论

    相关推荐

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

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库无任何
    的头像 发表于 12-16 11:05 173次阅读
    <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 173次阅读

    HAL嵌入式系统的应用

    HAL(Hardware Abstraction Layer Library,硬件抽象层)在嵌入式系统扮演着至关重要的角色。以下是HAL
    的头像 发表于 12-02 11:32 632次阅读

    诚迈科技与粤港澳大湾区国家技术创新中心签署嵌入式数据库合作备忘录

    11月26日,诚迈科技与粤港澳大湾区国家技术创新中心工业软件产业发展中心(以下简称“国创工软”)签署嵌入式数据库合作备忘录。双方将围绕嵌入式数据库和鸿蒙生态紧密合作,共同构建面向工业企
    的头像 发表于 11-29 14:50 193次阅读
    诚迈科技与粤港澳大湾区国家技术创新中心签署<b class='flag-5'>嵌入式</b><b class='flag-5'>数据库</b>合作备忘录

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

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

    一文讲清什么是分布云化数据库

    分布云化数据库是一种先进的数据管理系统,它将传统的数据库技术与分布计算、云计算和大数据处理技
    的头像 发表于 10-14 10:06 229次阅读

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

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

    软件系统数据库的分库分表设计

    的分布集群,实现分库分表功能,解决数据库中海量数据存储和查询性能的问题。MyCat 还是一个数据库的集群中间件,主要实现 RDBMS 数据库
    的头像 发表于 08-22 11:39 331次阅读
    软件系统<b class='flag-5'>数据库</b>的分库分表设计

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

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

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

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

    通过Modbus读写数据库数据

    本文是将数据库数据转为Modbus服务端/从站,实现数据库内的数据也可以走Modbus协议通过网口或串口读写的案例,下图是通过智能网关的参数软件(在附件
    发表于 03-14 13:44

    GSMA最新资讯:IMEI数据库平台品牌更新与链接地址变更告知

    GSMA最新资讯:IMEI数据库平台品牌更新与链接地址变更告知
    的头像 发表于 02-19 17:07 583次阅读
    GSMA最新资讯:IMEI<b class='flag-5'>数据库</b>平台品牌更新与链接地址<b class='flag-5'>变更</b>告知

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

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