我们有一个微服务,它有一个域模型,并且有一个针对这个领域的分析服务,它有它自己的查询模型。域模型和查询模型存储在单独的持久化中。
目前,我们的查询模型使用了来自域模型的属性子集。但是,今后我们需要从域模型添加额外的属性到查询模型,在这种情况下,是否有任何建议可以用于使用域模型中可用的内容填充查询模型的'delta‘部分?
顺便说一下,这似乎也是CQRS的一个弱点--对查询模型的任何增强都需要某种类型的数据重新加载来填充查询模型的增强部分。还是我们做错什么了?
发布于 2018-01-25 07:36:25
假设:您不使用事件源。
您可以使用一个一次性导入脚本,从写模型中获取所需的数据并填充读取模型。此脚本停留在基础结构层,在重新初始化完成后可以丢弃它。如果您能够提供一个停机时间,那么您就可以下载读取模型(停止将请求定向到它),迁移模式和代码,运行导入脚本,然后打开它。
如果您负担不起停机时间,则必须使用部署新的读取模型,但在脚本完成导入之前不能使用它。然后,使用脚本和旧读取模型之间的某种同步,将通信量重定向到新的读取模型,您可以丢弃旧的读取模型。
https://softwareengineering.stackexchange.com/questions/364579
复制相似问题