Найкращий спосіб зробити це дійсно залежить від якості та характеру ваших даних та запитів. Для початківців 180 Мб даних в одній таблиці для продуктів не є проблемою, незалежно від того, яким чином ви її дивитесь. І 30-ти запитів на день - це ще менше проблеми. За допомогою правильно налаштованої бази даних будь-який старий робочий стіл може впоратися з цим навантаженням.
Інші вже вказали на два ваші основні параметри - MySQL або базу даних noSQL.
Якщо у вас є певна кількість атрибутів, які існують для кожного окремого товару (наприклад, виробник, ціна, номер складу тощо), то найкращим варіантом є створення стовпців для цих атрибутів і перетворення ваших пар ключів / значень у формат плоскої таблиці, з ідентифікатором продукту в якості основного ключа для цієї таблиці. Це буде дуже добре, навіть якщо деякі стовпці використовуються лише половиною рядків, оскільки для більшості продуктів вам потрібно буде виконати лише 1 запит, щоб отримати всі їх атрибути. Враховуючи, що це дані про продукти, я б здогадався, що цілком ймовірно, що це структура ваших даних.
Якщо атрибути сильно відрізняються за наявністю та типом даних, то вам може бути краще використовувати базу даних noSQL, яка обробляє цей сценарій більш ефективно, ніж традиційні бази даних SQL.
Щодо продуктивності: я раніше працював у компанії з електронної комерції, де тривалий час веб-сайт забезпечувався даними з сервера MySQL. Цей сервер мав 2 ГБ оперативної пам’яті, загальна база даних становила бл. Розміром 5 Гб і під максимальним завантаженням сервер обробляв кілька тисяч запитів в секунду. Так, ми провели багато оптимізації запитів, але це, безумовно, можливо.