powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / стоит ли использовать EAV, если число параметров ограничено
85 сообщений из 85, показаны все 4 страниц
стоит ли использовать EAV, если число параметров ограничено
    #36892117
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров.
Помогает ли ограничение числа параметров обойти использование EAV?
Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким.
Спасибо.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892156
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть EAV не в количестве атрибутов, а в их неизвестности на момент проектирования БД и частой изменчивости в процессе эксплуатации.

Само по себе число атрибутов ни о чем не говорит. Дьявол, как всегда, кроется в деталях. Некоторые из которых вообще прямого отношения к БД не имеют.
Например "быстродействие запроса например на получение атрибутов становится недопустимо низким" - "недопустимо" - это сколько? А запрос оптимизирован и вообще правильно написан?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892177
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Привожу вполне конкретный пример - получение всех атрибутов сущности.
Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутов.
Чем больше атрибутов, тем меньше быстродействие запроса и с ростом числа атрибутов быстродействие данного запроса быстро падает, ведь так?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892186
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Привожу вполне конкретный пример - получение всех атрибутов сущности.
Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутовВовсе не обязательно. См. http://www.sql.ru/faq/faq_topic.aspx?fid=210
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892210
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftСуть EAV не в количестве атрибутов, а в их неизвестности на момент проектирования БД и частой изменчивости в процессе эксплуатации.

Само по себе число атрибутов ни о чем не говорит. Дьявол, как всегда, кроется в деталях. Некоторые из которых вообще прямого отношения к БД не имеют.
Например "быстродействие запроса например на получение атрибутов становится недопустимо низким" - "недопустимо" - это сколько? А запрос оптимизирован и вообще правильно написан?

При увеличении количества атрибутов число операций, необходимое для получения всех значений атрибутов будет сильно расти. Так что данный запрос вряд ли можно назвать эффективным.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892212
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Привожу вполне конкретный пример - получение всех атрибутов сущности.
Чтобы решиться задачу на SQL нужно сделать столько объединений, сколько динамических атрибутовВовсе не обязательно. См. http://www.sql.ru/faq/faq_topic.aspx?fid=210

Спасибо за ссылку, сейчас посмотрю.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892300
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892391
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Спасибо за подробный ответ.
То есть, если у меня есть контейнер с сущностями, которые могут иметь динамические параметры, список параметров, хранится в связанной с контейнером таблицы, то вполне примелемым выглядит решение: получить для данного контейнера список объектов, динамически сформировать запрос для вывода сущностей контейнера с объединениями (число которых равно числу параметров контейнера сущностей)?
Список атрибутов задается пользователем, но количество их можно ограничить нескольким десятком.
Альтернативой казалось помещение атрибутов в дополнительные поля таблицы сущностей, которые могли бы использоваться, если нужно дополнительные параметры, но в этом случае система вряд ли получится проще. Атрибуты могут добавляться и удаляться, нужна знать в какую колонку добовлять параметр, да и запросы тоже не кажутся в этом случае простыми.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892599
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.10.2010 13:41, OLEG_2005 wrote:

> То есть, если у меня есть контейнер с сущностями, которые могут иметь
> динамические параметры, список параметров, хранится в связанной с контейнером
> таблицы, то вполне примелемым выглядит решение: получить для данного контейнера
> список объектов, динамически сформировать запрос для вывода сущностей контейнера
> с объединениями (число которых равно числу параметров контейнера сущностей)?

Я проблем не вижу. Ты видешь ? Какие ?

> Альтернативой казалось помещение атрибутов в дополнительные поля таблицы
> сущностей, которые могли бы использоваться, если нужно дополнительные параметры,
> но в этом случае система вряд ли получится проще.

Она не будет регулярной структуры. Это точно.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892623
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении).Конечно, только так. Что за идеи делать кучу джойнов и т.п.???
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892830
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 11.10.2010 13:41, OLEG_2005 wrote:

> То есть, если у меня есть контейнер с сущностями, которые могут иметь
> динамические параметры, список параметров, хранится в связанной с контейнером
> таблицы, то вполне примелемым выглядит решение: получить для данного контейнера
> список объектов, динамически сформировать запрос для вывода сущностей контейнера
> с объединениями (число которых равно числу параметров контейнера сущностей)?

Я проблем не вижу. Ты видешь ? Какие ?

> Альтернативой казалось помещение атрибутов в дополнительные поля таблицы
> сущностей, которые могли бы использоваться, если нужно дополнительные параметры,
> но в этом случае система вряд ли получится проще.

Она не будет регулярной структуры. Это точно.



Это приводит к усложению системы, но в данном случае видимо это неизбежно.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36892838
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgOLEG_2005либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении).Конечно, только так. Что за идеи делать кучу джойнов и т.п.???

В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится усложнение приложения в этом случае.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893385
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.10.2010 16:26, OLEG_2005 wrote:
> В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится
> усложнение приложения в этом случае.

На самом -то деле приложению как раз должно быть достаточно всё равно, как
получать атрибуты. Разве что шняги типа Delphi & VisualBasic нельзя будет
в лоб применять.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893402
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivРазве что шняги типа Delphi & VisualBasic нельзя будет в лоб применять.Кстати, пару лет назад мне попадалось упоминание датасета для Delphi, который понимает выборку из EAV без поворота и "поворачивает" выборку уже в памяти. Может, оно и сейчас есть...
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893407
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 11.10.2010 16:26, OLEG_2005 wrote:
> В книге Pragmatic SQL Pattern рекомендуется делать так, но мне не нравится
> усложнение приложения в этом случае.

На самом -то деле приложению как раз должно быть достаточно всё равно, как
получать атрибуты. Разве что шняги типа Delphi & VisualBasic нельзя будет
в лоб применять.


Используется PHP. Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893412
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893422
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?


Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе).
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893425
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе).Хм, спрошу по-другому. Что получается в результате выполнения запроса? HTML-страничка?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893436
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005miksoftOLEG_2005Усложение в том, что данные нужно в приложении пробрезовать в таблицную форму.А что есть "приложение" ?Приложение рассылки спискам подписчикам, каждый список может содержать список дополительных атрибутов, которые должны содержать подписчика данного списка. Нужно осуществить возножность как отправку всему списку подписчиков, так и некоторому сегменту на основе атрибутов подписчиков список (динамических в том числе).Хм, спрошу по-другому. Что получается в результате выполнения запроса? HTML-страничка?

Простите, не совсем понятно, какой запрос вы имеет в виду. Сейсас нужно получить список подписчиков списка со всему атрибутами и группами куда подписчик входит. Эти данные предполагается нужны для манипулирования ими с помощью веб-интерфейса. Или или вы имеете в виду что-либо ещё?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893444
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893456
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности.

В данном случае, наверное, можно получить массив, где каждый элемент представлет собой что-то врде
сущность, список атрибутов и в приложение обрабатывать данные.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893457
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности.

Прада код в этом случае будет выглядеть очень уж некрасиво.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893463
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности.

На самом деле все несколько сложенее так как у подписчиков есть общие для всех атрибуты, которые сейчас храняться в таблице подписчиков.
Редактировани в этом случае также усложняется не знаю пока насколько, но видимо это неизбежно.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893549
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Или или вы имеете в виду что-либо ещё?Я имею в виду, что для генерации HTML-таблицы (это которая в тэге <table>) из результата запроса "получение всех атрибутов сущности" нет необходимости ни применять кучу JOIN-ов в этом запросе, ни даже транспонирование, на которое я давал ссылку. Достаточно выбирать эти атрибуты в нужном порядке в пределах каждой сущности.

Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893620
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Здравствуйте.
Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров.
Помогает ли ограничение числа параметров обойти использование EAV?
Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким.
Спасибо.
Судя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36893991
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БредятинаOLEG_2005Здравствуйте.
Скажите, пожалуйста, стоит ли по вашему опыту использовать EAV, если допустим количество атрибутов (атрибуты могут быть разных типов) ограничено допустим нескольким десятком. Одним из преимуществ EAV является возможность добавления неограниченного числа параметров.
Помогает ли ограничение числа параметров обойти использование EAV?
Если использовать EAV и допустим есть несколько десятков параметров и необходимо вывести все параметры сущности, то нужно либо делать либо сложные запросы с несколькими десятками объединения (кажется, что с ростом числа атрибутов быстродействие будет падать экспоненциально) , либо получать значения атрибутов не в столбцах, а в строках и обрабатывать полученный массив данных в приложении). Можете ли дать рекомандации по поводу того, при каком числе параметров быстродействие запроса например на получение атрибутов становится недопустимо низким.
Спасибо.
Судя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV?


