Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Жизнеспособен ли EAV ? / 25 сообщений из 33, страница 1 из 2
03.02.2016, 19:35
    #39162374
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
Возьмем за пример avito и его объявления с разными свойствами для категории. Подскажите, пожалуйста, жизнеспособна ли структура EAV на такой объем данных в реляционной бд?

Или же лучше использовать иные подходы:

1. На каждую категорию товаров - своя таблица.

2. Использовать не реляционные бд, например, MongoDB.
...
Рейтинг: 0 / 0
03.02.2016, 19:40
    #39162382
babona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscom,

вредна ли водка?
вреден ли змеиный яд?
что лучше самолёт или вертолет?
...
Рейтинг: 0 / 0
03.02.2016, 19:43
    #39162384
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
babonacapscom,

вредна ли водка?
вреден ли змеиный яд?
что лучше самолёт или вертолет?

У меня опыт небольшой и пришел спросить совета. Возможно люди обкатали схемы на рабочих проектах и знают их подводные камни. В рамках маленького сервиса, понятно, что любой подход жизнеспособен.
...
Рейтинг: 0 / 0
03.02.2016, 19:47
    #39162389
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomУ меня опыт небольшой и пришел спросить совета.
Жизнеспособность EAV в конкретном проекте зависит не от объёма данных, а от требований
проекта и радиуса кривизны рук программиста. И таки да, в неопытных руках оно сдохнет
практически наверняка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.02.2016, 19:49
    #39162390
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
Dimitry SibiryakovcapscomУ меня опыт небольшой и пришел спросить совета.
Жизнеспособность EAV в конкретном проекте зависит не от объёма данных, а от требований
проекта и радиуса кривизны рук программиста. И таки да, в неопытных руках оно сдохнет
практически наверняка.


А требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут отдельные таблицы?
...
Рейтинг: 0 / 0
03.02.2016, 20:31
    #39162410
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomА требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут
отдельные таблицы?
Да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.02.2016, 20:36
    #39162411
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
Dimitry SibiryakovcapscomА из каких требований исходить, чтобы было четкое понимает, что тут нужен EAV, а тут
отдельные таблицы?
Да.


Что да?)) Меня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы?
...
Рейтинг: 0 / 0
03.02.2016, 20:38
    #39162413
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomМеня интересует на основании каких критериев можно определиться нужен ли EAV
или же иные подходы?
Опыт разработчика приложения - главный критерий. Остальное вторично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.02.2016, 20:40
    #39162415
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
Dimitry SibiryakovcapscomМеня интересует на основании каких критериев можно определиться нужен ли EAV
или же иные подходы?
Опыт разработчика приложения - главный критерий. Остальное вторично.


У Вас наверняка большой опыт, поделитесь, пожалуйста. Если бы Вам пришлось проектировать Авито, в какую структуру Вы бы укладывали данные?
...
Рейтинг: 0 / 0
03.02.2016, 20:45
    #39162416
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomЕсли бы Вам пришлось проектировать Авито, в какую структуру Вы бы укладывали
данные?
Я не знаю что такое Авито.
Я не знаю требований интерфейса.
Я не знаю структуру данных.
Едва ли я когда-нибудь получу такую работу...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.02.2016, 21:45
    #39162454
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscom У меня опыт небольшой и пришел спросить советаА давайте поменяем правила игры.
Теперь вы будете формулировать постановку задачи (просто "Авито" увы не тянет на постановку задачи),
обозначать узкие места и потенциальные проблемы,
предлагать варианты решения, с указанием достоинств недостатков каждого решения,
а мы будет критиковать, подсказывать возможные грабли в тех или иных обстоятельствах, а вы будете прикидывать насколько эти обстоятельства относятся к вашим условиям.
...
Рейтинг: 0 / 0
03.02.2016, 23:30
    #39162478
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
SERG1257, поддерживаю




Задача:
Каждая категория имеет свои свойства разных типов (text, checkbox, int). Необходимо дать пользователю возможность размещать объявления в различных категориях, а так же фильтровать объявления по заданным свойствам.

Рассмотрим подход EAV.

