|
|
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров. Помогает ли ограничение числа параметров обойти использование EAV? Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:18 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Суть EAV не в количестве атрибутов, а в их неизвестности на момент проектирования БД и частой изменчивости в процессе эксплуатации. Само по себе число атрибутов ни о чем не говорит. Дьявол, как всегда, кроется в деталях. Некоторые из которых вообще прямого отношения к БД не имеют. Например "быстродействие запроса например на получение атрибутов становится недопустимо низким" - "недопустимо" - это сколько? А запрос оптимизирован и вообще правильно написан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:32 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoft, Привожу вполне конкретный пример - получение всех атрибутов сущности. Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутов. Чем больше атрибутов, тем меньше быстродействие запроса и с ростом числа атрибутов быстродействие данного запроса быстро падает, ведь так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:38 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Привожу вполне конкретный пример - получение всех атрибутов сущности. Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутовВовсе не обязательно. См. http://www.sql.ru/faq/faq_topic.aspx?fid=210 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:44 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftСуть EAV не в количестве атрибутов, а в их неизвестности на момент проектирования БД и частой изменчивости в процессе эксплуатации. Само по себе число атрибутов ни о чем не говорит. Дьявол, как всегда, кроется в деталях. Некоторые из которых вообще прямого отношения к БД не имеют. Например "быстродействие запроса например на получение атрибутов становится недопустимо низким" - "недопустимо" - это сколько? А запрос оптимизирован и вообще правильно написан? При увеличении количества атрибутов число операций, необходимое для получения всех значений атрибутов будет сильно расти. Так что данный запрос вряд ли можно назвать эффективным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:51 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Привожу вполне конкретный пример - получение всех атрибутов сущности. Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутовВовсе не обязательно. См. http://www.sql.ru/faq/faq_topic.aspx?fid=210 Спасибо за ссылку, сейчас посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 11:52 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 11.10.2010 12:18, OLEG_2005 wrote: > Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим > количество атрибутов (атрибуты могут быть разных типов) ограничено допустим > нескольким десятком. Одним из преимуществ EAV является возможность добавления > неограниченного числа параметров. Тут не важно число атрибутов, а важно наличие требования на возможность расширения их состава пользователем в процессе эксплуатации системы. Если все атрибуты известны на момент реализации, то EAV как бы не обязательно. Или если готовы согласится на (постоянную) дополнительную работу программистов. > Помогает ли ограничение числа параметров обойти использование EAV? > Если использовать EAV и допустим есть несколько десятков параметров и необходимо > вывести все параметры сущности, то нужно либо делать либо сложные запросы с > несколькими десятками объединения (кажется, что с ростом числа атрибутов > быстродействие будет падать экспоненциально) , Время ещё одного JOIN-а таблицы -- это O( log(N) ) где N -- общее число атрибутов всех сущностей. (предполагается, что для JOIN-а используется индекс, а иначе это безумие). Соответственно, время вывода всех атрибутов будет O( M * log( N ) ) где M -- число атрибутов выводимой сущности. Это ну никак не экспоненциальный рост. А линейный. Ну и на практике либо получать значения атрибутов > не в столбцах, а в строках и обрабатывать полученный массив данных в > приложении). Чем это плохо ? Кстати, время будет ровно такое же. Можете ли дать рекомандации по поводу того, при каком числе > параметров быстродействие запроса например на получение атрибутов становится > недопустимо низким. Думаю, такого нет. Дело в том, что если ты применишь альтернативное решение, (положишь все атрибуты в одну запись), то оно тоже будет неприемлимо, а именно, просто не влезет по ширине в таблицу (как правило, длина одной записи в таблице ограничена в большинстве СУБД). Так что не думай, что EAV -- это какое-то извращение продвинутых эстетов. Это просто подчас единственное решение, способное обойти технические ограничения. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 12:14 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Спасибо за подробный ответ. То есть, если у меня есть контейнер с сущностями, которые могут иметь динамические параметры, список параметров, хранится в связанной с контейнером таблицы, то вполне примелемым выглядит решение: получить для данного контейнера список объектов, динамически сформировать запрос для вывода сущностей контейнера с объединениями (число которых равно числу параметров контейнера сущностей)? Список атрибутов задается пользователем, но количество их можно ограничить нескольким десятком. Альтернативой казалось помещение атрибутов в дополнительные поля таблицы сущностей, которые могли бы использоваться, если нужно дополнительные параметры, но в этом случае система вряд ли получится проще. Атрибуты могут добавляться и удаляться, нужна знать в какую колонку добовлять параметр, да и запросы тоже не кажутся в этом случае простыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 12:41 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 11.10.2010 13:41, OLEG_2005 wrote: > То есть, если у меня есть контейнер с сущностями, которые могут иметь > динамические параметры, список параметров, хранится в связанной с контейнером > таблицы, то вполне примелемым выглядит решение: получить для данного контейнера > список объектов, динамически сформировать запрос для вывода сущностей контейнера > с объединениями (число которых равно числу параметров контейнера сущностей)? Я проблем не вижу. Ты видешь ? Какие ? > Альтернативой казалось помещение атрибутов в дополнительные поля таблицы > сущностей, которые могли бы использоваться, если нужно дополнительные параметры, > но в этом случае система вряд ли получится проще. Она не будет регулярной структуры. Это точно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 13:58 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении).Конечно, только так. Что за идеи делать кучу джойнов и т.п.??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 14:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 11.10.2010 13:41, OLEG_2005 wrote: > То есть, если у меня есть контейнер с сущностями, которые могут иметь > динамические параметры, список параметров, хранится в связанной с контейнером > таблицы, то вполне примелемым выглядит решение: получить для данного контейнера > список объектов, динамически сформировать запрос для вывода сущностей контейнера > с объединениями (число которых равно числу параметров контейнера сущностей)? Я проблем не вижу. Ты видешь ? Какие ? > Альтернативой казалось помещение атрибутов в дополнительные поля таблицы > сущностей, которые могли бы использоваться, если нужно дополнительные параметры, > но в этом случае система вряд ли получится проще. Она не будет регулярной структуры. Это точно. Это приводит к усложению системы, но в данном случае видимо это неизбежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 15:23 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
alexeyvgOLEG_2005либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении).Конечно, только так. Что за идеи делать кучу джойнов и т.п.??? В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится усложнение приложения в этом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 15:26 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 11.10.2010 16:26, OLEG_2005 wrote: > В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится > усложнение приложения в этом случае. На самом -то деле приложению как раз должно быть достаточно всё равно, как получать атрибуты. Разве что шняги типа Delphi & VisualBasic нельзя будет в лоб применять. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:23 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZivРазве что шняги типа Delphi & VisualBasic нельзя будет в лоб применять.Кстати, пару лет назад мне попадалось упоминание датасета для Delphi, который понимает выборку из EAV без поворота и "поворачивает" выборку уже в памяти. Может, оно и сейчас есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:34 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 11.10.2010 16:26, OLEG_2005 wrote: > В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится > усложнение приложения в этом случае. На самом -то деле приложению как раз должно быть достаточно всё равно, как получать атрибуты. Разве что шняги типа Delphi & VisualBasic нельзя будет в лоб применять. Используется PHP. Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:36 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:38 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ? Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:43 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе).Хм, спрошу по-другому. Что получается в результате выполнения запроса? HTML-страничка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:46 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе).Хм, спрошу по-другому. Что получается в результате выполнения запроса? HTML-страничка? Простите, не совсем понятно, какой запрос вы имеет в виду. Сейсас нужно получить список подписчиков списка со всему атрибутами и группами куда подписчик входит. Эти данные предполагается нужны для манипулирования ими с помощью веб-интерфейса. Или или вы имеете в виду что-либо ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:53 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 19:57 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности. В данном случае, наверное, можно получить массив, где каждый элемент представлет собой что-то врде сущность, список атрибутов и в приложение обрабатывать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 20:05 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности. Прада код в этом случае будет выглядеть очень уж некрасиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 20:06 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности. На самом деле все несколько сложенее так как у подписчиков есть общие для всех атрибуты, которые сейчас храняться в таблице подписчиков. Редактировани в этом случае также усложняется не знаю пока насколько, но видимо это неизбежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 20:10 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности. Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 21:18 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Здравствуйте. Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров. Помогает ли ограничение числа параметров обойти использование EAV? Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким. Спасибо. Судя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2010, 22:34 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36893425&tid=1542492]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 572ms |

| 0 / 0 |
