它是如何工作的? cdc是什么意思?( 三 )


DBA和数据工程师应当持续关注并测试 , 那些被添加到生产环境中的各种触发器的性能 , 进而决定是否可以容忍此类额外产生的开销 。
事务日志CDC

它是如何工作的? cdc是什么意思?

文章插图


众所周知 , 数据库虽然主要会将事务日志用于备份和恢复目的 , 但它们也可被用于将变更复制到目标数据库或数据湖中 。而在基于事务日志的CDC系统中 , 数据流不会被持久性存储 。它们会使用Kafka去捕获变更 , 并将变更推送到目标数据库中 。
可见 , 基于事务日志的CDC和基于触发器的CDC之间的主要区别在于 , 每个变更都将进入由数据库引擎所生成的事务日志中 。也就是说 , 数据库引擎会使用本机事务日志(也称为重做日志) , 来存储所有数据库的事件 , 以便在发生故障时 , 可以恢复数据库 。它们无需执行任何应用程序级别的变更 , 或扫描影子表 。因此 , 与基于触发器的CDC相比 , 从事务日志中恢复数据虽然更为复杂 , 但是会更加可行 。
优点:
  • 由于每个事务都不需要额外的查询 , 因此它对生产环境中的数据库系统的影响最小 。
  • 无需变更生产环境中数据库系统的架构 , 或添加额外的数据表 。
缺点:
  • 由于大多数数据库并不记录它们的事务日志格式 , 也不会在新的版本中公布对其实施的变更 , 因此DBA解析数据库的内部日志格式会较为困难 。DBA有时需要在数据库的每个新版本中 , 去解析变更数据库的日志逻辑 。
  • 由于日志文件通常会被数据库引擎予以归档 , 因此CDC软件必须在此之前读取日志 , 或者能够读取已归档的日志 。
  • 创建可扫描的事务日志所需要的额外日志级别 , 可能会增加少量的性能开销 。
  • 当CDC应用程序发送数据时 , 目标数据库可能会意外地变得不可访问 。它们必须缓冲未发送的数据 , 直到目标数据库重新联机上线 。当然 , 如果未能完成该步骤 , 则可能导致数据的丢失或重复 。
  • 同样 , 如果源与目标之间的传输连接出现中断 , 系统也可能会发生故障 , 进而导致数据的丢失、记录的重复、以及需要从初始数据处重新启动加载 。
基于触发器与事务日志的比较 总的说来 , 基于触发器的CDC和事务日志CDC , 都是可用于构建反应式分布式系统的数据库设计模型 。其中 , 基于触发器的CDC使用自己的事件日志 , 作为真实的数据来源 , 而事务日志CDC则依赖底层数据库的事务日志作为真实来源 。
触发器可作为每个数据库事务的一部分 , 以捕获实时发生的事件 。对于每次插入、更新或删除 , 都会由某个触发器去触发记录的变更 。另一方面 , 事务日志CDC则可以独立于事务运行 。它使用重做日志文件来记录的变更 。由于CDC操作在发生时不会直接与数据库中的每个事务相关联 , 因此其性能会有所提升 。
在实际应用中 , 各种常见的DBSync产品和DBConvert Studio都会使用基于触发器的数据库同步CDC方法 。不过 , 对于集群数据库而言 , 基于触发器的方法可能会比使用MySQL的二进制日志、或PostgreSQL的事务日志 , 要相差许多 。毕竟 , MySQL在其官网上已声称:“在启用二进制日志的情况下 , 服务器的运行性能可能会被略微拖慢 。但是 , 二进制日志在方便复制与恢复操作等方面的好处 , 通常超过性能上的微降 。”(


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: