Penso che i risultati della ricerca possano migliorare notevolmente attraverso una serie di tecniche o approcci di progettazione di database che miglioreranno le prestazioni nel tipico RDBMS. Suggerisco di esaminare e possibilmente prototipare i seguenti miglioramenti per vedere se ti aiutano nei test delle prestazioni prima di impegnarti in una tecnologia di database completamente nuova che richiederà una grande quantità di nuovi apprendimenti ed esperienze da padroneggiare.
In sostanza, si vuole evitare la mentalità di un "Magic Bullet". C'è un equivoco che NoSQL può in qualche modo risolvere magicamente tutti i nostri problemi e problemi di prestazioni con RDBMS e che potrebbe essere vero a volte, ma dovresti provare a migliorare prima la progettazione del tuo database.
Identifica i tuoi requisiti non funzionali
Identifica in modo specifico i tuoi requisiti non funzionali accettabili per le prestazioni. Determina il tempo di attesa medio massimo della query e utilizzalo come obiettivo. Se riesci a modificare la progettazione del tuo database per ottenere ciò, non devi rearchitect il tuo software in una soluzione NonSQL.
Evita colonne binarie
Sembra che con la tabella Image
sia presente un supporto di tipo binario memorizzato nelle tabelle del database. Sebbene questo dipenda in gran parte dal fatto che il database scelto implementi le colonne binarie, è generalmente accettato che le colonne binarie possano danneggiare le prestazioni delle tue query. Le colonne binarie generalmente invalidano i vantaggi che un indice su una colonna della tabella può fornire. Se non mi credi, unisciti alla tabella Image
ed esegui un piano di spiegazioni e nota come probabilmente non viene utilizzato l'indice.
Utilizza una rete di Content Delivery
Invece di memorizzare immagini e contenuti multimediali nei record del database, memorizzare un URL che un'applicazione può utilizzare per recuperare quell'immagine, magari in un browser. Tale URL può puntare a un'immagine unica che viene archiviata e gestita in una rete di Content Delivery. Esistono numerosi servizi cloud in grado di fornire questo o è possibile creare il proprio con un numero di strumenti. Ciò dovrebbe rendere tutti gli aspetti della tua applicazione molto più efficienti.
Valuta gli indici della tabella
Assicurati che se non stai usando gli indici li costruisci per le colonne su cui generalmente filtri o ti unisci contro. Per essere onesti, 4 tavoli non sono un gran numero di join per un tavolo, quindi se segui queste linee guida dovresti vedere almeno un modesto miglioramento delle prestazioni.
Se segui queste linee guida e non riesci ancora a raggiungere i tuoi requisiti di performance, forse puoi valutare varie soluzioni NoSQL e cercare funzionalità che potrebbero aiutarti.