我的应用程序遵循CQRS策略,将读取模型与写入模型分开。我有一个产品和与该产品相关的多个采购订单。
PurchaseOrder读取模型在Elasticsearch中,并附带产品名称。现在,如果我在写入模型中更改了产品名称,则需要在读取模型中相应地更新所有PurchaseOrder的productName字段(使用Elasticsearch的批量更新API)。
我的问题是:由于我有数百万个PurchaseOrders,这个productName sync是否会成为性能问题?或对建模此类同步有任何建议吗?
最佳答案
尽管我认为更改现有订单上的产品名称不是一个好主意(可能已经生成了发票,并且订单中的产品名称应与发票中的名称相匹配),但该问题仍然有待解决。
您可能希望PurchaseOrder
仅保留ID
的version
(也许还有Product
吗?),这样就可以避免进行如此大规模的更新。另一方面,此方法每次您要以其自己的名称转换产品ID时,都需要调用Product
聚合根。通过使用缓存,显然可以减轻这种读取的影响。
我想这真的取决于发生这两种情况的次数,然后我将优化发生次数最多的一种情况。
关于elasticsearch - Elasticsearch读取模型与写入模型同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61905910/