【问题标题】:Elasticsearch read model sync with write modelElasticsearch 读取模型与写入模型同步
【发布时间】:2020-05-22 05:40:44
【问题描述】:

我的应用程序遵循 CQRS 策略将读取模型与写入模型分开。我有一个产品和多个与该产品相关的采购订单。

PurchaseOrder 读取模型位于 Elasticsearch 中,并附有产品名称。现在,如果我在写入模型中更改产品名称,那么我需要在读取模型中相应地更新所有 PurchaseOrder 的 productName 字段(使用 Elasticsearch 的批量更新 API)。

我的问题是:由于我有数百万个 PurchaseOrders,这个 productName 同步是否会成为性能问题?或者对建模这种同步有什么建议?

【问题讨论】:

    标签: elasticsearch synchronization cqrs


    【解决方案1】:

    虽然我不认为在现有订单上更改产品名称是一个好主意(发票可能已经生成并且订单中的产品名称应该与发票中的名称匹配),但这个问题仍然有道理。

    您可能希望您的PurchaseOrder 只保留ProductID(可能还有version?),这样您就可以避免这样的大规模更新。另一方面,这种方法需要在每次您想以自己的名称翻译产品 ID 时调用 Product 聚合根。使用缓存显然可以减轻这种读取的影响。

    我想这真的取决于这两种情况发生的次数,然后我会优化最常发生的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 2014-06-11
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多