Я работаю над сайтом электронной коммерции, который был построен на Drupal. Я безумно стараюсь понять, как они хранят продукты и данные для каждого элемента.
На сайте тысячи продуктов. Каждый из них относится к категории или нескольким категориям.
Когда сайт был запущен, было продано очень мало видов продукции, и не было большого количества вариаций для каждого элемента.
WidgetA
Length=>[1", 2", 3"]
Diameter=[1", 2", 3"]
Finish=>[Red, Blue, Green]
Material=>[Aluminum, Steel]
Category=>Category1
Таким образом, у WidgetA будет 54 разных скуса. На каждой странице были бы все детали, перечисленные на ней, и все было в порядке.
Разработчик go in, добавил бы индивидуально skus и затем настроил страницу сведений о продукте, показывая спецификации. Затем он создаст представление списка с опциями слева, позволяющими сузить спецификации до 1 "диаметра, синий, стальной виджет A.
Это было хорошо, громоздко, но хорошо. Однако, с 3000 продуктов и 10 ГБ базы данных немного замедлились.
Теперь этот сайт переносится в многосайтовую настройку, и мы добавляем еще 10000 элементов.
Способ электронной коммерции модуль, вы должны добавить спецификации в список выбора, чтобы добавить их. Вы не можете просто импортировать новый элемент со всеми новыми спецификациями. Вы должны go и добавить спецификации (например, размер нити) к типу продукта, затем предварительно заполните все параметры для этого типа потока. Затем вы можете импортировать все продукты для этого типа и работать с представлениями.
Мне кажется, что добавление всех элементов этого путь не очень эффективен.
Что может быть лучше для хранения данных в базе данных? Я предполагал, что атрибуты для каждого элемента хранятся в столбце атрибутов как * 10 25 * объект. Затем, когда вы отображаете представление, вы берете все элементы для категории, получаете все имена атрибутов и фильтруете по всем доступным опциям для каждого атрибута. Я хотел бы сделать это с помощью js, чтобы, если вы добавите новый продукт с новым атрибутом, все это было бы сделано на лету, а не путем предварительного заполнения всех потенциальных вариантов.
Одна проблема, которую мы Я специально столкнулся с тем, что некоторые продукты хранятся в метрических c значениях, а некоторые в имперских. Как бы вы справились с этим?