CQRS/ES:批量操作/进口

Eri*_*erk 7 import cqrs event-sourcing

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

有问题的操作(就如何将它们映射到CQRS/ES而言)是通过文件导入批量更新复杂的文章数据 - 数据文件中的单行扩展到文章组,文章,标题,单位和属性,批量 - 加载将买方分类与供应商分类相关联并导出部分或整个分类的文件.

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

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

Yve*_*out 3

与 CQRS/ES 没什么关系。一个非常幼稚的方法如下:

  • 找到你的工作单位,
  • 为这些单位设计一个升序识别方案,
  • 将原始输入转换为这些工作单元(失败的可能性较小且速度快)并一路分配身份,
  • 现在将每个工作单元作为一个事务处理,更新最后处理的工作单元身份作为每个事务的一部分(如果您打算并行处理,则更新多个),
  • 发生故障时,从最后处理的工作单元开始恢复,可以自动恢复,也可以在操作部门批准后恢复。

在我看来,这一切背后是否存在事件源模型或基于状态的模型都是较差的。