Поиск данных с учетом большого числа критериев

Вот сразу вспомнилось, примерно похоже на мою задачу:
Яндекс.Маркет подбор мобилок

Взгляните на панель справа, дофига всяких критериев выбрать можно и работает очень быстро. Как делаются подобные штуки? Какие подходы используются, устройство базы данных? В идеале нужен некий универсальный механизм, который мог бы искать по любому произвольному очень большому набору критериев, по огромному количеству объектов (>100 000) с разным набором полей, делать это максимально быстро, по возможности обходясь без over 9000 серверов.
  • Вопрос задан
  • 3187 просмотров
Пригласить эксперта
Ответы на вопрос 4
KLUBS
@KLUBS
Посмотрите в сторону Entity-attribute-value model.

Также хороший ответ на StackOverflow в теме Product table, many kinds of product, each product has many parameters
Ответ написан
asm0dey
@asm0dey
В Java это очень удобно помогает делать Spring Roo с использованием finder'ов. Хотя, вероятно, он не является идеальным инструментом для решения данной задачи.

А в какой среде эту задачу решаете Вы?

Ставлю себе RSS на эту тему — мне тоже очень интересно.
Ответ написан
@meettya
«Будет база товаров (несколько сотен тысяч и расти), каждый товар может содержать произвольный набор данных, нужно делать выборку на запросы с произвольным набором параметров»
ИМХО — жесткая типизация параметров в отдельные справочники даст возможность быстрого выбора и сравнения, но расплачиваться будете скоростью заполнения справочника.
А по архитектуре — многоуровневый кеш и хорошое продумываение структуры базы. Если не боитесь — noSQL базы с map/reduce или колоночные БД. Будет зоопарк, зато (по идее) быстрее работать. Или хранить свойства в классической реляционной и хитрая материализация на чем-то типа Redis — поиск по параметрам — классический хеш, если я правильно понимаю задачу.
Ответ написан
@xdenser
Нормально задача решается на RDBMS. Просто нужно описывать не модель хранения продуктов, а модель модели хранения продуктов. Т.е. набор метаданных и автоматического создания скриптов на основе их.
Все равно продукты (точнее новые типы продуктов) добавляться у вас будут реже, чем искаться ( я так понимаю). Так что можно время от времени подстраивать внутреннюю модель автоматом.
В таких системах, кстати, не поиск самое сложное и главное. Там все оптимизируется понятными методами.
Намного сложнее саму базу содержать в актуальном и полном виде. Как этот вопрос решается?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы