Чем плохо EAV решение для интернет-магазина?

Столкнулся с проблемой когда есть разные типы товаров (одежда и телевизоры имеют мало одинаковых параметров). Вижу 3 решения проблемы
  • Serialized LOB самый простой, но нет поиска
  • EAV — не сложная реализация, нет проблем при обновлении базы. В общем вроде то. Но ТУТ пишут что не оч.
  • Ну и самый сложный и дорогой (по времени) вариант — разделения товаров на разные таблицы



Собственно есть мысли? Как сделать удобно для меня как программиста, чтобы не переделывать все и чтобы людям было удобно?
  • Вопрос задан
  • 5497 просмотров
Пригласить эксперта
Ответы на вопрос 3
helios
@helios
Большинство недочетов, указанных на stackoverflow, исправляется грамотно построенной бизнес-логикой. В этом можно убедиться на примере того же Magento.

Единственное, что стоит отметить — при переходе на EAV нужно оценить, стоит ли игра свеч.

Если структура категорий и/или типов товаров относительно постоянна и редко изменяется, то имеет смысл использовать flat tables (то, что у вас указано третьим вариантом), т.к такая схема намного производительнее и проще в реализации.

Если же структура каталога очень динамична, то стоит использовать EAV, т.к. в этом случае будут сэкономлены ресурсы, которые тратятся на alter/drop-запросы в flat tables. Но при этом нужно будет хорошо продумать систему кеширования, т.к. удельная сложность выборки данных по одной сущности ощутимо больше, чем в других схемах.

Сам очень давно выбрал для себя EAV и еще ни разу не пожалел об этом.
Ответ написан
@TimTowdy
Самое простое решение — использовать документо-ориентированные БД, типа MongoDB/CouchDB.
Ответ написан
try4tune
@try4tune
Magento отказалась от использования EAV в последних версиях. Перешли на обычный flat.
Ответ написан
Ваш ответ на вопрос

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

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