Каталог на 5млн товаров с фильтрами
Коллеги, добрый день.
Прошу именно совета КАК реализовывать каталог на 5млн товаров с фильтрами в категориях. Сейчас на стадии выбора пути, по которому делать. Хотел бы услышать совет девелоперов, которые уже реализовывали нечто подобное. Это может быть и НЕ модх. Пхп+майскул.
Может быть уже есть готовые компоненты? Ведь задача типовая…
Задача:
Как сейчас вижу решение:
Аналогичные сайты:
shopomio.ru/category/womens-outerwear
likewear.ru/zhenskie-rubashki
Спасибо!
Прошу именно совета КАК реализовывать каталог на 5млн товаров с фильтрами в категориях. Сейчас на стадии выбора пути, по которому делать. Хотел бы услышать совет девелоперов, которые уже реализовывали нечто подобное. Это может быть и НЕ модх. Пхп+майскул.
Может быть уже есть готовые компоненты? Ведь задача типовая…
Задача:
- 5млн товаров (женские и мужские вещи, аксессуары, обувь)
- 250 категорий с уровнем вложенности 5
- 8 фильтров для всех категорий (фильтры одинаковые):
- Брэнд (множественный выбор)
- Магазин (множественный выбор)
- Диапазон цены (числа, от и до)
- Сезон (множественный выбор)
- Размер (множественный выбор)
- Скидка (числа, от)
- В наличии (чекбокс)
- Находясь в категории в ней видны и фильтруются товары вложенных категорий
- Каталог работает очень быстро
- Во всех категориях фильтры одинаковые, хочется не отсечь возможность в будущем использовать разные фильтры для разных категорий
Как сейчас вижу решение:
- Modx revo для шаблона, заполнения категорий, чпу и сео-задач.
- Отдельная таблица в майскул с товарами и айди категории из модх.
- Еще одна таблица с параметрами и их значениями.
- Еще одна таблица со связью товаров и значений.
- А при фильтрации джойнить нужные параметры и выводить на экран
Аналогичные сайты:
shopomio.ru/category/womens-outerwear
likewear.ru/zhenskie-rubashki
Спасибо!
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Если параметры для товаров едины — зачем их выносить в отдельную таблицу то?
Можно подумать вообще с точки зрения архитектуры поступить так: отдельно сайт на MODX, и отдельно некое приложение «каталог», а сайт с каталогом пусть работает как с сервисом, по API. Это даст возможность как угодно менять схему работы каталога, писать его на любом языке, с любой БД, развернуть их на разных серверах. А сайт будет жить и работать самостоятельно. Запросы к сервису можно кешировать, для быстродействия.
Я тоже слышал, что JOIN подтормаживает :)
Отдельная таблица для параметров, потому что у нас множественный выбор. Или вы предлагаете через запятую вписывать параметров, а потом искать нужные товары LIKE '%param1%'? Будет ли LIKE быстрее при 5млн товаров?
А идея про АПИ будет выглядеть так? Сайт формирует запрос (категория и настройки параметров) и отправляет JSON-запрос в сервис, и получает ответ. После этот ответ парсит, упаковывает в шаблоны и показывает пользователю. Так?
По АПИ — да, все так поняли, не взирая на кажущуюся сложность это абсолютно рабочий способ. Издержки на лишний запрос к сервису, как правило, не очень большие. В общем подумать стоит
А готовые решения есть? Можно платные :)
Но контактов нет :(
Касаемо эластика, да его можно использовать, только сейчас он стал прожорлив и ему нужно минимум 32гб оперативки, ну для 5млн товаров возможно и 64гб нужно.
Но если у Вас будет такая машина и всё ограничится примерно 5млн, то имеет смысл сделать одну таблицу в которую прописать все параметры, при этом задать тип ENUM для параметров цвет, размер и т.п.
У нас на одном проекте поиск по 20млн товаров с прописанными ключами работал меньше чем за секунду. Правда не было необходимости строить фильтры на лету, возможно имеет смысл кэшировать фильтры до обновления товаров. Там сервер был вот с такими характеристиками, если я правильно помню: image.prntscr.com/image/mdWNvaXmRFCKQNoPjWQXcg.png
Хотя эластик это сразу готовая система поиска для сайта, так же благодаря Terms из эластика будут фильтры готовы прям из запроса.