Najlepszy sposób na zrobienie tego naprawdę zależy od jakości i charakteru twoich danych i zapytań. Na początek 180 MB danych w jednej tabeli dla produktów nie stanowi problemu, bez względu na to, jak na to spojrzysz. A 30 000 zapytań dziennie to jeszcze mniejszy problem. Przy odpowiednio skonfigurowanej bazie danych każdy stary pulpit może obsłużyć to obciążenie.
Inni wskazali już dwie główne opcje, MySQL lub bazę danych noSQL.
Jeśli masz pewną liczbę atrybutów, które istnieją dla każdego produktu (takie jak producent, cena, numer magazynu itp.), Najlepszą opcją jest posiadanie kolumn dla tych atrybutów i konwersja par klucz / wartość na format płaskiej tabeli, z identyfikatorem produktu jako kluczem podstawowym dla tej tabeli. Będzie to działało bardzo dobrze, nawet jeśli niektóre kolumny są używane tylko przez połowę wierszy, ponieważ w przypadku większości produktów wystarczy uruchomić 1 zapytanie, aby pobrać wszystkie ich atrybuty. to są dane o produktach, sądzę, że jest to całkiem prawdopodobne, że taka jest struktura twoich danych.
Jeśli atrybuty różnią się znacznie w zależności od obecności i typu danych, być może lepiej będzie użyć bazy danych noSQL, która obsługuje ten scenariusz bardziej wydajnie niż tradycyjne bazy danych SQL.
Jeśli chodzi o wydajność: wcześniej pracowałem w firmie e-commerce, w której przez długi czas strona była zaopatrywana w dane z serwera MySQL. Ten serwer miał 2 GB pamięci RAM, w sumie baza danych wynosiła ok. Rozmiar 5 GB i przy maksymalnym obciążeniu serwer obsługiwał kilka tysięcy zapytań na sekundę. Tak, przeprowadziliśmy wiele optymalizacji zapytań, ale jest to zdecydowanie wykonalne.