1

如果您同时设置了搜索 api(使用 Elasticsearch)和存储库层(Spring JDBC),无论查询多么微不足道,您是否总是使用搜索 api?它比存储库版本灵活得多,但速度有点慢。例如:您会使用搜索 api 以某些创建者的名字获取所有汽车吗?

4

1 回答 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 回答