如果您同时设置了搜索API(使用Elasticsearch)和存储库层(Spring JDBC),那么无论查询有多么微不足道,您都会使用搜索API吗?它比版本库更灵活,但速度稍慢。例如:您是否会使用搜索api按某些创作者的名字获取所有汽车?使用搜索服务器服务层vs数据库层来查找实体
1
A
回答
2
好像你有一个仓库和ES坐在旁边的海誓山盟一些重叠的查询功能
存储库的强度(如果我们谈论一个DDD库即是)是提供一个接口对于客户端而言,不必知道您是如何在后端实际执行查询的。
说回购实现: getById(id)
getByName(name)
getByExample(JsonExample)
getByFullText(text)
我会完全恢复健康的使用您的主数据存储来实现getById
(也许getByName
)。 (mysql,mongoDB,couchbase或任何你用来提供ES的东西)
同时getByFullText(text)
肯定会被ES和getByExample(JsonExample)
实现。
问题是,通过将实现置于存储库抽象的后面,应用程序的其余部分无法/不应该不在乎你如何实际实现它。
对于你来说,只要用自然的感觉(get all cars by some creators name
可以同时适用于ES和你的主要数据存储)如果你的路上有真正的(性能或其他)切换原因,它只是一个一行代码可能在您的存储库实现中。
BTW:具有多个不同的数据存储服务您的查询的概念被称为:Polyglot Persistance.
相关问题
- 1. 管理层vs服务层
- 2. jalo层vs服务层
- 3. 多服务层和数据库事务
- 4. WCF Web服务和从数据库检索 - 使用现有的asp.net服务层?
- 5. 具有n层业务服务器的N层Web服务器
- 6. 存储库层VS Web层VS服务器端VS Alfresco的客户端
- 7. 服务层和Web API服务层?
- 8. Windows服务作为分层体系结构中的服务层
- 9. 表示层逻辑和服务/实体
- 10. 实体框架服务层更新POCO
- 11. iPhone应用程序,数据层和数据库服务器
- 12. DNS服务器应用层
- 13. MVVM和分层,实现服务层
- 14. 服务和服务层
- 15. Windows服务与服务层
- 16. 定价层vs服务层与实例大小
- 17. 服务层在实践中
- 18. 服务层=应用层= GRASP控制层
- 19. servlet来搜索服务器
- 20. 业务层与服务层的服务引用
- 21. 服务层和存储库
- 22. Prodinner服务层存储库
- 23. 从服务层
- 24. Python服务层
- 25. 使用WebApi的服务层
- 26. 使用服务层或IValidatableObject
- 27. Asp.Net MVC服务层 - 附加服务vs通过参数
- 28. 三层体系结构与三层服务器体系结构
- 29. 3层服务器体系结构Drupal
- 30. 将数据库方法从服务层注入到存储层
啊,对这样你就不会创建一个服务层“搜索服务”,而是将其移动存储库抽象的背后? – LuckyLuke
但是,如果是这种情况,我有一些如何更改我的代码的问题。现在我有一些类,如SearchContext和SearchResponse,我是否必须更改这些名称以保持搜索服务器的抽象?或者我还可以返回这些吗?基本上,保留一些搜索类/术语是不好的,即使它是通过存储库处理的。 – LuckyLuke
对于给定的示例:'通过创建者名称获取所有汽车',我确实在存储库抽象背后有搜索实现。这并不是说没有用于单独的搜索服务。 (例如:对于真正的搜索特定的东西,比如打字/提示,突出显示,刻面等)。因此,请不要把我的图片作为从不想单独搜索的服务。这取决于什么是有道理的。 –