|
|
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
Возьмем за пример avito и его объявления с разными свойствами для категории. Подскажите, пожалуйста, жизнеспособна ли структура EAV на такой объем данных в реляционной бд? Или же лучше использовать иные подходы: 1. На каждую категорию товаров - своя таблица. 2. Использовать не реляционные бд, например, MongoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 19:35 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscom, вредна ли водка? вреден ли змеиный яд? что лучше самолёт или вертолет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 19:40 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
babonacapscom, вредна ли водка? вреден ли змеиный яд? что лучше самолёт или вертолет? У меня опыт небольшой и пришел спросить совета. Возможно люди обкатали схемы на рабочих проектах и знают их подводные камни. В рамках маленького сервиса, понятно, что любой подход жизнеспособен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 19:43 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomУ меня опыт небольшой и пришел спросить совета. Жизнеспособность EAV в конкретном проекте зависит не от объёма данных, а от требований проекта и радиуса кривизны рук программиста. И таки да, в неопытных руках оно сдохнет практически наверняка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 19:47 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovcapscomУ меня опыт небольшой и пришел спросить совета. Жизнеспособность EAV в конкретном проекте зависит не от объёма данных, а от требований проекта и радиуса кривизны рук программиста. И таки да, в неопытных руках оно сдохнет практически наверняка. А требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут отдельные таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 19:49 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomА требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут отдельные таблицы? Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 20:31 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovcapscomА из каких требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут отдельные таблицы? Да. Что да?)) Меня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 20:36 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomМеня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы? Опыт разработчика приложения - главный критерий. Остальное вторично. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 20:38 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovcapscomМеня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы? Опыт разработчика приложения - главный критерий. Остальное вторично. У Вас наверняка большой опыт, поделитесь, пожалуйста. Если бы Вам пришлось проектировать Авито, в какую структуру Вы бы укладывали данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 20:40 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomЕсли бы Вам пришлось проектировать Авито, в какую структуру Вы бы укладывали данные? Я не знаю что такое Авито. Я не знаю требований интерфейса. Я не знаю структуру данных. Едва ли я когда-нибудь получу такую работу... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 20:45 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscom У меня опыт небольшой и пришел спросить советаА давайте поменяем правила игры. Теперь вы будете формулировать постановку задачи (просто "Авито" увы не тянет на постановку задачи), обозначать узкие места и потенциальные проблемы, предлагать варианты решения, с указанием достоинств недостатков каждого решения, а мы будет критиковать, подсказывать возможные грабли в тех или иных обстоятельствах, а вы будете прикидывать насколько эти обстоятельства относятся к вашим условиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 21:45 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
SERG1257, поддерживаю Задача: Каждая категория имеет свои свойства разных типов (text, checkbox, int). Необходимо дать пользователю возможность размещать объявления в различных категориях, а так же фильтровать объявления по заданным свойствам. Рассмотрим подход EAV. Его основным плюсом будет гибкость добавления новых свойств для категории. Недостатки: 1. Есть громоздкость в сборе данных(или их группе), 2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных. 3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять. 4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?) Часть проблем, можно устранить кешированием (уровень приложения не рассматриваем). Рассмотрим подход с отдельными таблицами для каждой категории товаров. Его плюсами будут: 1. Довольно прозрачные запросы при сборке данных. 2. Свойства товара будут иметь корректные типы, соответственно проще фильтровать. Минусы: 1. Полное отсутствие гибкости при добавлении нового атрибута. 2. При большем количестве категорий, например 100, имеем 100 таблиц в бд. (мне сложно определиться, является ли этот критерий недостатком) Покритикуйте, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 23:30 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
Последний раз, когда был на avito, не заметил там необходимости в EAV. Объявления в форме сводбодного описания. Достаточно иерархического классификатора, таблицы объявлений с поддержкой полнотекстового поиска и парой-тройкой дополнительных таблиц для фото и пользователей и ещё какой-нибудь мелочи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 23:43 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
ChAПоследний раз, когда был на avito, не заметил там необходимости в EAV. Объявления в форме сводбодного описания. Достаточно иерархического классификатора, таблицы объявлений с поддержкой полнотекстового поиска и парой-тройкой дополнительных таблиц для фото и пользователей и ещё какой-нибудь мелочи. Не очень понял, что имеется ввиду под иерархическим классификатором. Напишите, пожалуйста, подробнее (если не сложно с примером) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 23:47 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomНе очень понял, что имеется ввиду под иерархическим классификатором. Напишите, пожалуйста, подробнее (если не сложно с примером) http://www.google.ru/search?q=иерархический классификатор Сейчас заглянул туда, ещё д.б. таблица для связки классификатора и объявлений, так как объявление может принадлежать к нескольким категориям одновременно. Чуть сложнее раздел по недвижимости, по-видимому добавлены дополнительные таблицы характеристик с учетом специфики, EAV там тоже не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 00:40 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
ChA, Допустим вся иерархия категорий будет представлена в таблице как NestedSets: - Транспорт/Автомобили/Ford/Focus - Работа/Вакансии/IT, интернет, телеком А как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 00:53 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomДопустим вся иерархия категорий будет представлена в таблице как NestedSets: - Транспорт/Автомобили/Ford/Focus - Работа/Вакансии/IT, интернет, телекомIMHO, NestedSet не лучший вариант хранения иерархии, но хозяин - барин. Если иерархия достаточно стабильная, то можно и её использовать, хотя запросы, на мой взгляд, бывают сложноваты. capscomА как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы?Если обратите внимание, то у них только в нескольких категориях есть уточняющие характеристики, так что отдельных таблиц более чем достаточно. Вы же не пытаетесь сделать универсальную БД на всё во Вселенной ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 01:14 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
ChAcapscomДопустим вся иерархия категорий будет представлена в таблице как NestedSets: - Транспорт/Автомобили/Ford/Focus - Работа/Вакансии/IT, интернет, телекомIMHO, NestedSet не лучший вариант хранения иерархии, но хозяин - барин. Если иерархия достаточно стабильная, то можно и её использовать, хотя запросы, на мой взгляд, бывают сложноваты. capscomА как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы?Если обратите внимание, то у них только в нескольких категориях есть уточняющие характеристики, так что отдельных таблиц более чем достаточно. Вы же не пытаетесь сделать универсальную БД на всё во Вселенной ? Спасибо большое ) Теперь ясно ) Нет, вовсе не универсальную. Просто интересно, какие из вариантов наиболее жизнеспособны в действующих проектах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 01:24 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomкакие из вариантов наиболее жизнеспособны в действующих проектах.Вариантов реализации всегда много, зависит от многих причин, начиная с нормальной постановки задачи. Поэтому сферические проекты рассматривать, как правило, бесполезно, просто бесплодная игра разума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 01:45 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
[quot capscom Возьмем за пример avito и его объявления с разными свойствами для категории. Подскажите, пожалуйста, жизнеспособна ли структура EAV на такой объем данных в реляционной бд? да, вполне. EAV дорожает только в одном -- когда надо писать аналитические запросы типа отчетов. В сети есть статья А. Тенцера на эту тему, там все расписано. Или же лучше использовать иные подходы: 1. На каждую категорию товаров - своя таблица. EAV дает возможность конечному пользователю бд без программистов добавлять новые свойства налету. Наследование (что ты предлагаешь) же наоборот этого не дает. так что это не совсем ранозначные подходы, но в некоторых пределах они взаимозаменяемы. 2. Использовать не реляционные бд, например, MongoDB. это вообще бред. Даже обсуждать не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 02:08 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomDimitry Sibiryakovпропущено... Да. Что да?)) Меня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы? Тренцера найди,почитай. нужно добавлять атрибуты на лету - нужен EAV, не нужно - можно не EAV, а что-то другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 02:11 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomSERG1257, поддерживаю Задача: Каждая категория имеет свои свойства разных типов (text, checkbox, int). Необходимо дать пользователю возможность размещать объявления в различных категориях, а так же фильтровать объявления по заданным свойствам. Рассмотрим подход EAV. Его основным плюсом будет гибкость добавления новых свойств для категории. Недостатки: 1. Есть громоздкость в сборе данных(или их группе), 2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных. 3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять. 4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?) пункты 2,3,4 - бред, из цикла "я не умею готовить". 1 решается генераторами типичных запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 08:35 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, а есть пример "правильной готовки" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 09:46 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomНедостатки: 3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять. А вот это зачем делать? В таблице свойств есть поле с дефолтным значением. если значения свойства нет в таблице знаечний, то берём дефолтное значение из таблицы свойств P.S. Ну если нет желания иметь null значения в таблицах (а они будут в поле с дефолтным значением, когда по условиям задачи свойство не будет иметь такого значения), создай отдельную таблицу дефолтных значений свойств. Но всё равно дефолтное значение свойства будет храниться в одном поле, а не по всем объявлениям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 09:59 |
|
||
|
Жизнеспособен ли EAV ?
|
|||
|---|---|---|---|
|
#18+
capscomMasterZiv, а есть пример "правильной готовки" ? 2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных. Делаешь подкатегорию основной категории, и там заводишь атрибуты, и делов. 3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять. Хранишь дефолт в словаре атрибутов и подставляешь в каждом запросе, если значение атрибута не указано явно. 4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?) Хранишь значения свойств в разных таблицах в соответствии с их типом данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 10:17 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39162410&tid=1540382]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
5ms |
| others: | 15ms |
| total: | 172ms |

| 0 / 0 |

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