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

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

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

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

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

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

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


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


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


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




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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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


да, вполне.

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

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

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

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

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

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

Да.


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


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

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




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

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

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

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




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

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

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

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

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


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


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

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


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


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


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