Честно говоря ваша непонятна. Что вы имеете в виду?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894049
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу"
Не нужно для этого никакого транспонирования таблицы.

OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV?

Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894086
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу"
Не нужно для этого никакого транспонирования таблицы.

OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV?

Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться?


Да, пользователи системы могут создавать для каждого из списка пользователей динамические атрибуты, которые должны содержать подписчики данного списка.
Например для всех подписчиков есть общие атрибуты для всех, например, email. Каждый пользователь системы, который управляет подписчиками должен создавать до нескольких десятков динамических атрибутов. Скриншот аналогичной системы, email обязательное общее поле, остальные могут добавляться и удаляться теми, кто управляет своими списками подписчиков.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894091
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу"
Не нужно для этого никакого транспонирования таблицы.

OLEG_2005БредятинаСудя по всему Вы используете какую-то странную СУБД, в которой нельзя добавлять неограниченное число характеристик объекта (или, другими словами, неограниченное число колонок в таблицу)? И поэтому Вам приходится задумываться о EAV?

Честно говоря ваша непонятна. Что вы имеете в виду?Непонятно, зачем тут EAV. У вас будут каждый день новые атрибуты появляться?

Этот скриншот показывает данную функциональность в аналогичной системе. Для каждого списка подписчиков можем динамически добавлять/удалять атрибуты (кроме обязательных) и данные атрибуты должны храниться и редактироваться для подписчиков данного списка.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894113
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgOLEG_2005Хотелось бы отделить логику приложения от логики вывода и передать объекта Вида массив, который представляет собой таблицу. Преобразование может потребовать опреленных затрат.Ничего не мешает передавать атрибуты как "объект Вида массив, который представляет собой таблицу"
Не нужно для этого никакого транспонирования таблицы.


Извините не совсем понятна ваша мысль. Если я получаю из БД массив вида
subscriber_id field value
1 field1 value1
1 field2 value2
2 field1 value1
2 field2 value

для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894151
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "?Я имею в виду именно этот массив:
subscriber_id field value
1 field1 value1
1 field2 value2
2 field1 value1
2 field2 value
Именно его и можно передавать.

Если у вас есть какой-то загадочный "Вид", которому такая форма не подойдёт, то можно либо поправить этот "Вид", либо в слое доступа к данным сделать преобразователь (это-же в принципе небольшой и простой код, да и универсальный, лучьше его написать, чем делать динамический SQL с десятками джойнов)
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36894161
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgOLEG_2005для того чтобы просто вывести в Виде данные надо преобразовать в таблицу. Что вы имеете в виду говоря "передавать атрибуты как "объект Вида массив, который представляет собой таблицу" "?Я имею в виду именно этот массив:
subscriber_id field value
1 field1 value1
1 field2 value2
2 field1 value1
2 field2 value
Именно его и можно передавать.

Если у вас есть какой-то загадочный "Вид", которому такая форма не подойдёт, то можно либо поправить этот "Вид", либо в слое доступа к данным сделать преобразователь (это-же в принципе небольшой и простой код, да и универсальный, лучьше его написать, чем делать динамический SQL с десятками джойнов)

Да, динамический SQL с десятками джойнов выглядит не очень здорово.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895173
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что система предполагается использоваться для разных клиентов, которые должны отправлять рассылки своим подписчиками и управлять списками подписчиков. Клиенты должны иметь возможность создать списко динамических параметров для каждого списка подписчиков и эти атрибуты должны храниться для подписчиков этого списка. Полагаю нужды клиентов разные, одни, допустим могут захотеть храниться для своих подписчиков только email (обязательное), имя, фамилию,
другие допустим дату также дату рождения клиента, его адрес и так далее. Данные разных клиентов хранятся в одной базе данных.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895258
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895279
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV?Функционально - может быть. С точки зрения эксплуатации системы - нет. ALTER TABLE может оказаться слишком дорогой операцией, да еще, скорее всего, требующей монопольного доступа к таблице. В MySQL, например, ALTER TABLE часто выполняется как создание новой таблицы с нужными полями и переписывание всех данных из старой таблицы в новую. В местном MySQL-подфоруме был топик, в котором ALTER TABLE выполнялся несколько часов.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895299
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Кстати, интересно ваше мнение, использование изменение структуры таблицы с помощью ALTER TABLE может ли рассматриваться, как аналог EAV?Функционально - может быть. С точки зрения эксплуатации системы - нет. ALTER TABLE может оказаться слишком дорогой операцией, да еще, скорее всего, требующей монопольного доступа к таблице. В MySQL, например, ALTER TABLE часто выполняется как создание новой таблицы с нужными полями и переписывание всех данных из старой таблицы в новую. В местном MySQL-подфоруме был топик, в котором ALTER TABLE выполнялся несколько часов.

Для большой таблицы данной способ неприменим.
А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895346
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу.
Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен.
OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы).
Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте.

Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895366
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу.
Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен.
OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы).
Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте.

Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить.

Используется MYSQL.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895373
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Используется MYSQL.Тогда лучше забудьте про ALTER TABLE.
Да и с EAV-ом может понадобиться ручная оптимизация.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895386
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Для большой таблицы данной способ неприменим.Все-таки зависит от СУБД и от деталей. Например, в Оракле добавление поля в таблицу с дефолтным NULL-значением в конец списка полей - достаточно быстрая опреация, т.к. затрагивает только словарь, но не затрагивает саму таблицу.
Но, сами понимаете, если удастся ужиться в рамках какой-то конкретной СУБД, то на другие СУБД переезд, скорее всего, будет невозможен.
OLEG_2005А если для каждого списка пользователей использовать отдельную таблицу и количество подписчиков в не было бы умеренное (ну скажем максим несколько десятков, максимум тысяч, а во многих несколько тысяч)?Во-первых, можно получить деградацию общей производительности из-за роста количества таблиц (если их количество будет измеряться многими тысячами) и из-за накладных расходов на ALTER TABLE (если используемая СУБД будет производить перестройку таблицы).
Во-вторых, это может сделать невозможным/затруднительным одновременную работу нескольких человек в одном аккаунте.

Еще один момент - ALTER TABLE невозможно выполнить в рамках транзакции. Т.е. он закоммитит транзакцию, если она была открыта на тот момент, и его самого невозможно откатить.

А чем может быть вызвана деградация производительности из-за большого количества таблиц в системе?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36895401
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005А чем может быть вызвана деградация производительности из-за большого количества таблиц в системе?1) С нехваткой кэша открытых таблиц в MySQL
2) с тормозами на уровне файловой системы из-за большого количества файлов в каталоге (если используется MyISAM или InnoDB с включенной опцией innodb_file_per_table )
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896020
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА чем может быть вызвана деградация производительности из-за большого количества таблиц в системе?
про такое еще слышать не доводилось. очень будет интересно посмотреть на человека который будет въезжать в базу с парой тысяч таких таблиц.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896223
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторА чем может быть вызвана деградация производительности из-за большого количества таблиц в системе?
про такое еще слышать не доводилось. очень будет интересно посмотреть на человека который будет въезжать в базу с парой тысяч таких таблиц.

Возможно в данном случает такой подход и не даст каких-то выгод. Но судя по всему такой подход иногда используется используется. Можете посмотреть здесь:
http://msdn.microsoft.com/en-us/library/aa479086.aspx
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896261
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 12.10.2010 17:34, OLEG_2005 wrote:
> Кстати, интересно ваше мнение, использование изменение структуры таблицы с
> помощью ALTER TABLE может ли рассматриваться, как аналог EAV?

