|
|
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Никогда раньше не занимался проектированием базы для крупных проектов, поэтому столкнулся с проблемой выбора структуры бд. Задача проста(?) как три копейки - структура базы каталога товаров. С реализацией вложенных категорий все понятно - nested sets (или уже придумали что-то получше?). Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение товаров, поиск схожих. Наиболее реальной кажется такая структура: Справочник id название Значения справочника id id справочника Название Параметры Id id категории название параметра тип параметра (строка, число, дата, список) id справочника Товар id id категории название, цена и прочее параметры товаров id id параметра id товара значение Насколько удачно такое решение? В плане скорости выборок (вывод категории, поиск по параметрам)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 22:35 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital God Насколько удачно такое решение? Ну про EAV здесь было сломано немало копий. В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется Digital GodВ плане скорости выборок (вывод категории, поиск по параметрам)? Очень плохо. Тем хуже, чем больше столбцов (параметров) По поводу деревьев - http://www.osp.ru/pcworld/2007/03/4199032/ Задавайте конкретные вопросы, получите более конкретные ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 04:20 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
SERG1257В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется Я конечно догадывался, что с ростом базы товаров, все это дело просядет. А какие еще есть варианты кроме EAV? SERG1257По поводу деревьев - http://www.osp.ru/pcworld/2007/03/4199032/ Спасибо, почитаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 08:48 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
А какие еще есть варианты кроме EAV?Никаких. Есть варианты реализации EAV. Как плохие, так и хорошие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:05 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital GodSERG1257В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется Я конечно догадывался, что с ростом базы товаров, все это дело просядет.Проседание конечно будет, по сравнению с класической схемой, но не такое, чтоб вообще всё перестало работать. И выхода нет, для произвольных наборов характеристик без вариантов. Digital GodА какие еще есть варианты кроме EAV?Точнее, варианты есть, точнее один вариант - делать классическую схему, в которой параметры товара - атрибуты сущности. Но этот вариант сильно сложнее в реализации. Реализовать можно 2-мя способами: 1. таблица с набором полей - Param1...ParamN 2. с отдельными таблицами для каждого набора параметров (то есть учитывая тот факт, что набор параметров уникален не для каждого товара, а для каких то групп товаров, и в принципе таких уникальных наборов будет не так много). Но тут важно, как будут использоваться эти параметры, будет поиск по параметру только в одной группе товаров или среди всех товаров. 3. Да, ещё один вариант: Набор параметров кладут в одно поле (допустим, xml). Можно использовать, если нет поиска по параметрам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 10:08 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
alexeyvg1. таблица с набором полей - Param1...ParamN Думаю этот вариант отпадает сразу. с учетом уникальности набора параметром, пусть даже только для группы продуктов, получится очень много таблиц. alexeyvg2. с отдельными таблицами для каждого набора параметров (то есть учитывая тот факт, что набор параметров уникален не для каждого товара, а для каких то групп товаров, и в принципе таких уникальных наборов будет не так много). Но тут важно, как будут использоваться эти параметры, будет поиск по параметру только в одной группе товаров или среди всех товаров. 3. Да, ещё один вариант: Набор параметров кладут в одно поле (допустим, xml). Можно использовать, если нет поиска по параметрам. Мне кажется что для обоих вариантов в качестве поиска подойдет Sphinx (грамотно настроенный). По сути это будет отличным решением для поиска и вывода схожих продуктов. Для сокращения накладок ограничимся поиском по этой же категории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 11:29 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Интересно, как яндекс маркет хранит данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 11:30 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital God, К сожалению вам никто тут не поможет - одни общие рассуждения и сражения со сферическими конями в вакууме, одни наборы умных слов, но конкретики вы тут не найдете - уже несколько человек пало на этом пути :)) Я тоже пробовал начать такую же тему - но в итоге оказалось что я дебил, ноя то легко отделался - а там народ морды бил друг другу еще несколько страниц ))) Еще раз скажу - к сожалению, на данной площадке по поводу каталога товаров реальных решений вам тут не подскажут! )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 12:52 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
spЯ тоже пробовал начать такую же тему Но ты же сделал свой каталог, вот и сыпь аффтару свою конкретику. Или так и не сделал? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:00 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
> вам никто тут не поможет Правильно так: ни за вас, ни за кого-то еще никто бесплатно работать не будет. Готовое решение стоит денег. Килобаксов за пять вам какой-нибудь студентеГ нарисует что-то типа яндекс-маркета, - пишите объяву в разделе "работа". Форум называется "проектирование". Хотите научиться проектировать - задавайте вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 13:32 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
sp, По сути конкретика не нужна - нужно понять направление в котором двигаться. Сюда я обратился, чтобы узнать мнение людей какую модель стоит использовать и не придумали что-то новое. guest_20040621, Я не прошу ни кого за меня что-то делать. Форум называется проектирование бд я и задал вопрос - по какой модели лучше делать базу для каталога. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 14:02 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital Godя и задал вопрос - по какой модели лучше делать базу для каталога. И получил ответ: EAV - единственная работоспособная модель. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 14:08 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
> по какой модели лучше делать базу для каталога Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный цикл, - забудьте про EAV как про страшный сон. То, что вы назвали "каталог товаров" - одна из наиболее трудоемких задач для проектирования. Нет ни одной реализации, которую можно было бы считать удовлетворительной. Начинать учиться проектированию лучше с задач попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 15:08 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Нэть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 15:08 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
> Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и > одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный > цикл, - забудьте про EAV как про страшный сон. Чем это вам EAV не угодил ? Да... Про "нормальный жизненный цикл" -- тоже -- у всех "нормальный" цикл совсем разный. > То, что вы назвали "каталог товаров" - одна из наиболее трудоемких задач для > проектирования. Нет ни одной реализации, которую можно было бы считать > удовлетворительной. Начинать учиться проектированию лучше с задач попроще. Она "трудна" только потому что постановки задачи у всех разные. А.Тенцер в своё время делал на EAV каталоги товаров (предм. область -- фармацевтика, на сколько я помно) -- и ничего. В сети есть его статьи, можно почитать, там про все грабли расписано, как обходить -- тоже. И без EAV это тоже делается. Отношение подкатегории в руки -- и вперёд, нужно только правильно иерархию классов товаров прописать правильно (это сложно в общем случае, но в случае ограниченнойти только рамками предметной области вполне достижимая задача). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 15:20 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
On 07/17/2012 11:35 PM, Digital God wrote: > Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько > миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и > больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение > товаров, поиск схожих. Кстати, RDF можно было бы использовать для этого (оно конечно -- тот же почти EAV, только вид сбоку, но там полиморфизм атрибутов изначально заложен в модель данных). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 15:31 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
> Задача проста(?) как три копейки - структура базы каталога товаров. С > реализацией вложенных категорий все понятно - nested sets (или уже придумали > что-то получше?). > > Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько > миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и > больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение > товаров, поиск схожих. Поиск схожих достаточноможет быть сложным. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 15:31 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
> Чем это вам EAV не угодил ? Угодил. Я использую такие структуры. Но я и понимаю границы применения таких структур. Меня тошнит, когда я вижу, например, интернет-магазин, сделанный таким образом. То, что это дико неудобно - хрен с ним. То, что теряется половина существенных данных - тоже хрен с ним. Важно то, что в результате кривых ручонок дерьмокодеров юзер получает возможность сравнения вещей, которые невозможно корретно сравнивать. Просто потому, что дерьмокодеры не подозревают о том, что большинство характеристик контекстно-зависимы и не умеют этот контекст описывать. Никак. Потому, что эти дерьмокодеры читали Тенцера вместо того, чтобы читать Дейта. Это если коротко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 16:27 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital God Думаю этот вариант отпадает сразу. с учетом уникальности набора параметром, пусть даже только для группы продуктов, получится очень много таблиц.И кого когда напрягало большое количество таблиц. Да, это планида проектировщика, пытать заказчика на предмет, что же тебе завтра в голову придет, где стелить соломку. EAV - это способ сделать это потом. В конечном итоге (когда структура данных устаканится) вы наделаете для своей EAV вьюх, моделирующих обычные таблицы, ибо работать с реляционными данными гораздо удобнее. Вообще, рекомендую отталкиваться от другого - каталог товаров это система с редкой записью по сравнению с выборками. Так что подходы лучше подсматривать у отчетных систем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 17:01 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Чем это вам EAV не угодил ? Потому, что эти дерьмокодеры читали Тенцера вместо того, чтобы читать Дейта. . Но Тендер наверняка читал Дейта, так что опосредованно ... :-) получается проблема единственно в том что нужно уметь делать правильно бд с EAV. Но без Eav нужно тоже уметь делать бд правильно. Получается, что проблема есть что так, что эдак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 17:39 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital God, У тебя в некоторых таблицах лишние суррогатное ключи (ид), убирай где не нужно. Например,в параметрах товара. 2) параметры разных типов надо хранить в разных таблицах или в разных полях одной таблицы. Иначе и индексировать плохо, и нарушение доменной целостности может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 17:47 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, на работе не было возможности нормально ответить на вопросы. Dimitry SibiryakovDigital Godя и задал вопрос - по какой модели лучше делать базу для каталога. И получил ответ: EAV - единственная работоспособная модель. как видно из рассуждений - не только EAV подходит, но в целом обобщенный ответ я получил. guest_20040621 Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный цикл, - забудьте про EAV как про страшный сон. Мне кажется в таком вопросе критерий "лучшести" очевиден - скорость работы, и как правильно заметил SERG1257 - каталог товаров это система с редкой записью по сравнению с выборками. Значит упор на качество и скорость выборок. guest_20040621 То, что вы назвали "каталог товаров" - одна из наиболее трудоемких задач для проектирования. Нет ни одной реализации, которую можно было бы считать удовлетворительной. Начинать учиться проектированию лучше с задач попроще. Не вижу ничего трудоемкого в данной задаче. Есть модели проектирования со своими плюсами и минусами. Надо выбрать одну и постараться компенсировать ее минусы через какие-то методы (поиск через sphinx, грамотное индексирование, в конце концов - масштабируемость ресурсов сервера). Понятное дело что из-за специфики проекта будут свои тонкости в реализации - в целом задача достаточна простая. MasterZivКстати, RDF можно было бы использовать для этого (оно конечно -- тот же почти EAV, только вид сбоку, но там полиморфизм атрибутов изначально заложен в модель данных). Каюсь, про RDF не знаю ничего. На днях обязательно почитаю и поищу примеры реализации. MasterZivПоиск схожих достаточноможет быть сложным. Он вполне может быть решен через sphinx. Или sphinx не панацея от всего и вся? :) SERG1257Вообще, рекомендую отталкиваться от другого - каталог товаров это система с редкой записью по сравнению с выборками. Так что подходы лучше подсматривать у отчетных систем. С подходами отчетных систем знаком хорошо по специфике работы, соглашусь что какие-то идеи могут подойти для улучшения структуры каталога. MasterZivDigital God, У тебя в некоторых таблицах лишние суррогатное ключи (ид), убирай где не нужно. Например,в параметрах товара. 2) параметры разных типов надо хранить в разных таблицах или в разных полях одной таблицы. Иначе и индексировать плохо, и нарушение доменной целостности может быть. 1) Я просто писал пример на скорую руку, конечно ничего лишнего в конечном результате не будет. 2) согласен. поскольку типов данных не так много (строка, число и дата) - можно обойтись 3 таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 19:14 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital Godкак видно из рассуждений - не только EAV подходит Очевидно, мне нужно было выделить слово "работоспособная" жирным крупным шрифтом... Но кто я такой, чтобы охранять Ваши яйца от граблей?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 20:27 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Digital GodИнтересно, как яндекс маркет хранит данные?EAV используют. Я делал (не один, конечно) проект Подбери.ру, его купил яндекс и так появился яндекс маркет :-) Конечно, наверняка код они за эти 10 лет переписали, но вряд ли принцип поменялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 20:52 |
|
||
|
Избитый вопрос - реализация каталога товаров
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDigital Godкак видно из рассуждений - не только EAV подходит Очевидно, мне нужно было выделить слово "работоспособная" жирным крупным шрифтом... Но кто я такой, чтобы охранять Ваши яйца от граблей?.. Никто не отрицал EAV, просто рассматриваем варианты реализация и все за и против. alexeyvgDigital GodИнтересно, как яндекс маркет хранит данные?EAV используют. Я делал (не один, конечно) проект Подбери.ру, его купил яндекс и так появился яндекс маркет :-) Конечно, наверняка код они за эти 10 лет переписали, но вряд ли принцип поменялся. Я где-то так и думал что это EAV с модификациями. В общем буду развивать тему EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 22:24 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=14&tid=1540288]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
107ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 447ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...