Livello dati Astrazione dal livello aziendale per la ricerca

1

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?

    
posta Renjith 15.03.2018 - 07:54
fonte

1 risposta

1

Bene, vorrei sostenere le prestazioni che avvantaggiano il cliente rispetto alla scelta della facilità di sviluppo (dopo tutto il cliente è colui che paga).

Se hai davvero queste due opzioni, allora vai con Cerca- > BL - > ElasticSearch (molto più veloce rispetto alla ricerca sql)

Suggerimento:

  1. Implementare un'interfaccia tra Bl e ES. questa interfaccia ti darà un po 'di astrazione.
  2. Implementa l'interfaccia in ES. dove implementerai metodi come search (params).
  3. Utilizza la classe astratta anziché l'interfaccia se necessario. dipende dal tuo caso. (Es. Considerare problemi di ereditarietà multipli di classi astratte, interfaccia ecc.)

Vantaggio:

  1. Se in un secondo momento decidi di cambiare ES in un altro meccanismo di ricerca, puoi semplicemente implementare di nuovo la stessa interfaccia e sei pronto per andare.
  2. La manutenzione è più semplice in quanto fornisce un certo livello di accoppiamento lento.

Non esitare a commentare se hai altre domande.

spero che aiuti

    
risposta data 16.03.2018 - 16:39
fonte

Leggi altre domande sui tag