powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / стоит ли использовать EAV, если число параметров ограничено
25 сообщений из 85, страница 2 из 4
стоит ли использовать 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
25 сообщений из 85, страница 2 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / стоит ли использовать EAV, если число параметров ограничено
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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