Il modo migliore per farlo dipende in realtà dalla qualità e dalla natura dei dati e delle query. Per cominciare, 180 MB di dati in una singola tabella per i prodotti non sono un problema, a prescindere dal modo in cui li guardi. E 30.000 query al giorno sono ancora meno un problema. Con un database correttamente configurato, qualsiasi vecchio desktop può gestire questo carico.
Altri hanno già sottolineato le tue due principali opzioni, MySQL o un database noSQL.
Se hai un certo numero di attributi esistenti per ogni singolo prodotto (come produttore, prezzo, numero di magazzino, ecc., L'opzione migliore è quella di avere colonne per questi attributi e convertire le coppie chiave / valore in un formato di tabella piatta, con un ID prodotto come chiave primaria per quella tabella. Funzionerà molto bene anche se alcune colonne sono utilizzate solo da metà delle righe, poiché per la maggior parte dei prodotti sarà necessario eseguire solo 1 query per recuperare tutti i loro attributi. questi sono dati sui prodotti, immagino che sia abbastanza probabile che questa sia la struttura dei tuoi dati.
Se gli attributi variano ampiamente in presenza e tipo di dati, allora potresti essere meglio usando un database noSQL, che gestisce questo scenario in modo più efficiente rispetto ai tradizionali database SQL.
Per quanto riguarda le prestazioni: in precedenza ho lavorato per un'azienda di e-commerce, dove per lungo tempo al sito Web sono stati forniti dati da un server MySQL. Questo server aveva 2 GB di RAM, il database in totale era di ca. 5 GB di dimensioni e sotto carico il server ha gestito diverse migliaia di query al secondo. Sì, abbiamo fatto molta ottimizzazione delle query, ma questo è sicuramente fattibile.