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

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

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

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

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

什么是变更数据捕获?

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

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

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

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

1.基于时间戳/查询的

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

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工具必须对您的用例具有成本效益。有开源、付费和许可产品可供选择。使用便捷性和支持:工具应该对您的团队易于使用,并提供充分的支持,包括全面的文档和技术支持。其他功能:根据您的需求,您可能还想检查其他特定功能,比如源和目标之间的双向同步和云支持。

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

以上就是变更数据捕获:概述、原因及优秀实践的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2291437.html

(0)
上一篇 2025年2月28日 01:01:40
下一篇 2025年2月23日 21:25:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python基于xml parse实现解析cdatasection数据

    本文实例讲述了python基于xml parse实现解析cdatasection数据的方法,分享给大家供大家参考。 具体实现方法如下: from xml.dom.minidom import * implementation = DOMIm…

    编程技术 2025年2月28日
    200
  • 如何多条件使用Excel过滤功能

    如果您需要了解如何在excel中使用具有多个条件的筛选功能,以下教程将指导您完成相应步骤,确保您可以有效地对数据进行筛选和排序。 Excel的筛选功能是非常强大的,能够帮助您从大量数据中提取所需的信息。这个功能可以根据您设定的条件,过滤数据…

    2025年2月27日 互联网
    200
  • Linux的文件系统(File System)架构简析

    本文主要讨论虚拟文件系统。Linux文件系统的架构包括具体文件系统(如Ext2、Ext3和XFS等)与应用程序之间的抽象层,即虚拟文件系统(Virtual File System,简称VFS)。VFS允许应用程序与不同类型的文件系统进行通信…

    2025年2月27日
    200
  • 如何使用Power Query将数据拆分为NTFS

    本文将介绍如何使用power query将数据进行行拆分。在从其他系统或源导出数据时,常常会遇到数据存储在单元格中组合多个值的情况。通过power query,我们可以轻松将这样的数据拆分成行,使得数据更易于处理和分析。 若用户不了解Exc…

    2025年2月27日 互联网
    200
  • 大数据全栈式开发语言 – Python

      前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端、服务器端,甚至数据库(MongoDB)开发,一个Web应用开发人员,只需要…

    2025年2月27日
    200
  • Python爬虫之音频数据实例

    一:前言 本次爬取的是喜马拉雅的热门栏目下全部电台的每个频道的信息和频道中的每个音频数据的各种信息,然后把爬取的数据保存到mongodb以备后续使用。这次数据量在70万左右。音频数据包括音频下载地址,频道信息,简介等等,非常多。昨天进行了人…

    2025年2月27日 编程技术
    200
  • python——根据电子表格的数据自动查找文件

    最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力。 经理最近又布置了一个很繁琐的任务给我:有一项很重大的项目做完了,但是要过审计(反正就是类似的审批之类的事情),要提交整个项目的过程性文件。这个项目做…

    编程技术 2025年2月27日
    200
  • 总结Python中的数据类型

    一、整型 在Python2中还有整型和长整型之分,但Python3中取消了长整型,统一归类为整型。 Python中的整型数可以用二进制,八进制,十进制和十六进制几种形式表示 可以用下面的方法来把十进制转换为其他几种形式 >>&g…

    编程技术 2025年2月27日
    200
  • python3.4使用循环的实例详解

    #!/usr/bin/env python# -*- coding:utf-8 -*-# __author__ = “blzhu””””python studyDate:2017″””import pymysql# import MySQL…

    2025年2月27日
    200
  • python读取excel数据绘图的实例详解

    1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # __author__ = “blzhu” 4 “”” 5 python study 6 Date:2017 7 “”” 8 # cod…

    2025年2月27日
    200

发表回复

登录后才能评论