Задача может быть тривиальна, но споров в сети много. Есть желание сделать свой интернет магазин. И встал вопрос о хранении неограниченного количества свойств товаров. Много читал про EAV, но как-то выглядит топорно и с поиском и фильтрами могут возникнуть сложности (не беру в расчет elasticsearch и пр.). Смотрел механизмы нескольких CMS.
Например, в open cart используется EAV, а для фильтров отдельные метки, что добавляет трудностей при администрировании такого магазина. У magento некое подобие расширенного EAV только я не понял как оно делает выборки, ведь для каждой такой операции потребуется сделать 4-5 джойнов, в зависимости от кол-ва типов свойств(int, float, date и пр.).
Понравился механизм хранения свойств в Битриксе, но я не совсем понимаю как там получить множественные свойства (несколько запросов?). Можете объяснить как лучше организовать такое хранение данных? Если не трудно, то с примерами запросов.
EAV архитектура позволяет хранить и обрабатывать большие объемы данных без проблем. Все будет больше упираться в операции чтения/записи при больших нагрузках на сайт, ведь при записи/транзакциях таблицы блокируются, если речь больше о чтении, то грамотная настройка БД будет давать хороший результат даже на чистой EAV. Конечно же все зависит еще и от объема хранимых данных, но и линейная раскладка от них тоже зависит. Более того, EAV после определенного размера дает более быстрые результаты, чем широкая и большая линейная таблица.
Не скажу на счет других CMS, но EAV в Magento как правило используется именно для хранения данных (считай для админки). Для фронта используется несколько дополнительных слоев, чтобы сделать его более быстрым и доступным:
Если у вас фильтров и/или товаров переваливает за некое значение, то тут уже MySQL начнет подгребать на любых таблицах и это не зависит от CMS. Решается либо переездом на более мощное железо, тюнингом MySQL, либо переносом каталога+поиска+фильтров на Elasticsearch / Sphinx.
Если же ваша цель именно иметь много свойств у товаров, но не использовать как фильтры, то еще можно поискать решение с поддержкой графовых БД под эти цели. Уверен что модули для этого найдутся под многие CMS.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть огромная бд с кучей таблицМне нужно составить sql запрос, чтобы создать точно такую же бд
Не получается никак запустить локальный сервер google-app-engine с использованием базы MySQL
Подскажите как сверстать этот зеленый полукругСейчас он сделан на clip-path, но у него плохая поддержка
На данный вопрос уже ответили: