«Будет база товаров (несколько сотен тысяч и расти), каждый товар может содержать произвольный набор данных, нужно делать выборку на запросы с произвольным набором параметров»
ИМХО — жесткая типизация параметров в отдельные справочники даст возможность быстрого выбора и сравнения, но расплачиваться будете скоростью заполнения справочника.
А по архитектуре — многоуровневый кеш и хорошое продумываение структуры базы. Если не боитесь — noSQL базы с map/reduce или колоночные БД. Будет зоопарк, зато (по идее) быстрее работать. Или хранить свойства в классической реляционной и хитрая материализация на чем-то типа Redis — поиск по параметрам — классический хеш, если я правильно понимаю задачу.