Supponiamo di avere un database per la memorizzazione di ordini per più negozi e ho tabelle seguenti:
- Utente - rappresenta l'utente
- Store - rappresenta il negozio
- UserStore - molti a molti tra Utente e Negozio. L'utente può collaborare con più negozi.
- Prodotto -presenta prodotti disponibili
- Ordina uno a molti tra Utente e Ordine e Prodotto e Ordine.
Le tabelle sopra sono solo degli esempi che ho cercato di trovare qualcosa di complicato :) Ora voglio implementare le seguenti funzionalità:
- Voglio cercare tutti i prodotti ordinati da una persona specifica per il negozio X
- Voglio cercare prodotti utilizzando tutti gli attributi di ciascuna entità collegata al prodotto.
- Voglio essere avvisato quando un nuovo prodotto verrà ordinato dall'utente X per il negozio Y - questo non è collegato alla ricerca è più come se l'utente preparasse la sua query e viene avvisato quando appaiono nuovi dati per la sua query . Posso implementarlo in diversi modi, ma mi chiedo se abbia senso utilizzare uno qualsiasi dei motori di ricerca disponibili sul mercato per essere avvisati della comparsa di nuovi dati? Come fai questo personale?
Sulla base dei requisiti di cui sopra ho bisogno di prendere decisioni su come dovrebbe essere costruito il mio meccanismo di ricerca. Vedo alcune opzioni:
- Crea query sul database. Questo è abbastanza semplice che ho sempre usato in questo modo, ma quando guardo al secondo punto che un utente può cercare prodotti fornire criteri di ricerca dall'intero grafico degli oggetti connessi con il prodotto sono un po 'spaventato dall'implementazione di tale soluzione e forse è meglio usare la seconda opzione.
- Utilizza il motore di ricerca (Azue Search, ElasticSearch) per inserire il struttura del database nella cache e implementazione della query sarebbe meno dispendioso dal punto di vista dello sviluppo (forse? Ho appena iniziato a studiare sui motori di ricerca e le loro caratteristiche). Inoltre tale motore di ricerca fornisce supporto per meccanismo di punteggio e multilingua.
Questa è una domanda più teorica: abbiamo alcuni requisiti e dovremmo trovare l'opzione migliore per implementarli.