0

0

变更数据捕获:概述、原因及优秀实践

WBOY

WBOY

发布时间:2024-02-19 15:42:18

|

642人浏览过

|

来源于每日运维

转载

变更数据捕获:概述、原因及优秀实践

现今的企业,尤其是那些把数字化转型放在首要位置的企业,迫切需要实时数据。传统的每周和每月批处理已经无法满足需求。然而,要从多个来源获取实时数据,并将其用于自动化流程和动态优化决策并不容易。

最近,在对客户的遗留系统进行重新架构、将单体架构拆分为微服务时,我们遇到了一个挑战。我们开始对数据库进行修改,按模块对系统进行现代化改造。在这个阶段,我们需要确保两个数据库保持同步,因为不同的模块可能需要相同的数据 — 换句话说,旧系统需要新数据库中新系统生成的数据,反之亦然。

我们研究了变更数据捕获(CDC)技术,以确定其是否符合我们的需求。文章详细介绍了CDC的定义、我们测试过的工具、它们的运作方式和优势。同时,我们分享了一些案例和建议,帮助其他技术人员在特定情况下选择适合的CDC工具。

什么是变更数据捕获?

数据捕获是指通过检测和捕获源系统中的变更,然后将这些变更几乎实时地传递到目标系统的过程。这些变更可能包括插入、删除、更新操作以及数据库结构的DDL更改。

变更数据捕获工具的工作原理

CDC工具通过监控源系统中的数据变更来实现其功能。一旦发现变更,CDC工具会捕获并记录在指定位置,如数据库或日志文件。随后,经过处理和转换的数据会被加载到目标系统,如数据仓库或分析平台中。

有多种捕获数据库变更的方法。让我们来看看其中的一些:

1.基于时间戳/查询的

在这一方法中,我们会在源中维护一些类似于CREATED_AT、LAST_UPDATED或DATE_MODIFIED的审计列,并通过查询源中的数据来检测这些列中的变化,以此来捕获任何数据的更改。需要注意的是,这种方式并不能记录删除操作。

Removal.AI
Removal.AI

AI移出图片背景工具

下载

2.基于触发器的

触发器是数据库中根据特定事件执行操作的函数。尽管可用于捕获任何变更,包括删除操作,但会降低数据库性能,因为每次事件都需要进行多次写入。

3.基于日志的

数据库包含事务日志用于在发生崩溃时进行恢复,存储所有事件。通过基于日志的CDC,新数据库事务直接从本机日志中读取,这样可以捕获变更,而无需扫描源表,因此更为高效。

这种方法类似于事件驱动架构中的事件溯源,每当系统状态发生变化时,我们将其记录为一个事件。记录的事件可以通过以相同的顺序重播来随时重建系统状态。

为什么使用CDC?

根据情况、应用程序、架构和业务需求,CDC在许多场景下都是至关重要的。以下是CDC有助于工程过程的一些方式:

  • 实时数据可用性:CDC工具以几乎实时的方式捕获变更,确保最新的数据可用于分析、报告或进一步处理。
  • 更快的决策制定:CDC有助于减少捕获和数据可用性之间的延迟,实现更快的分析和决策制定。
  • 高效的数据集成:CDC工具有助于从多个操作源捕获数据,并将其转换为单一目标数据库或数据湖中的通用格式。
  • 目标数据库的定制设计:CDC提供跨功能的好处,比如在CQRS系统中创建只读搜索或查询数据库、创建审计数据库,或在数据仓库中捕获数据。它允许将非功能性和架构需求与主要数据存储解耦。
  • 简化的数据迁移:在我们的情况下,CDC有助于在现代化阶段维护遗留和新数据库之间的数据一致性。这也适用于其他各种数据迁移场景。

如何选择合适的CDC工具?

市场上有几种CDC工具,比如Oracle Golden Gate、Debezium、IBM Infosphere、Striim、StreamSets和Qlik Replicate。这些工具可以是开源的或付费的。它们通常支持本地和云环境,并能处理各种数据源。在选择时,考虑以下几点:

  • 与数据源的兼容性:至少,您选择的工具必须与您想要捕获变更的所有数据源兼容。
  • 实时数据捕获:工具应该以几乎实时的方式捕获变更,以便您能够使用最新的数据。
  • 数据转换和集成:CDC工具应该能够处理从源到目标数据类型的数据转换。
  • 价格:CDC工具必须对您的用例具有成本效益。有开源、付费和许可产品可供选择。
  • 使用便捷性和支持:工具应该对您的团队易于使用,并提供充分的支持,包括全面的文档和技术支持。
  • 其他功能:根据您的需求,您可能还想检查其他特定功能,比如源和目标之间的双向同步和云支持。

随着企业变得以技术为驱动,历史和当前的数据将成为一个至关重要的差异化因素。实现精确、及时、高效和具有成本效益的变更数据捕获将成为任何技术转型计划的重要组成部分。当您面临这种情况时,希望本文能对您有所帮助。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

301

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

264

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

202

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

234

2023.09.18

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

450

2023.09.19

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

437

2023.09.19

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

315

2023.09.19

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.5万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.1万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号