【问题标题】:How to convert old data to a new system? using sql or managed code?如何将旧数据转换为新系统?使用 sql 或托管代码?
【发布时间】:2009-02-24 14:08:12
【问题描述】:

假设一家公司正在构建一个全新的应用程序。该应用程序遵循 DDD 原则。 旧代码库有很多产品(或公司的另一个“实体”)他们想要转换为新代码库。

这项工作应该如何完成?通常,使用例如 ssis 导入会更快、更容易——从一个数据库传输到另一个数据库。但这里的主要问题是跳过了很多 BusinessRules(在 DomainLayer 中的托管代码中实现)...... 如果开发人员说:“我已经控制住了。规则被复制为 sql 脚本……”

我们是否应该将托管代码库导入 SQL Server(至少在 .NET 和 MS SQL Server 中这是可能的)? 或者我们应该在托管代码中创建一个导入脚本,以便在将实体保存在数据库中时遍历域中的所有层?...(可能需要很多小时..)

你有什么想法?

【问题讨论】:

    标签: java .net import domain-driven-design


    【解决方案1】:

    我建议您在 .NET 中编写一个小导入应用程序,您可以在其中应用业务规则。因为这个任务(至少我想是这样)只会运行一次(或两次;))速度并不那么重要——为了加快它的速度——如果可能的话,把它设计成多线程的。

    不,这还不够好 - 如果有人说“我已经控制住了” - 这是一个嗡嗡声,我所有的警钟都会响起。一些细节总是会被遗忘,这主要是一场小灾难;)

    【讨论】:

    • tnx 的答案。我同意你的观点,但我看到人们/开发人员开始将 ssis 用于这些目的,而不是考虑所有复杂的业务规则......(导入转换项目开始时有时不存在的规则,但稍后添加在并行项目中..)
    • 我目前正在从事这样一个项目 - SSIS 导入和导入应用程序,因为从旧数据库到新数据库的翻译逻辑非常复杂,无法将其放入 SSIS 任务中(不幸)
    【解决方案2】:

    这两个选项并不相互排斥。 SQL Server 可以使用 Web 服务。您可以将导入服务创建为 Web 服务,然后从 SQL Server 调用它。当然,您甚至可以使用 SSIS 做到这一点。

    【讨论】:

      【解决方案3】:

      与该联盟中的许多其他问题一样(这是解决这个问题和那个问题的最佳方法,选择哪种语言,ORM 与否)在不了解旧应用程序和新应用程序的详细信息的情况下很难回答,数据模型(关系型和 OO).... 或者简单:仔细分析您的任务,然后选择您的工具。

      • 新应用会构建在新的 relational 层之上,并带有它自己的新域层,还是会保留上述域层?
      • 我们在谈论什么样的业务规则和多少个业务规则?
      • ...?

      在不了解这一切的情况下,我想说:新应用程序必须遵循旧的业务规则,并且必须为该领域设计新的关系层。开发人员应该了解业务和域规则,并且(sql-)脚本应该是一种可行的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多