作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:
假设该域包含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)
最佳答案
我认为您对持续性无知是明智的。但是,在只能查询ES的情况下,利用RDBMS + ElasticSearch进行简单的Search操作会浪费资源。
CQRS方法将使您可以区分以下情况:需要针对SQL数据库发起事务以编写内容(命令)的情况和仅读取ElasticSearch(查询)的情况。
关于elasticsearch - 如何将Spring数据 Elasticsearch 与DDD原理集成在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51629584/
我是一名优秀的程序员,十分优秀!