В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно
не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896268
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896270
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 12.10.2010 17:34, OLEG_2005 wrote:
> Кстати, интересно ваше мнение, использование изменение структуры таблицы с
> помощью ALTER TABLE может ли рассматриваться, как аналог EAV?

В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно
не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи.


Здесь видимо проблема не в физическом размере одной записи, так как количество атрибутов весьма умеренное.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896279
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 12.10.2010 17:34, OLEG_2005 wrote:
> Кстати, интересно ваше мнение, использование изменение структуры таблицы с
> помощью ALTER TABLE может ли рассматриваться, как аналог EAV?

В смысле, как альтернатива EAV ? Бредятина это. Я уже писал, очень сильно
не на-ALTER-иш, быстро упрёшься в физический предел размера одной записи.


На данный момент я не вижу альтернативы EAV, несмотря на все недостатки данного подхода. Буду смотреть к чему это приведет и насколько усложнит систему.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896338
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmiksoft, ты людей -то не пугай особенностями этой не-до-СУБД.
Это всё сугубо дебилизм архитектуры MySQL-ля.OLEG_2005Буду смотреть к чему это приведет и насколько усложнит систему.Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи.
Мне доводилось оптимизировать запрос для EAV-таблицы в MySQL - два дня убил. И запрос получился <censored> по своей структуре, читабельности и поддерживаемости.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896362
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMasterZivmiksoft, ты людей -то не пугай особенностями этой не-до-СУБД.
Это всё сугубо дебилизм архитектуры MySQL-ля.OLEG_2005Буду смотреть к чему это приведет и насколько усложнит систему.Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи.
Мне доводилось оптимизировать запрос для EAV-таблицы в MySQL - два дня убил. И запрос получился <censored> по своей структуре, читабельности и поддерживаемости.

А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL?
Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896380
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL?
Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов?Тот запрос был наоборот, для поиска объекта по набору атрибутов.
Сначала пытался использовать варианты с множеством JOIN-ов и с GROUP BY ... HAVING COUNT(*)=..., но в итоге пришлось их совмещать.

А отображение атрибутов в той системе проблемой не было, так как требовалось отобразить атрибуты ровно одного объекта.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896554
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005А можно узнать, с каким проблемами вы сталкивались при использовании MYSQL? Какие запросы было трудно оптимизировать в MYSQL?
Вы использовали множество JOIN для вывода всех атрибутов или получали атрибуты в строках и выполняли обрабтку в программе, если вам нужно было выводить сущность со значениями атрибутов?Тот запрос был наоборот, для поиска объекта по набору атрибутов.
Сначала пытался использовать варианты с множеством JOIN-ов и с GROUP BY ... HAVING COUNT(*)=..., но в итоге пришлось их совмещать.

А отображение атрибутов в той системе проблемой не было, так как требовалось отобразить атрибуты ровно одного объекта.

А сами атрибуты вам надо было редактировать?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896571
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005А сами атрибуты вам надо было редактировать?Конкретно в той базе - нет, туда данные переливались из корпоративной базы.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896609
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.10.2010 10:49, OLEG_2005 wrote:

> Здесь видимо проблема не в физическом размере одной записи, так как количество
> атрибутов весьма умеренное.

Только в этом и проблема.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896613
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.10.2010 11:20, miksoft wrote:

> Не могу не согласиться с MasterZiv, MySQL - не лучшая СУБД для такой задачи.

MySQL - не лучшая СУБД для любой задачи. Просто не лучшая СУБД.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896626
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.10.2010 11:40, miksoft wrote:

> Тот запрос был наоборот, для поиска объекта по набору атрибутов.

Так это вообще для EAV сложный запрос. Плохой.
Отдельный атрибут может быть нифига не селективный, а вместе три -
наоборот, высоко селективный критерий. А индекс по совокупности
не построить. Для любой СУБД нетривиальная задача. Я MySQL конечно
не люблю, но истина дороже.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896663
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 13.10.2010 10:49, OLEG_2005 wrote:

