gpt4 book ai didi

elasticsearch - 如何将Spring数据 Elasticsearch 与DDD原理集成在一起?

转载 作者:行者123 更新时间:2023-12-03 01:37:01 25 4
gpt4 key购买 nike

问题:

假设该域包含3个聚合,并且针对Web应用程序执行了给定查询字符串的搜索操作。查询字符串必须用于搜索每个聚合中的所有字段,并向用户返回3组每个聚合作为结果查询。该Web应用程序具有两个数据存储:RDBMS和Elastic Search。我们如何将RDBMS + ES基础架构集成到域层?

建议的解决方案:

我能想到的最好的方法是通过将RDBMS + ES基础结构实现隐藏在每个域存储库的后面来维护域层的持久性无知。这是我提出的伪代码格式的解决方案:

AggregateRepository
- jpaAggregateRepository
- elasticAggregateRepository

@Transactional
+ save(Aggregate) {
Denormalize Aggregate to AggregateDocument (because one aggregate can span many tables)
Persist Aggregate to jpaAggregateRepository
Persist AggregateDocument to elasticAggregateRepository
}

+ find() {
Extract PKs from elasticAggregateRepository.find()
return jpaAggregateRepository(PKs)
}

这样,我成功地阻止了任何基础架构逻辑污染我的域层。为了最终实现用例,我可以在应用程序层中执行以下操作:
aggregateOneRepository.find(term)
aggregateTwoRepository.find(term)
aggregateThreeRepository.find(term)

并可能将这三组聚合合并到一个DTO中,以供客户端使用。

该解决方案是否肮脏?如果是这样,请提出更好的解决方案。

最佳答案

我认为您对持续性无知是明智的。但是,在只能查询ES的情况下,利用RDBMS + ElasticSearch进行简单的Search操作会浪费资源。

CQRS方法将使您可以区分以下情况:需要针对SQL数据库发起事务以编写内容(命令)的情况和仅读取ElasticSearch(查询)的情况。

关于elasticsearch - 如何将Spring数据 Elasticsearch 与DDD原理集成在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51629584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com