如果您同时设置了搜索 api(使用 Elasticsearch)和存储库层(Spring JDBC),无论查询多么微不足道,您是否总是使用搜索 api?它比存储库版本灵活得多,但速度有点慢。例如:您会使用搜索 api 以某些创建者的名字获取所有汽车吗?
问问题
158 次
1 回答
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 和您的主数据存储一起使用)在您的存储库实现中。
顺便说一句:让多个不同的数据存储为您的查询提供服务的概念被称为:Polyglot Persistance。
于 2013-04-01T15:54:34.470 回答