> Здесь видимо проблема не в физическом размере одной записи, так как количество
> атрибутов весьма умеренное.

Только в этом и проблема.



А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером одной записи?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896669
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физическим размером одной записи?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896836
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.10.2010 13:12, OLEG_2005 wrote:

> А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером
> одной записи?

Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен
физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это
на самом деле и есть основная предпосылка для существования EAV. Это, и
требование наличия возможности добавлять новые атрибуты пользователями.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896912
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 13.10.2010 13:12, OLEG_2005 wrote:

> А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером
> одной записи?

Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен
физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это
на самом деле и есть основная предпосылка для существования EAV. Это, и
требование наличия возможности добавлять новые атрибуты пользователями.


Я пока не нашел максимальный размер записи для MYSQL, но мне кажется, что несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы, даже, если среди них есть довольно большие по размеру текстовые поля, хотя может быть я и ошибаюсь. Я бы сказал для задачи можно ограничить максимальное количество атрибутов.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896918
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 13.10.2010 13:12, OLEG_2005 wrote:

> А могли бы пояснить, что вы имеете в виду, говоря о проблеме с физиским размером
> одной записи?

Я ж писал. Суммарный размер одной строки в СУБД в большинстве СУБД ограничен
физически. Кол-во атрибутов в строке тоже часто имеет верхний порог. Это
на самом деле и есть основная предпосылка для существования EAV. Это, и
требование наличия возможности добавлять новые атрибуты пользователями.


А вот требование наличие возможности изменения набора атрибутов наверное не оставляет альтернативы использованию EAV.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896938
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Я пока не нашел максимальный размер записи для MYSQLНеубедительно.
тынц1
тынц2
это первое, что подвернулось...
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36896966
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Я пока не нашел максимальный размер записи для MYSQLНеубедительно.
тынц1
тынц2
это первое, что подвернулось...

Большое спасибо за ссылки.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897614
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде:
Amazon SimpleDB.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897663
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде:
Amazon SimpleDB.Зависит от масштабов и нагрузки. Сомневаюсь, что у вас случатся такие нагрузки, что РСУБД станет недостаточно. Даже MySQL-я хватит надолго, если правильно его готовить.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897751
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Как вы думаете может для подобных систем нецелесообразно использовать реляционные БД вообще, а использовать что-то вроде:
Amazon SimpleDB.Зависит от масштабов и нагрузки. Сомневаюсь, что у вас случатся такие нагрузки, что РСУБД станет недостаточно. Даже MySQL-я хватит надолго, если правильно его готовить.

Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков.
Как я понял в системах подобных Amazon SimpleDB для повышения масштабирования в жертву приносится целостность данных. Может быть я не прав. Похоже такие системы позволяют легко решить задачу переменного числа атрибутов, но не усложняют ли они другие вещи?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897768
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков.Ничего не посильного для РСУБД тут не вижу. Тем более, что вы наверняка сильно переоцениваете масштабы.
В любом случае - начинайте на любой СУБД, хоть на MySQL. Переписывать все с нуля все равно на определенном этапе придется, когда поймете каких ошибок понаделали и груз этих ошибок станет слишком тяжел.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897793
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Прогнозировать нагрузку сейчас довольно тяжело, если ориентироваться на аналогичные серисы, то это десятки - сотни тысяч клиентов, каждые из которых хранят тысячи - десятки - иногда сотни тысяч подписчиков и которым надо регулярно отправлять рассылки (персонифицированные), которые делает клиент. Каждый клиент может содержать несколько списков подписчиков и отправлять кампанию как все подписчикам списка, так и некоторому сегоменту, который предавлятеся собой набор условий по атрибутам подписчиков.Ничего не посильного для РСУБД тут не вижу. Тем более, что вы наверняка сильно переоцениваете масштабы.
В любом случае - начинайте на любой СУБД, хоть на MySQL. Переписывать все с нуля все равно на определенном этапе придется, когда поймете каких ошибок понаделали и груз этих ошибок станет слишком тяжел.

