|
|
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска. С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает. Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет? Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 04:54 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Доброго времени суток! Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска. С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает. Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет? Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя. Э-э-э зачем? На первых порах можно вообще без БД. Каталоги организуйте в виде файлового дерева. А атрибуты сообщений храните в JSON-файлах. Для полнотекстового поиска можно воспользоваться любым файловым полнотекстовым поиском. А там уже увидите какую БД построить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 06:57 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, Нет, БД нужна. Товары/услуги должны добавлять несколько пользователей. Т.е. нужно будет обеспечить конкурентный доступ, разграничение прав, блокировки. и т..п. Думаю без БД тут никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 14:48 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
1600 таблиц - само по себе не трагедия, тем паче если Вы все равно будете использовать ORM и задача повторного использования SQL-кода не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 15:45 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Думаю, сначала прототип сделаю не на все категории, посмотрю, как пойдет, а потом буду расширять. Да, код будет простой, но его будет много. В сфиксе (для фасетов), видимо, также придется гору индексов создавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 15:57 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
па сабжу: EAV. Для каждой категории список соотв. ей ID атрибутов. Например "обороты/минуту" могут быть и в HDD и в стиральной машине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 16:57 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Да, код будет простой, но его будет много. Вы же говорите что Ваш ОРМ возьмет на себя всю работу с таблицами - так какого кода у Вас будет много? На процедурном-то языке с ОРМ-ом никто не мешает написать один механизм поиска на все 1600 категорий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 17:22 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Думаю, много кода будет для организации добавления и редактирования, хотя надо пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 02:50 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
LSV, Я это понимаю. Все-таки хочется чтобы была нормальная схема данных, не зависимая от кода приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 02:53 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя. Не надо отдельных сущностей на картошку и марсоход. С точки зрения заявленной задачи - это однотипные объекты. Это Товары, информация о которых размещается Авторами Объявлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 06:12 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
AnSi_Sr, Ну так то да. Я и хочу создать базовую таблицу, для хранения сущности "Товар", а атрибуты конкретных товаров сохранять в маленьких таблицах, на каждый тип товара. Думаю, в MySQL либо это, либо EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 06:21 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577LSV, Я это понимаю. Все-таки хочется чтобы была нормальная схема данных, не зависимая от кода приложения.Никакого кода приложения. Чистый SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 09:16 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Я голосую за 6 НФ :) Есть интересный подход - Anchor. И вроде его использует Avito . Я описывал его немного в этой статье . Для вашей задачи я бы придумал какой-нибудь модифицированный Anchor. И генерил бы из него SQL для создания и модификации таблиц и код для доступа к БД. Последний может с использованием ORM, может нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 10:12 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Думаю, много кода будет для организации добавления и редактирования, хотя надо пробовать. ОРМ, в котором надо самому писать код для добавления и редактирования каждого типа объектов - это какой-то странный ОРМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 10:18 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Я имею ввиду валидацию форм для добавления/редактирование, html для отображения форм, хотя по идее этого добра не должно быть больше чем с EAV/ LSV, Да, и HTML там же рендерить :) Ares_ekb, Спасибо, интересно. С Anchor вообще не знаком, почитаю статью, погуглю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 10:53 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска. бери сразу pg и elastic или solar. С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает. это немного, не мало, но и немного, средняя бд по сложности. Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет? да, правильный, если ты не хочешь EAV (впрочем, правильность от этого не зависит) Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя. ну, еще лучше. только помни, что ORM это только CRUD, аналитические и поисковые запросы придется писать руками или генерировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 11:46 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Большое спасибо за ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 12:01 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Я думаю тут основная сложность в синхронизации реляционной модели данных, серверного кода, клиентского кода, пользовательского интерфейса. В идеале нужна одна модель, из которой можно генерить остальные модели, код, шаблоны для интерфейса и т.п. Причем, желательно, чтобы эту модель мог редактировать администратор каталога товаров. Есть разные инструменты, в т.ч. ORM фреймвоки, которые частично решают эту задачу синхронизации. Некоторые ориентированы на разработчиков, другие - на контент-менеджеров. Это всё банальные вещи, я просто пытаюсь описать проблему в целом, чтобы можно было оценивать те или иные решения в плане того на сколько они поддерживают синхронизацию моделей, кода и т.п., удобства для админа, что в них уже реализовано, что придется допиливать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 12:08 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Ares_ekb, Честно говоря, я не работал с такими кодогенерирующими фреймворками, пощоволяющими делать структуру БД и CRUD сразу. Думаю, инструменты, обеспечивающие такую функциональность стоят дорого и ими нужно учиться пользоваться.Я использовал PHP-фреймворки Yii и Symfony, думаю второй здесь подойдет лучше первого. Если знаете инструменты, которые здесь подойдут лучше, буду признателен за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 13:16 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577, основные инструменты для генерации кода и вообще модельно-ориентированной разработки бесплатные и даже открытые. Но на их изучение действительно нужно время, и не всегда эти затраты оправданы. Хотя реально там всё проще, чем многие думают. Я пишу цикл статей на хабре, чтобы популяризировать эту тему. Но как раз на основные статьи по кодогегерации и т.п. сейчас нет времени. В принципе при наличии знаний, минимального опыта и желания. Редактор модели и кодогенераторы в первом приближении можно запилить за пару дней. Ровно такие какие нужны, а не навязываемые одним из фреймвоков. Но опять-таки, чтобы получить эти минимальные знания и опыт нужно время. По ORM фреймвокам и т.п. я ничего хорошего не подскажу, в последнее время больше занимался кодогенераторами и т.п. Напишите, пожалуйста, что у вас в итоге получится. Очень интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2016, 15:36 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2016, 13:55 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)? Это зависит от задач - если планируется какой-то функционал, который будет лазить по этим nested set'ам и что-то с ними делать, то они нужны, если нет - зачем? Если, скажем, Вы хотите, чтобы Ваш ORM сам по этой древовидной структуре находил названия таблиц для категорий и мапил их, и он это действительно умеет - таблица-дерево, очевидно, нужна. Если все равно соответствие всем категориям надо прописывать вручную в коде - зачем их хранить где-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2016, 14:27 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Еще вопрос про наследование таблиц. Какое еще нафиг наследование ? В БД еще этой шняги не хватало. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 09:25 |
|
||
|
Каталог товаров/услуг 1600 категорий
|
|||
|---|---|---|---|
|
#18+
Anton5577Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)? В PostgreSQL есть http://postgresql.ru.net/manual/ddl-inherit.htmlнаследование таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 10:23 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39308089&tid=1540283]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 482ms |

| 0 / 0 |

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