0

我正在使用CQRS开展我的第一个项目,有些事情对我来说并不是很清楚。CQRS - 读取端数据库的外键

假设我在我的模型中有一些客户,每个客户都有一个订单列表。

在我的阅读模型(由标准关系数据库支持)中,我将对所有客户的列表进行投影。此外,我会对所有订单列表进行预测。

在这第二个预测中,是否有一个外键与所有客户建立关键表?还是立即更好地进行非规范化处理,并在订单的表格中存储客户的所有相关数据?

回答

4

我认为这取决于您的要求。

一个学派的思想是对所有视图模型的数据进行非规范化处理,只要你有一个一个视图。在频谱的另一端,你可以保持一个高度规范化的数据库来支持你的观点。你也可以选择在两者之间的某个地方。在这些决策中,在速度,存储容量,易用性和可扩展性方面存在权衡。例如,如果您拥有数百个非常相似的视图模型,那么拥有更规范的数据模型可能更有意义。另一个例子可能是某个视图比其他视图产生更多流量的数量级 - 您可能希望比其他视图更优化这个特定视图。没有一个真正的万能解决方案。

这个疯狂的想法如何?都做;)看看你更喜欢与他们一段时间的工作后。关于CQRS的一个伟大的事情是你有自由做出这些决定。如果您将此与事件采购和重建视图的能力相结合,那么您可以稍后改变主意:)