Так в общем случае пока и происходит, пытаемся реализовать функциональность, используя MYSQL.
Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897831
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку.И что тут сложного?
Привязывайте набор атрибутов к сегменту, а не к пользователю.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36897891
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Сильно усложняет то, что для каждого списка подпичиков может динамически задаваться набор атрибутов, которые должны храниться для подписчиков списка, их нужно редактировать и на основании их в случае необходимости формировать сегменты для отправки рассылки только этому сегменту, а не всему списку.И что тут сложного?
Привязывайте набор атрибутов к сегменту, а не к пользователю.

Сложность - работа с подписчиками, которые могу иметь как стандартные атрибуты (храняться в столбцах таблицы подписчиков), так и динамические атрибуты EAV.
Логика манипулирования таким подписчиками в списке усложняется, даже например, такая тривиальная операция как вывод всех атрибутов списка со всеми атрибутами (как постоянными, так и динаическими), а таке список групп, куда входит подписчик (с каждым списком может быть связано произвольное число груп, куда могу входить подписчики списка, становится довольно непростой задачей.
Тоесть вывод что-то вроде
Подписчики списка 1:
email (постоянное поле) далее динамические firstname lastname Любимые бренды (название группы)
sfff@gmail.com Panasonic, SONY, Toshiba

Также усложняется редактирование каждого из атрибутов, некоторые постоянные, некоторые динамические.
Это то усложнение, которые видится сейчас.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898089
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел ссылку на ещё один метод реаклизации набора атрибутов, определяемых пользователем. Её называют the Fixed Table. Предполагается, что число возможных атрибутов определяемых пользователем ограничено.
Её можно посмотреть здесь:
http://blog.springsource.com/arjen/archives/2008/01/24/storing-custom-fields-in-the-database/
Кто-нибудь пробовал реализовывать похожую модель? Она вообще реализуема на практике?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898098
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005Она вообще реализуема на практике?Вполне реализуема.
Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898117
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема.
Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов.

В чем вы видете проблему помска побъекта по произвольноому набору атрибутов?
В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898129
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема.
Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов.

В чем вы видете проблему помска побъекта по произвольноому набору атрибутов?
В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам.MasterZivОтдельный атрибут может быть нифига не селективный, а вместе три -
наоборот, высоко селективный критерий. А индекс по совокупности
не построить.В данном случае индекс по нескольким атрибутам построить можно, но по всем возможным их комбинациям - нет.

Кроме того, большое количество индексов:
1) затрудняет работу оптимизатора.
2) уменьшает производительность всех INSERT/UPDATE/DELETE.

И еще - становятся велики шансы налететь на ограничения размера записи, обсуждалось выше.
При "утаптывании" размера записи может возникнуть желание использовать специальные типы (числа, даты, время), вместо общего строкового. Что, в свою очередь, приведет к ограничениям по количеству атрубутов каждого типа. Кому-то из клиентов может захотеться 20 дат, а кому-то - 20 чисел. В итоге 20+20 полей в лимит могут не уместиться.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898133
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если рассмотреть в качестве СУБД что-то с xquery... к примеру MSSQL, и хранить "переменный" набор в xml?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898139
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов.
В MySQL лимит, кажется, всего 16 индексов на таблицу.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898143
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005miksoftOLEG_2005Она вообще реализуема на практике?Вполне реализуема.
Только делает весьма затруднительным поиск объекта по произвольному набору атрибутов.

В чем вы видете проблему помска побъекта по произвольноому набору атрибутов?
В этом случае пришлось бы, видимо, добавлять огромное число индексов, для поиска по всем атрибутам.MasterZivОтдельный атрибут может быть нифига не селективный, а вместе три -
наоборот, высоко селективный критерий. А индекс по совокупности
не построить.В данном случае индекс по нескольким атрибутам построить можно, но по всем возможным их комбинациям - нет.

Кроме того, большое количество индексов:
1) затрудняет работу оптимизатора.
2) уменьшает производительность всех INSERT/UPDATE/DELETE.

