За последние 24 часа нас посетил 16561 программист и 1594 робота. Сейчас ищут 927 программистов ...

Каталог товаров с фильтрами по характеристикам товара

Тема в разделе "PHP и базы данных", создана пользователем jfinister, 1 сен 2015.

  1. jfinister

    jfinister Новичок

    С нами с:
    1 сен 2015
    Сообщения:
    3
    Симпатии:
    0
    Стоит вопрос про выбор базы данных для большого каталога товаров: 50 млн. товаров; 30 000 категорий. В каждой категории 3-15 фильтров по характеристикам товара.

    Особенность каталога:
    - многоязычность
    - каждый товар привязан к определенной GEO зоне (выделенной на карте) и показывается только если клиент находиться в этой зоне
    - динамическое ценообразование от различных каналов и факторов

    Нужно быстродействие, удобство и отказоустойчивость.

    Что посоветуете, какую базу данных выбрать? Вероятно какую-то связку баз данных? Как бы Вы для себя сделали такой проект?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    быстродействие зависит не только от выбранной БД, но и от других факторов ;)
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    MySQL подойдёт, главное схему и настройки правильно сделать.
    sphinx для поиска, ещё можно протестировать Elasticsearch
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Параметрический поиск - субд+кэш.
    Очень быстрый параметрический поиск - субд по таблице хешей.
    Самый быстрый параметрический поиск - поиск по ключам хешей лежащих в памяти (memcache/redis).

    Полнотекстовый поиск - любая любимая тулза для этого предназначенная.
    Всё решается на любой удобной вам субд. Для скорости работы, если критична нагрузка и время ответа, задействовать memcache и хранилище типа ключ-значение.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А можно пример? Google молчит как партизан.
     
  6. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Да всё просто: всякие признаки и свойства товара могут содержаться в десятке связанных таблиц. Генерируется одно значение на основе значений всех этих свойств и заносится в индексное поле. Как результат: когда производим типичный параметрический поиск, ищем только по одному полю без всяких многотабличных запросов и вложенных условий. Есть оверхед на перезапись хеша при изменении параметров товара, но он нивелируется выигрышем в скорости поиска.
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А как быть если в поиске используют "И", "ИЛИ" и поиск по части свойств? Думал хэши тут не помогут
     
  8. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    upd.
    Реализовать можно, но, имхо, это не совсем типичная задача искать по "ИЛИ" в товарном каталоге. И отличаться она в данном случае будет только тем, что искать будем по N хешам (в количестве вариантов). И даже в таком реализации поиска с большой долей вероятности можно предположить, что поиск по 2-10 хешам по индексу одной единственной таблицы будет быстрее выборки из результатов нескольких joinов с несколькими условиями для on (что типично).
    Оверхед, разумеется, нужно просчитывать прежде чем городить огород (ибо структура данных каталога может быть проще).
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кешировать каждое сочетание =)