Ho alcuni campi personalizzati definiti dall'utente che corrispondono a un ticket (un ticket è un'entità che ha campi soggetto, stato e personalizzati). Devo cercare i biglietti in base ai valori dei campi personalizzati. Un campo può essere un decimale, una stringa, una data o un booleano.
Esempio - Un ticket ha campi soggetto, stato e personalizzati: nome del prodotto, descrizione del prodotto, ID del prodotto, prezzo del prodotto, categoria del prodotto.
Caso di utilizzo - Abbiamo bisogno di cercare su campi personalizzati. I casi sono menzionati di seguito.
- Caso 1: il normale è uguale alla ricerca dei valori. (ricerca basata su prodotto
- Caso 2 - Ricerca intervallo su decimale, tipi di data. (cercando prodotto il cui prezzo > 2000)
- Caso 3: contiene la ricerca di stringhe (ricerca di prodotti la cui descrizione contiene cibo)
- Caso 4: un campo può anche essere un elenco a selezione multipla (ad esempio casella di selezione a più selezioni) (un prodotto può ricadere su più categorie)
- Caso 5: possiamo eliminare o aggiungere un nuovo campo personalizzato nel sistema.
Possibile soluzione - Tabella separata per campo personalizzato che ha una colonna separata per ogni campo personalizzato.
Contro : poiché non è pre definito quali campi sono idonei per la ricerca, devo aggiungere un indice su ogni colonna che rallenta l'inserimento. Contiene la ricerca (ilike search) è molto lento.
Attualmente sto usando postgres ma sono aperto a soluzioni che coinvolgono database nosql e serach elastico.