И еще - становятся велики шансы налететь на ограничения размера записи, обсуждалось выше.
При "утаптывании" размера записи может возникнуть желание использовать специальные типы (числа, даты, время), вместо общего строкового. Что, в свою очередь, приведет к ограничениям по количеству атрубутов каждого типа. Кому-то из клиентов может захотеться 20 дат, а кому-то - 20 чисел. В итоге 20+20 полей в лимит могут не уместиться.

Если предположить, что в таблице допустим 20 атрибутов типа varchar(200-250), вроде бы в совокупности они не превышают максимальный размер записи для MYSQL. Предположительно такое максимальное число атрибутов вполне достаточно.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898145
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов.
В MySQL лимит, кажется, всего 16 индексов на таблицу.

Интересная мысль. Посмотрю какой-максимальное количество в таблице может быт в MYSQL.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898151
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчика если рассмотреть в качестве СУБД что-то с xquery... к примеру MSSQL, и хранить "переменный" набор в xml?

В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка. Кроме проблем с поддержанием целостность данным, поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898166
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLEG_2005В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка
ну почему же... сам тесно не работал, но на сколько понимаю xquery и создан от части для того, чтоб работать с вложенными xml данными как полями таблицы

OLEG_2005поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам?
я думаю там как-то индексируется )
хотя понятно, чудес не бывает, тормоза будут... вопрос - больше или меньше чем с EAV?
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898171
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КифирчикOLEG_2005В этом случае допустим, если вы удалили атрибут из списка, было бы сложно удалить значение этого атрибута у всех подписчиков данного списка
ну почему же... сам тесно не работал, но на сколько понимаю xquery и создан от части для того, чтоб работать с вложенными xml данными как полями таблицы

OLEG_2005поиск по отдельным данным представляется проблематичным, как в этом случае индексировать по атрибутам?
я думаю там как-то индексируется )
хотя понятно, чудес не бывает, тормоза будут... вопрос - больше или меньше чем с EAV?

Честно говоря, я не большой знаток xquery. К тому же пока работаем c mysql.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898177
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftOLEG_2005огромное число индексовКстати, не все СУБД вообще позволят создать такое количество индексов.
В MySQL лимит, кажется, всего 16 индексов на таблицу.

Нашел ссылку: http://www.mysql.ru/docs/man/Features.html.
Похоже это относится ещё к более ранним версиям.
Там написано:
"Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов."
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898610
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 13.10.2010 14:26, OLEG_2005 wrote:

> Я пока не нашел максимальный размер записи для MYSQL,

Его надо искать в описании конкретного движка.
Это размер страницы минус немного на заголовки.

но мне кажется, что
> несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы,
> даже, если среди них есть довольно большие по размеру текстовые поля, хотя может
> быть я и ошибаюсь.

размер страницы в современных СУБД обычно 8 или 16 к. Э
Это примерно 32-64 поля по 256 байт/символов. Чуть меньше,
потому что есть ещё системные данные на страницах и поля
ключа записи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898619
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
On 13.10.2010 14:26, OLEG_2005 wrote:

> Я пока не нашел максимальный размер записи для MYSQL,

Его надо искать в описании конкретного движка.
Это размер страницы минус немного на заголовки.

но мне кажется, что
> несколько десятков атрибутов можно было бы вполне хранить в столбцах таблицы,
> даже, если среди них есть довольно большие по размеру текстовые поля, хотя может
> быть я и ошибаюсь.

размер страницы в современных СУБД обычно 8 или 16 к. Э
Это примерно 32-64 поля по 256 байт/символов. Чуть меньше,
потому что есть ещё системные данные на страницах и поля
ключа записи.


Вполне возможно, что 20 полей по 255 байт было бы приемлемым решением.
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898708
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 14.10.2010 11:11, OLEG_2005 wrote:

> Вполне возможно, что 20 полей по 255 байт было бы приемлемым решением.

Ну, думай.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
стоит ли использовать EAV, если число параметров ограничено
    #36898904
OLEG_2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь сталкивался с документно-ориентированными БД вроде MongoDb?
...
Рейтинг: 0 / 0
85 сообщений из 85, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / стоит ли использовать EAV, если число параметров ограничено
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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