|
|
|
стоит ли использовать 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 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
БредятинаOLEG_2005Здравствуйте. Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров. Помогает ли ограничение числа параметров обойти использование EAV? Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким. Спасибо. Судя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV? Честно говоря ваша непонятна. Что вы имеете в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:10 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу" Не нужно для этого никакого транспонирования таблицы. OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV? Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:38 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу" Не нужно для этого никакого транспонирования таблицы. OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV? Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться? Да, пользователи системы могут создавать для каждого из списка пользователей динамические атрибуты, которые должны содержать подписчики данного списка. Например для всех подписчиков есть общие атрибуты для всех, например, email. Каждый пользователь системы, который управляет подписчиками должен создавать до нескольких десятков динамических атрибутов. Скриншот аналогичной системы, email обязательное общее поле, остальные могут добавляться и удаляться теми, кто управляет своими списками подписчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:50 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу" Не нужно для этого никакого транспонирования таблицы. OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV? Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться? Этот скриншот показывает данную функциональность в аналогичной системе. Для каждого списка подписчиков можем динамически добавлять/удалять атрибуты (кроме обязательных) и данные атрибуты должны храниться и редактироваться для подписчиков данного списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:53 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу" Не нужно для этого никакого транспонирования таблицы. Извините не совсем понятна ваша мысль. Если я получаю из БД массив вида subscriber_id field value 1 field1 value1 1 field2 value2 2 field1 value1 2 field2 value для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 10:59 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "?Я имею в виду именно этот массив: subscriber_id field value 1 field1 value1 1 field2 value2 2 field1 value1 2 field2 value Именно его и можно передавать. Если у вас есть какой-то загадочный "Вид", которому такая форма не подойдёт, то можно либо поправить этот "Вид", либо в слое доступа к данным сделать преобразователь (это-же в принципе небольшой и простой код, да и универсальный, лучьше его написать, чем делать динамический SQL с десятками джойнов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 11:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
alexeyvgOLEG_2005для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "?Я имею в виду именно этот массив: subscriber_id field value 1 field1 value1 1 field2 value2 2 field1 value1 2 field2 value Именно его и можно передавать. Если у вас есть какой-то загадочный "Вид", которому такая форма не подойдёт, то можно либо поправить этот "Вид", либо в слое доступа к данным сделать преобразователь (это-же в принципе небольшой и простой код, да и универсальный, лучьше его написать, чем делать динамический SQL с десятками джойнов) Да, динамический SQL с десятками джойнов выглядит не очень здорово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 11:15 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Дело в том, что система предполагается использоваться для разных клиентов, которые должны отправлять рассылки своим подписчиками и управлять списками подписчиков. Клиенты должны иметь возможность создать списко динамических параметров для каждого списка подписчиков и эти атрибуты должны храниться для подписчиков этого списка. Полагаю нужды клиентов разные, одни, допустим могут захотеть храниться для своих подписчиков только email (обязательное), имя, фамилию, другие допустим дату также дату рождения клиента, его адрес и так далее. Данные разных клиентов хранятся в одной базе данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:15 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:34 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV?Функционально - может быть. С точки зрения эксплуатации системы - нет. ALTER TABLE может оказаться слишком дорогой операцией, да еще, скорее всего, требующей монопольного доступа к таблице. В MySQL, например, ALTER TABLE часто выполняется как создание новой таблицы с нужными полями и переписывание всех данных из старой таблицы в новую. В местном MySQL-подфоруме был топик, в котором ALTER TABLE выполнялся несколько часов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:41 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV?Функционально - может быть. С точки зрения эксплуатации системы - нет. ALTER TABLE может оказаться слишком дорогой операцией, да еще, скорее всего, требующей монопольного доступа к таблице. В MySQL, например, ALTER TABLE часто выполняется как создание новой таблицы с нужными полями и переписывание всех данных из старой таблицы в новую. В местном MySQL-подфоруме был топик, в котором ALTER TABLE выполнялся несколько часов. Для большой таблицы данной способ неприменим. А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 16:45 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу. Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен. OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы). Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте. Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:00 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу. Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен. OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы). Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте. Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить. Используется MYSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:06 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Используется MYSQL.Тогда лучше забудьте про ALTER TABLE. Да и с EAV-ом может понадобиться ручная оптимизация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:07 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу. Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен. OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы). Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте. Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить. А чем может быть вызвана деградация производительности из-за большого количества таблиц в системе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005А чем может быть вызвана деградация производительности из-за большого количества таблиц в системе?1) С нехваткой кэша открытых таблиц в MySQL 2) с тормозами на уровне файловой системы из-за большого количества файлов в каталоге (если используется MyISAM или InnoDB с включенной опцией innodb_file_per_table ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2010, 17:18 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
авторА чем может быть вызвана деградация производительности из-за большого количества таблиц в системе? про такое еще слышать не доводилось. очень будет интересно посмотреть на человека который будет въезжать в базу с парой тысяч таких таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 01:51 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторА чем может быть вызвана деградация производительности из-за большого количества таблиц в системе? про такое еще слышать не доводилось. очень будет интересно посмотреть на человека который будет въезжать в базу с парой тысяч таких таблиц. Возможно в данном случает такой подход и не даст каких-то выгод. Но судя по всему такой подход иногда используется используется. Можете посмотреть здесь: http://msdn.microsoft.com/en-us/library/aa479086.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:27 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 12.10.2010 17:34, OLEG_2005 wrote: > Кстати, интересно ваше мнение, использование изменение структуры таблицы с > помощью ALTER TABLE может ли рассматриваться, как аналог EAV? В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:44 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 12.10.2010 18:18, miksoft wrote: > 1) С нехваткой кэша открытых таблиц > <http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_table_cache> > в MySQL > 2) с тормозами на уровне файловой системы из-за большого количества файлов в > каталоге (если используется MyISAM или InnoDB с включенной опцией > innodb_file_per_table miksoft, ты людей -то не пугай особенностями этой не-до-СУБД. Это всё сугубо дебилизм архитектуры MySQL-ля. Дело в том, что просто т.н. горизонтальное партицирование таблиц (если это не физическое парт., поддерживаемое самой СУБД) -- это по моему мнению страшное нарушение правил проектирования РБД. Это грозит всяческими проблемами в будущем жизни БД да и вообще не удобно при необходимости выполнять запросы, обрабатывающие ВСЕ данные какой-то сущности. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:49 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 12.10.2010 17:34, OLEG_2005 wrote: > Кстати, интересно ваше мнение, использование изменение структуры таблицы с > помощью ALTER TABLE может ли рассматриваться, как аналог EAV? В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи. Здесь видимо проблема не в физическом размере одной записи, так как количество атрибутов весьма умеренное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:49 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 12.10.2010 17:34, OLEG_2005 wrote: > Кстати, интересно ваше мнение, использование изменение структуры таблицы с > помощью ALTER TABLE может ли рассматриваться, как аналог EAV? В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи. На данный момент я не вижу альтернативы EAV, несмотря на все недостатки данного подхода. Буду смотреть к чему это приведет и насколько усложнит систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 09:53 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZivmiksoft, ты людей -то не пугай особенностями этой не-до-СУБД. Это всё сугубо дебилизм архитектуры MySQL-ля.OLEG_2005Буду смотреть к чему это приведет и насколько усложнит систему.Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи. Мне доводилось оптимизировать запрос для EAV-таблицы в MySQL - два дня убил. И запрос получился <censored> по своей структуре, читабельности и поддерживаемости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 10:20 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivmiksoft, ты людей -то не пугай особенностями этой не-до-СУБД. Это всё сугубо дебилизм архитектуры MySQL-ля.OLEG_2005Буду смотреть к чему это приведет и насколько усложнит систему.Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи. Мне доводилось оптимизировать запрос для EAV-таблицы в MySQL - два дня убил. И запрос получился <censored> по своей структуре, читабельности и поддерживаемости. А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL? Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 10:32 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL? Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов?Тот запрос был наоборот, для поиска объекта по набору атрибутов. Сначала пытался использовать варианты с множеством JOIN-ов и с GROUP BY ... HAVING COUNT(*)=..., но в итоге пришлось их совмещать. А отображение атрибутов в той системе проблемой не было, так как требовалось отобразить атрибуты ровно одного объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 10:40 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL? Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов?Тот запрос был наоборот, для поиска объекта по набору атрибутов. Сначала пытался использовать варианты с множеством JOIN-ов и с GROUP BY ... HAVING COUNT(*)=..., но в итоге пришлось их совмещать. А отображение атрибутов в той системе проблемой не было, так как требовалось отобразить атрибуты ровно одного объекта. А сами атрибуты вам надо было редактировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 11:43 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005А сами атрибуты вам надо было редактировать?Конкретно в той базе - нет, туда данные переливались из корпоративной базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 11:49 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 13.10.2010 10:49, OLEG_2005 wrote: > Здесь видимо проблема не в физическом размере одной записи, так как количество > атрибутов весьма умеренное. Только в этом и проблема. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 11:58 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 13.10.2010 11:20, miksoft wrote: > Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи. MySQL - не лучшая СУБД для любой задачи. Просто не лучшая СУБД. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 11:59 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 13.10.2010 11:40, miksoft wrote: > Тот запрос был наоборот, для поиска объекта по набору атрибутов. Так это вообще для EAV сложный запрос. Плохой. Отдельный атрибут может быть нифига не селективный, а вместе три - наоборот, высоко селективный критерий. А индекс по совокупности не построить. Для любой СУБД нетривиальная задача. Я MySQL конечно не люблю, но истина дороже. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 12:03 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 13.10.2010 10:49, OLEG_2005 wrote: > Здесь видимо проблема не в физическом размере одной записи, так как количество > атрибутов весьма умеренное. Только в этом и проблема. А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером одной записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 12:12 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физическим размером одной записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 12:13 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 13.10.2010 13:12, OLEG_2005 wrote: > А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером > одной записи? Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это на самом деле и есть основная предпосылка для существования EAV. Это, и требование наличия возможности добавлять новые атрибуты пользователями. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:01 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 13.10.2010 13:12, OLEG_2005 wrote: > А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером > одной записи? Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это на самом деле и есть основная предпосылка для существования EAV. Это, и требование наличия возможности добавлять новые атрибуты пользователями. Я пока не нашел максимальный размер записи для MYSQL, но мне кажется, что несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы, даже, если среди них есть довольно большие по размеру текстовые поля, хотя может быть я и ошибаюсь. Я бы сказал для задачи можно ограничить максимальное количество атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:26 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 13.10.2010 13:12, OLEG_2005 wrote: > А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером > одной записи? Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это на самом деле и есть основная предпосылка для существования EAV. Это, и требование наличия возможности добавлять новые атрибуты пользователями. А вот требование наличие возможности изменения набора атрибутов наверное не оставляет альтернативы использованию EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:28 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Я пока не нашел максимальный размер записи для MYSQLНеубедительно. тынц1 тынц2 это первое, что подвернулось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:37 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Я пока не нашел максимальный размер записи для MYSQLНеубедительно. тынц1 тынц2 это первое, что подвернулось... Большое спасибо за ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 13:47 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде: Amazon SimpleDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:02 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде: Amazon SimpleDB.Зависит от масштабов и нагрузки. Сомневаюсь, что у вас случатся такие нагрузки, что РСУБД станет недостаточно. Даже MySQL-я хватит надолго, если правильно его готовить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:17 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде: Amazon SimpleDB.Зависит от масштабов и нагрузки. Сомневаюсь, что у вас случатся такие нагрузки, что РСУБД станет недостаточно. Даже MySQL-я хватит надолго, если правильно его готовить. Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков. Как я понял в системах подобных Amazon SimpleDB для повышения масштабирования в жертву приносится целостность данных. Может быть я не прав. Похоже такие системы позволяют легко решить задачу переменного числа атрибутов, но не усложняют ли они другие вещи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:46 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков.Ничего не посильного для РСУБД тут не вижу. Тем более, что вы наверняка сильно переоцениваете масштабы. В любом случае - начинайте на любой СУБД, хоть на MySQL. Переписывать все с нуля все равно на определенном этапе придется, когда поймете каких ошибок понаделали и груз этих ошибок станет слишком тяжел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:50 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков.Ничего не посильного для РСУБД тут не вижу. Тем более, что вы наверняка сильно переоцениваете масштабы. В любом случае - начинайте на любой СУБД, хоть на MySQL. Переписывать все с нуля все равно на определенном этапе придется, когда поймете каких ошибок понаделали и груз этих ошибок станет слишком тяжел. Так в общем случае пока и происходит, пытаемся реализовать функциональность, используя MYSQL. Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 17:56 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку.И что тут сложного? Привязывайте набор атрибутов к сегменту, а не к пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 18:08 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку.И что тут сложного? Привязывайте набор атрибутов к сегменту, а не к пользователю. Сложность - работа с подписчиками, которые могу иметь как стандартные атрибуты (храняться в столбцах таблицы подписчиков), так и динамические атрибуты EAV. Логика манипулирования таким подписчиками в списке усложняется, даже например, такая тривиальная операция как вывод всех атрибутов списка со всеми атрибутами (как постоянными, так и динаическими), а таке список групп, куда входит подписчик (с каждым списком может быть связано произвольное число груп, куда могу входить подписчики списка, становится довольно непростой задачей. Тоесть вывод что-то вроде Подписчики списка 1: email (постоянное поле) далее динамические firstname lastname Любимые бренды (название группы) sfff@gmail.com Panasonic, SONY, Toshiba Также усложняется редактирование каждого из атрибутов, некоторые постоянные, некоторые динамические. Это то усложнение, которые видится сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 18:25 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Нашел ссылку на ещё один метод реаклизации набора атрибутов, определяемых пользователем. Её называют the Fixed Table. Предполагается, что число возможных атрибутов определяемых пользователем ограничено. Её можно посмотреть здесь: http://blog.springsource.com/arjen/archives/2008/01/24/storing-custom-fields-in-the-database/ Кто-нибудь пробовал реализовывать похожую модель? Она вообще реализуема на практике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Она вообще реализуема на практике?Вполне реализуема. Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:16 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема. Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов. В чем вы видете проблему помска побъекта по произвольноому набору атрибутов? В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:34 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема. Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов. В чем вы видете проблему помска побъекта по произвольноому набору атрибутов? В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам.MasterZivОтдельный атрибут может быть нифига не селективный, а вместе три - наоборот, высоко селективный критерий. А индекс по совокупности не построить.В данном случае индекс по нескольким атрибутам построить можно, но по всем возможным их комбинациям - нет. Кроме того, большое количество индексов: 1) затрудняет работу оптимизатора. 2) уменьшает производительность всех INSERT/UPDATE/DELETE. И еще - становятся велики шансы налететь на ограничения размера записи, обсуждалось выше. При "утаптывании" размера записи может возникнуть желание использовать специальные типы (числа, даты, время), вместо общего строкового. Что, в свою очередь, приведет к ограничениям по количеству атрубутов каждого типа. Кому-то из клиентов может захотеться 20 дат, а кому-то - 20 чисел. В итоге 20+20 полей в лимит могут не уместиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:44 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
а если рассмотреть в качестве СУБД что-то с xquery... к примеру MSSQL, и хранить "переменный" набор в xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:48 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов. В MySQL лимит, кажется, всего 16 индексов на таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:51 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема. Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов. В чем вы видете проблему помска побъекта по произвольноому набору атрибутов? В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам.MasterZivОтдельный атрибут может быть нифига не селективный, а вместе три - наоборот, высоко селективный критерий. А индекс по совокупности не построить.В данном случае индекс по нескольким атрибутам построить можно, но по всем возможным их комбинациям - нет. Кроме того, большое количество индексов: 1) затрудняет работу оптимизатора. 2) уменьшает производительность всех INSERT/UPDATE/DELETE. И еще - становятся велики шансы налететь на ограничения размера записи, обсуждалось выше. При "утаптывании" размера записи может возникнуть желание использовать специальные типы (числа, даты, время), вместо общего строкового. Что, в свою очередь, приведет к ограничениям по количеству атрубутов каждого типа. Кому-то из клиентов может захотеться 20 дат, а кому-то - 20 чисел. В итоге 20+20 полей в лимит могут не уместиться. Если предположить, что в таблице допустим 20 атрибутов типа varchar(200-250), вроде бы в совокупности они не превышают максимальный размер записи для MYSQL. Предположительно такое максимальное число атрибутов вполне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:53 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов. В MySQL лимит, кажется, всего 16 индексов на таблицу. Интересная мысль. Посмотрю какой-максимальное количество в таблице может быт в MYSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:55 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
Кифирчика если рассмотреть в качестве СУБД что-то с xquery... к примеру MSSQL, и хранить "переменный" набор в xml? В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка. Кроме проблем с поддержанием целостность данным, поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 20:59 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
OLEG_2005В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка ну почему же... сам тесно не работал, но на сколько понимаю xquery и создан от части для того, чтоб работать с вложенными xml данными как полями таблицы OLEG_2005поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам? я думаю там как-то индексируется ) хотя понятно, чудес не бывает, тормоза будут... вопрос - больше или меньше чем с EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 21:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
КифирчикOLEG_2005В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка ну почему же... сам тесно не работал, но на сколько понимаю xquery и создан от части для того, чтоб работать с вложенными xml данными как полями таблицы OLEG_2005поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам? я думаю там как-то индексируется ) хотя понятно, чудес не бывает, тормоза будут... вопрос - больше или меньше чем с EAV? Честно говоря, я не большой знаток xquery. К тому же пока работаем c mysql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 21:15 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
miksoftOLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов. В MySQL лимит, кажется, всего 16 индексов на таблицу. Нашел ссылку: http://www.mysql.ru/docs/man/Features.html. Похоже это относится ещё к более ранним версиям. Там написано: "Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2010, 21:24 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 13.10.2010 14:26, OLEG_2005 wrote: > Я пока не нашел максимальный размер записи для MYSQL, Его надо искать в описании конкретного движка. Это размер страницы минус немного на заголовки. но мне кажется, что > несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы, > даже, если среди них есть довольно большие по размеру текстовые поля, хотя может > быть я и ошибаюсь. размер страницы в современных СУБД обычно 8 или 16 к. Э Это примерно 32-64 поля по 256 байт/символов. Чуть меньше, потому что есть ещё системные данные на страницах и поля ключа записи. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 10:07 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
MasterZiv On 13.10.2010 14:26, OLEG_2005 wrote: > Я пока не нашел максимальный размер записи для MYSQL, Его надо искать в описании конкретного движка. Это размер страницы минус немного на заголовки. но мне кажется, что > несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы, > даже, если среди них есть довольно большие по размеру текстовые поля, хотя может > быть я и ошибаюсь. размер страницы в современных СУБД обычно 8 или 16 к. Э Это примерно 32-64 поля по 256 байт/символов. Чуть меньше, потому что есть ещё системные данные на страницах и поля ключа записи. Вполне возможно, что 20 полей по 255 байт было бы приемлемым решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 10:11 |
|
||
|
стоит ли использовать EAV, если число параметров ограничено
|
|||
|---|---|---|---|
|
#18+
On 14.10.2010 11:11, OLEG_2005 wrote: > Вполне возможно, что 20 полей по 255 байт было бы приемлемым решением. Ну, думай. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 10:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1542492]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 447ms |

| 0 / 0 |
