如果您同时设置了搜索api(使用Elasticsearch)和存储库层(Spring JDBC),那么无论查询多么简单,您都会使用搜索API吗?它比存储库版本更灵活,但速度稍慢。例如:您是否会使用搜索API来获取某些创作者名称的所有汽车?
答案 0 :(得分:2)
好像你有一个存储库和ES坐在彼此旁边,有一些重叠的查询功能
存储库的优势(如果我们谈论的是DDD存储库)是为客户端提供一个接口,而不必知道你在后端实际执行查询的方式。
说一个repo实现:
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.