Import CQRS/ES:批量操作/导入

Import CQRS/ES:批量操作/导入,import,cqrs,event-sourcing,Import,Cqrs,Event Sourcing,我正试图围绕整个CQRS/ES想法进行思考,并考虑编写一份关于如何在当前应用程序中实现它的概念证明和技术规范 有问题的操作(就如何将它们映射到CQR/E而言)是通过文件导入批量更新复杂的文章数据——数据文件中的单行扩展到文章组、文章、标题、单位和属性,批量加载将买方产品组合链接到供应商产品组合的文件,并导出部分或全部产品组合 我在某个地方读到过(可能是DDDCQRS Google Group)对文章import BC(它读取Excel文件或其他网格文件)建模的最佳方法是将一行导入的数据作为聚合,

我正试图围绕整个CQRS/ES想法进行思考,并考虑编写一份关于如何在当前应用程序中实现它的概念证明和技术规范

有问题的操作(就如何将它们映射到CQR/E而言)是通过文件导入批量更新复杂的文章数据——数据文件中的单行扩展到文章组、文章、标题、单位和属性,批量加载将买方产品组合链接到供应商产品组合的文件,并导出部分或全部产品组合

我在某个地方读到过(可能是DDDCQRS Google Group)对文章import BC(它读取Excel文件或其他网格文件)建模的最佳方法是将一行导入的数据作为聚合,将整个导入作为聚合根。这样,在解析文件之后,我所要做的就是创建一个导入聚合,并为每一行将该行添加到导入中。这将在BC的事件存储中存储事件,并发布文章管理BC将订阅的事件。这有意义吗


在当前系统中,导入在单个长期运行的事务中运行。根据导入的数据量和给定用户已经存在的数据量(因为数据与以前导入的文件和当前数据进行比较),长时间运行应被读取为5到40分钟。当操作中途失败时,当前将回滚整个操作。这在CQRS/ES中是如何工作的?

CQRS/ES的小任务。一种非常幼稚的方法如下:

  • 找到你的工作单位
  • 为这些单位设计一个升序识别方案
  • 将原始输入转换为这些工作单元(不太可能失败和快速),并在过程中分配标识
  • 现在将每个工作单元作为事务处理,更新最后处理的工作单元标识,作为每个事务的一部分(如果您打算并行处理,则更新多个)
  • 出现故障时,从最后处理的工作单元开始自动或在ops发出绿灯后恢复

无论是事件源模型还是基于状态的模型,我都同意这个答案。无论您如何设计模型,导入的方法都是找出您的命令,为导入文件中的数据创建命令,然后通过它们的处理程序运行它们。它是每行一个命令,还是多个命令,取决于您的模型和事务命令,而不是相反。不要为导入编写模型,而是围绕模型编写导入。