Его основным плюсом будет гибкость добавления новых свойств для категории.

Недостатки:
1. Есть громоздкость в сборе данных(или их группе),
2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных.
3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять.
4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?)

Часть проблем, можно устранить кешированием (уровень приложения не рассматриваем).

Рассмотрим подход с отдельными таблицами для каждой категории товаров.

Его плюсами будут:
1. Довольно прозрачные запросы при сборке данных.
2. Свойства товара будут иметь корректные типы, соответственно проще фильтровать.

Минусы:
1. Полное отсутствие гибкости при добавлении нового атрибута.
2. При большем количестве категорий, например 100, имеем 100 таблиц в бд. (мне сложно определиться, является ли этот критерий недостатком)


Покритикуйте, пожалуйста.
...
Рейтинг: 0 / 0
03.02.2016, 23:43
    #39162482
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
Последний раз, когда был на avito, не заметил там необходимости в EAV. Объявления в форме сводбодного описания. Достаточно иерархического классификатора, таблицы объявлений с поддержкой полнотекстового поиска и парой-тройкой дополнительных таблиц для фото и пользователей и ещё какой-нибудь мелочи.
...
Рейтинг: 0 / 0
03.02.2016, 23:47
    #39162485
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
ChAПоследний раз, когда был на avito, не заметил там необходимости в EAV. Объявления в форме сводбодного описания. Достаточно иерархического классификатора, таблицы объявлений с поддержкой полнотекстового поиска и парой-тройкой дополнительных таблиц для фото и пользователей и ещё какой-нибудь мелочи.


Не очень понял, что имеется ввиду под иерархическим классификатором. Напишите, пожалуйста, подробнее (если не сложно с примером)
...
Рейтинг: 0 / 0
04.02.2016, 00:40
    #39162498
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomНе очень понял, что имеется ввиду под иерархическим классификатором. Напишите, пожалуйста, подробнее (если не сложно с примером) http://www.google.ru/search?q=иерархический классификатор

Сейчас заглянул туда, ещё д.б. таблица для связки классификатора и объявлений, так как объявление может принадлежать к нескольким категориям одновременно. Чуть сложнее раздел по недвижимости, по-видимому добавлены дополнительные таблицы характеристик с учетом специфики, EAV там тоже не нужен.
...
Рейтинг: 0 / 0
04.02.2016, 00:53
    #39162504
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
ChA,

Допустим вся иерархия категорий будет представлена в таблице как NestedSets:

- Транспорт/Автомобили/Ford/Focus
- Работа/Вакансии/IT, интернет, телеком

А как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы?
...
Рейтинг: 0 / 0
04.02.2016, 01:14
    #39162509
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomДопустим вся иерархия категорий будет представлена в таблице как NestedSets:

- Транспорт/Автомобили/Ford/Focus
- Работа/Вакансии/IT, интернет, телекомIMHO, NestedSet не лучший вариант хранения иерархии, но хозяин - барин. Если иерархия достаточно стабильная, то можно и её использовать, хотя запросы, на мой взгляд, бывают сложноваты.
capscomА как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы?Если обратите внимание, то у них только в нескольких категориях есть уточняющие характеристики, так что отдельных таблиц более чем достаточно. Вы же не пытаетесь сделать универсальную БД на всё во Вселенной ?
...
Рейтинг: 0 / 0
04.02.2016, 01:24
    #39162512
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
ChAcapscomДопустим вся иерархия категорий будет представлена в таблице как NestedSets:

- Транспорт/Автомобили/Ford/Focus
- Работа/Вакансии/IT, интернет, телекомIMHO, NestedSet не лучший вариант хранения иерархии, но хозяин - барин. Если иерархия достаточно стабильная, то можно и её использовать, хотя запросы, на мой взгляд, бывают сложноваты.
capscomА как вы предлагается хранить различные свойства ? На каждый тип (Транспорт, Работа) - отдельные таблицы?Если обратите внимание, то у них только в нескольких категориях есть уточняющие характеристики, так что отдельных таблиц более чем достаточно. Вы же не пытаетесь сделать универсальную БД на всё во Вселенной ?

