使用 Spring 进行数据迁移

Posted

技术标签:

【中文标题】使用 Spring 进行数据迁移【英文标题】:Data Migration using Spring 【发布时间】:2019-03-27 15:59:00 【问题描述】:

我们正在开始重新构建公司内部系统的过程。 这项工作的关键组成部分之一是更好地满足我们要求的新数据模型。 工作初始阶段的主要部分是设计和构建数据迁移工具。 这将从一个或多个现有系统中获取数据并将其迁移到新模型。 一些要求:

    将数据转换为新模型 使用默认值或根据业务规则丰富数据 与现有系统集成以提取数据 与正在引入公司的 Salesforce CRM 集成。 有关失败的日志记录和通知

在 Spring 世界中,哪个 Spring 项目最适合用作此类数据迁移工具的底层框架?

我最初的想法是考虑使用 Spring Integration 实现该工具。 这将:

    通过 XML 或 DSL,允许查看、理解和编辑高级数据流(可能使用可视化工具,例如 STS 插件)。能够以这种方式查看高级流程是一个很大的优势。 用于处理不同数据源的连接器。 为迁移数据格式而构建的转换器组件。 路由器将新模型中的数据路由到与系统连接的端点。

但是,还有其他 Spring 项目,例如 Spring Data 或 Spring Batch,它们更符合要求吗?

非常感谢您的反馈和想法。

【问题讨论】:

我不想污染答案,因为没有什么可以添加到您所有的正确点上。只有一句话:您可以将所有这些项目组合在一起。基于 Spring Data 的 Spring Integration 中有很多 Channel Adapter。 Spring Batch 确实可以在您的解决方案中用于某些加载任务。 Spring Batch 和 Spring Integration 之间也有联系:docs.spring.io/spring-batch/4.1.x/reference/html/… 【参考方案1】:

我当然会从 spring-integration 开始,它公开了 Enterprise Integration Patterns 的基本实现,这是您列出的大多数/所有要求的核心。 它也是一个非常棒的问题建模工具,可以帮助您更好地理解问题,然后在一个内聚的集成流程中设想它的实现 稍后,一旦您清楚地了解事情的运作方式,通过引入您提到/标记的“其他框架”添加#spring-cloud-data-flow和#spring-将其提升到一个新的水平将非常简单云流。

总体而言,这个问题相当广泛,因此请考虑遵循上述指示并开始提出更具体的问题。

【讨论】:

以上是关于使用 Spring 进行数据迁移的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 应用程序中使用 Flyway 进行多数据源迁移

如何使用 Hibernate 在 Spring Boot 中处理数据库迁移?

无法在 Spring 应用程序中使用 Flyway 1.6 进行迁移

从 MySQL 到 SQL Server 的 Hibernate + Spring 迁移

使用 Spring Boot 进行 Flyway 修复

Spring Boot Flyway 将数据库迁移应用到错误的数据库