2013-01-31 45 views
7

我试图围绕整个CQRS/ES的想法,并考虑编写一个概念证明和如何在我们当前的应用程序中实现它的技术规范。CQRS/ES:批量操作/进口

有问题的操作(就如何将它们映射到CQRS/ES而言)是通过文件导入批量更新复杂的文章数据 - 数据文件中的单行扩展到文章组,文章,标题,单元和物业,将买方分类链接到供应商分类以及导出部分或整个分类的文件的批量加载。

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

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

回答

2

与CQRS/ES的小问题。一个非常幼稚的做法如下:

  • 找到你的工作单位,
  • 制定这些单位递增标识方案,
  • 改造原有的投入工作,这些单位(不太可能失败&快)并沿途分配身份,
  • 现在将每个工作单元作为交易进行处理,将每个交易的最后处理单位的工作身份更新为一部分(或多个如果您打算并行处理)
  • 失败从最后一名职业球员恢复自动化的或者在操作员给予了绿灯之后,自己的工作单元就开始了。

是否有一个事件源或基于状态的模型落后于所有劣等国际海事组织。

+1

我同意这个问题。无论您如何设计模型,执行导入的方式都是要弄清楚您的命令是什么,为导入文件中的数据创建它们,然后通过它们的处理程序运行它们。无论是每行一条命令还是多条命令,都取决于您的模型和事务性命令,而不是相反。不要为导入编写模型,请在模型中编写导入。 – Dan