此刻不是此刻 2024-07-08 11:25 采纳率: 35.3%
浏览 7

数据全量和增量同步遇到的问题

最近在做数据同步优化,遇到一些问题。
之前的数据同步方案,是通过canal进行增量数据实时同步,DTLE进行全量跑批,保证数据的完整性,
但是目前这套方案不太支持分库分表(主要是canal)。
然后准备做优化,目前想在数据同步的时候进行业务处理,整成能够直接使用的业务数据,全量数据同步能够处理,
但是增量同步的时候,有些业务指标会用到目标库的数据
比如: 想计算一个人的学习总时长,全量同步可以直接把这个人的所有学习记录的时间进行sum累加,
但是增量的话,需要先读到源库的增量数据,然后累加到目标库上,这个就有点恶心了。
想问下,有什么好的方案吗,能够在数据同步的时候直接做成业务大宽表,支持增量和全量的。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-08 11:28
    关注

    引自免费微信小程序:皆我百晓生

    你好,你提到的问题是在数据同步时如何处理增量和全量的数据同步问题,并且希望在同步时进行业务处理。这确实是一个比较复杂的问题,尤其是在涉及分库分表的情况下。下面是一些建议和可能的解决方案:

    1. 增量与全量同步结合的策略

    全量同步

    对于全量同步,你已经有了处理的方式,即通过DTLE进行全量跑批,处理成业务数据。这种方式可以继续保持。

    增量同步的优化

    对于增量同步,你提到的业务指标计算问题,一种可能的解决方案是在同步的过程中进行中间状态的存储。也就是说,在增量数据同步到目标库之前,先将增量数据进行处理(例如累加学习时长),然后将处理结果暂存。待增量数据累积到一定程度或者定时触发的情况下,再将累积的结果合并到目标库中。

    2. 使用支持增量与全量同步的工具

    考虑使用其他支持增量和全量同步的工具或框架,这些工具可能提供了更高级的功能,例如直接支持分库分表的同步,或者在同步过程中进行业务逻辑的处理。这样可以在一定程度上简化你的工作。例如:Apache Kafka配合适当的consumer应用可以很好地处理增量和全量的数据同步问题。

    3. 数据仓库/数据湖方案

    考虑建立一个数据仓库或数据湖来存储和处理数据。在这种方案中,你可以将源数据同步到数据仓库中,并在数据仓库中进行增量和全量的数据处理。这样,无论增量还是全量数据,都可以按照业务需求进行处理,并且支持分库分表。数据仓库提供了丰富的数据处理和查询功能,可以很好地满足你的需求。

    4. 使用存储过程或触发器处理业务逻辑

    在目标数据库中创建存储过程或触发器,当增量数据同步过来时,自动触发存储过程或触发器执行相应的业务逻辑处理。这样可以在数据同步的过程中直接完成业务处理,无需额外的操作。

    5. 设计考虑

    在实施上述方案时,需要注意以下几点:

    • 数据一致性:确保在同步过程中数据的完整性和一致性。
    • 性能考虑:增量同步和全量同步的性能要求是不同的,需要根据你的业务需求进行性能优化。
    • 错误处理:对于可能出现的错误和异常情况进行妥善处理。
    • 监控与日志:建立有效的监控和日志系统,以便在出现问题时能够迅速定位和解决。

    综上,具体选择哪种方案取决于你的具体需求、系统架构和数据特点。可能需要进行一系列的调研和实验来找到最适合你的解决方案。希望这些建议能够帮助你解决问题!

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月8日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表