Спасибо большое ) Теперь ясно ) Нет, вовсе не универсальную. Просто интересно, какие из вариантов наиболее жизнеспособны в действующих проектах.
...
Рейтинг: 0 / 0
04.02.2016, 01:45
    #39162518
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomкакие из вариантов наиболее жизнеспособны в действующих проектах.Вариантов реализации всегда много, зависит от многих причин, начиная с нормальной постановки задачи. Поэтому сферические проекты рассматривать, как правило, бесполезно, просто бесплодная игра разума.
...
Рейтинг: 0 / 0
04.02.2016, 02:08
    #39162521
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
[quot capscom

Возьмем за пример avito и его объявления с разными свойствами для категории. Подскажите, пожалуйста, жизнеспособна ли структура EAV на такой объем данных в реляционной бд?


да, вполне.

EAV дорожает только в одном -- когда надо писать аналитические запросы
типа отчетов. В сети есть статья А. Тенцера на эту тему, там все расписано.

Или же лучше использовать иные подходы:

1. На каждую категорию товаров - своя таблица.

EAV дает возможность конечному пользователю бд без программистов добавлять новые свойства налету. Наследование (что ты предлагаешь) же наоборот этого не дает. так что это не совсем ранозначные подходы, но в некоторых пределах они взаимозаменяемы.

2. Использовать не реляционные бд, например, MongoDB.

это вообще бред. Даже обсуждать не хочу.
...
Рейтинг: 0 / 0
04.02.2016, 02:11
    #39162522
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomDimitry Sibiryakovпропущено...

Да.


Что да?)) Меня интересует на основании каких критериев можно определиться нужен ли EAV или же иные подходы?


Тренцера найди,почитай.

нужно добавлять атрибуты на лету - нужен EAV,
не нужно - можно не EAV, а что-то другое.
...
Рейтинг: 0 / 0
04.02.2016, 08:35
    #39162587
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomSERG1257, поддерживаю




Задача:
Каждая категория имеет свои свойства разных типов (text, checkbox, int). Необходимо дать пользователю возможность размещать объявления в различных категориях, а так же фильтровать объявления по заданным свойствам.

Рассмотрим подход EAV.

Его основным плюсом будет гибкость добавления новых свойств для категории.

Недостатки:
1. Есть громоздкость в сборе данных(или их группе),
2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных.
3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять.
4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?)




пункты 2,3,4 - бред, из цикла "я не умею готовить".

1 решается генераторами типичных запросов.
...
Рейтинг: 0 / 0
04.02.2016, 09:46
    #39162642
capscom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
MasterZiv, а есть пример "правильной готовки" ?
...
Рейтинг: 0 / 0
04.02.2016, 09:59
    #39162658
Mr.Fontaine
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomНедостатки:
3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять.

А вот это зачем делать?
В таблице свойств есть поле с дефолтным значением. если значения свойства нет в таблице знаечний, то берём дефолтное значение из таблицы свойств

P.S. Ну если нет желания иметь null значения в таблицах (а они будут в поле с дефолтным значением, когда по условиям задачи свойство не будет иметь такого значения), создай отдельную таблицу дефолтных значений свойств. Но всё равно дефолтное значение свойства будет храниться в одном поле, а не по всем объявлениям
...
Рейтинг: 0 / 0
04.02.2016, 10:17
    #39162680
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жизнеспособен ли EAV ?
capscomMasterZiv, а есть пример "правильной готовки" ?

2. Некоторые свойства могут быть связанными (бренд-модель) и их придется выносить в отдельные таблицы, что еще больше увеличит громоздкость запросом при сборке данных.


Делаешь подкатегорию основной категории, и там заводишь атрибуты, и делов.


3. При добавлении нового свойства с дефолтным значением, придется бежать по всей группе объявлений и его проставлять.

Хранишь дефолт в словаре атрибутов и подставляешь в каждом запросе, если значение атрибута не указано явно.


4. Значения всех свойств varchar (возможные проблемы с индексацией и фильтрацией по атрибуту?)


Хранишь значения свойств в разных таблицах в соответствии с их типом данных.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Жизнеспособен ли EAV ? / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]