Riguarda la progettazione di una API di ricerca. Ora abbiamo 3 livelli di architettura che utilizzano Spring MVC. Tutte le comunicazioni sono tramite REST API.
UI <-> Business <-> Data(sql).
Ora per implementare una ricerca più rapida, stiamo pianificando di indicizzare i dati da sql. Quindi qualsiasi scrittura su livello dati verrà indicizzata anche in es.
BL (writes)-> DL(writes)->ElasticSearch
Ora per eventuali chiamate di ricerca, sto pianificando di effettuare direttamente la chiamata BL ES.
Search-> BL -> ElasticSearch
(molto più veloce rispetto alla ricerca sql)
ES sarà strettamente associato a BL qui. Ma stiamo davvero astringendo l'accesso ai dati qui se chiamiamo direttamente ES da BL.
Dovremmo chiamare Search-> BL-> DL-> ES
? In questo caso, perderemo la maggior parte dei vantaggi di ES poiché è necessario effettuare un'altra chiamata n / w.
Qual è l'approccio ideale?