Java 在DDD之后从应用程序批量导出时,最佳做法是什么

Java 在DDD之后从应用程序批量导出时,最佳做法是什么,java,.net,export,domain-driven-design,Java,.net,Export,Domain Driven Design,假设您有一个包含大量产品/客户/订单的数据库,而代码库(java/c#)包含所有业务逻辑。在夜间,需要几个批次将数据导出到平面文件,然后将其ftp到专有系统 我们应该如何将数据库写入平面文件?最佳做法是什么 一些想法: 我们可以创建一个存储过程并使用f.exssis来获取数据?如果我们有一个“批处理输出数据库表”,也许我们可以这样做,但如果我们必须在写入文件之前执行逻辑,就不能这样做 我们可以使用与域其余部分相同的存储库/业务逻辑来执行托管代码中的所有逻辑?(与存储过程解决方案相比,这可能是一

假设您有一个包含大量产品/客户/订单的数据库,而代码库(java/c#)包含所有业务逻辑。在夜间,需要几个批次将数据导出到平面文件,然后将其ftp到专有系统

我们应该如何将数据库写入平面文件?最佳做法是什么

一些想法:

  • 我们可以创建一个存储过程并使用f.exssis来获取数据?如果我们有一个“批处理输出数据库表”,也许我们可以这样做,但如果我们必须在写入文件之前执行逻辑,就不能这样做

  • 我们可以使用与域其余部分相同的存储库/业务逻辑来执行托管代码中的所有逻辑?(与存储过程解决方案相比,这可能是一个缓慢的过程)

  • 如果域服务的唯一接口是web服务(每个请求可能需要“很长”的时间),那么“最佳实践”会改变吗


我个人更喜欢使用普通(托管)代码来实现提要,而不是存储过程,主要原因是: 1) 与其他系统的接口通常更容易(即使它只是共享驱动器) 2) 如果出现问题,很容易记录所需的所有内容并进行调试 3) 您可以重用用于正常业务逻辑的相同代码(即使您只是引用相同的项目,这也是有益的) 4) 通常,您需要使用来自其他系统的一些信息来丰富数据,而这在托管代码中也更容易做到。 5) 测试托管代码、进行所有单元测试、自动构建等要容易得多

我不知道为什么它需要比在存储过程中慢那么多。你只需要编写一个好的存储过程来提取你需要的数据,而C#/java应用程序将完成所有的转换、充实等

编辑:回答评论:
我认为不可能说您是否应该重用现有的存储过程、调整它们或创建新的存储过程。我认为这是性能的影响,或者所需的更改不会比我尝试使用一组过程太大,以避免逻辑重复。但是如果差异很大,那么维护额外过程的成本可能会增加我会比更改和发布现有的存储库代码低。

使用您已经获得的存储库代码。做一些性能测试,看看它是否满足性能要求。如果存在重大性能问题,可能会导致数据库IO过多,那么请执行存储过程或实现批量导出存储库。

tnx获得答案。您会吗d您建议使用仅为给定导出创建的服务/存储库/存储过程方法,或使用域中已存在的方法?-如果使用域方法,有时必须对其进行编辑,以提供可能不属于域本身的良好性能更改