A melhor maneira de fazer isso depende da qualidade e natureza de seus dados e consultas. Para começar, 180 MB de dados em uma única tabela de produtos não é um problema, seja qual for a maneira como você os examina. E 30 mil consultas por dia é ainda menos problemático. Com um banco de dados configurado corretamente, qualquer área de trabalho antiga pode manipular essa carga.
Outros já apontaram suas duas principais opções, o MySQL ou um banco de dados noSQL.
Se você tiver um determinado número de atributos que existem para cada produto (como fabricante, preço, número de depósito, etc., sua melhor opção é ter colunas para esses atributos e converter seus pares de chave / valor em um plano formato de tabela, com um ID de produto como a chave primária para essa tabela.Isso funcionará muito bem, mesmo que algumas colunas sejam usadas apenas pela metade das linhas, pois para a maioria dos produtos você precisará executar apenas uma consulta para recuperar todos os seus atributos Considerando que se trata de dados sobre produtos, eu acho que é bastante provável que essa seja a estrutura dos seus dados.
Se os atributos variarem bastante na presença e no tipo de dados, talvez seja melhor usar um banco de dados noSQL, que lida com esse cenário de maneira mais eficiente do que os bancos de dados SQL tradicionais.
Em relação ao desempenho: trabalhei anteriormente para uma empresa de comércio eletrônico, onde por muito tempo o site recebeu dados de um servidor MySQL. Este servidor tinha 2GB de RAM, o banco de dados no total foi de aprox. 5GB de tamanho e sob carga máxima o servidor lidou com milhares de consultas por segundo. Sim, fizemos muita otimização de consulta, mas isso é definitivamente factível.