Questa domanda riguarda il fare una scelta architettonica prima di approfondire i dettagli di sperimentazione e implementazione. Riguarda l'idoneità, in termini di scalabilità e prestazioni, di elasticsearch vs MongoDB, per uno scopo in qualche modo specifico.
Ipoteticamente entrambi archiviano oggetti dati con campi e valori e consentono di eseguire query su quel corpo di oggetti. Quindi presumibilmente filtrare sottoinsiemi di oggetti in base ai campi selezionati ad-hoc, è qualcosa che si adatta a entrambi.
La mia applicazione ruoterà attorno alla selezione di oggetti in base a criteri. Selezionerebbe gli oggetti filtrando simultaneamente per più di un singolo campo, in modo diverso, i suoi criteri di filtraggio delle query comprenderanno tipicamente tra 1 e 5 campi, forse più in alcuni casi. Considerando che i campi scelti come filtri sarebbero un sottoinsieme di una quantità molto maggiore di campi. Immagina circa 20 nomi di campi esistenti e ogni query è un tentativo di filtrare gli oggetti in base a pochi campi su quei 20 campi complessivi (può essere inferiore o superiore a 20 nomi di campi complessivi esistenti, ho appena usato questo numero per dimostrare il rapporto di campi ai campi utilizzati come filtri in ogni query discreta). Il filtro può essere basato sull'esistenza dei campi scelti, nonché sui valori dei campi, ad esempio filtrando gli oggetti che hanno il campo A e il loro campo B è compreso tra xe y,
La mia applicazione eseguirà continuamente questo tipo di filtraggio, mentre non ci sarebbe nulla o pochissima costante in termini di quali campi vengono utilizzati per il filtraggio in qualsiasi momento. Forse negli indici elasticsearch devono essere definiti, ma forse anche senza indici la velocità è alla pari con quella di MongoDB.
Per quanto riguarda i dati che entrano nel negozio, non ci sono dettagli speciali a riguardo .. Gli oggetti non sarebbero quasi mai cambiati dopo essere stati inseriti. Forse i vecchi oggetti dovrebbero essere eliminati, mi piacerebbe supporre che entrambi gli archivi di dati supportino la scadenza eliminando le cose internamente o da una domanda fatta dall'applicazione. (Meno frequentemente, anche gli oggetti che soddisfano una determinata query dovrebbero essere eliminati).
Cosa ne pensi? E hai sperimentato questo aspetto?
Sono interessato alle prestazioni e alla scalabilità di esso, di ciascuno dei due archivi di dati, per questo tipo di attività. Questo è il tipo di domanda di progettazione architettonica, e i dettagli delle opzioni specifiche del negozio o dei punti cardine della query che dovrebbero renderlo ben progettato sono i benvenuti come dimostrazione di un suggerimento ben ponderato.
Grazie!