powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
25 сообщений из 30, страница 1 из 2
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624266
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю, знаю, «тынц-тынц-тынц», этот вопрос уже обсуждался. Только обсуждение всегда сводилось к флейму с оффтопом, а статьи однозначного ответа не дают.

Вопрос встал вот почему. Спорим мы с коллегой о структуре БД. Я – «молодой», говорю – давайте возьмём EAV, сначала делать чуть сложнее, потом дорабатывать куда проще. Он – «старый и опытный», а ничего подобного, говорит, и сначала намного сложнее, и потом намного сложнее, и затрат больше на порядок, и триггеры с ХП программисты писать заморочатся. Я говорю – да делал уже, и всё удобно и без проблем, он – так то для 15 пользователей, почти прототип, а у нас будет промышленный масштаб.

Система – не бухгалтерская и не документооборот. Понятно, что взаимосвязанных структур EAV должно быть несколько.

В самой большой структуре EAV может храниться до 100 млн. «объектов», до 10 Тб. Время отклика для создания одного «объекта» – до 1 сек, подключений – до 1000, запись может вестись одновременно с 50, объёмы записи – в 90% до 10 Кб, 10% до 10 Мб. Чтение может вестись одновременно с 5 рабочих мест, кусками по 30 «объектов», время «сбора и выдачи» куска – 3 сек.

В самой «общей» структуре EAV могут храниться объекты до 50 хитро связанных между собой классов. Общий объём там до 1 Гб, но время «сбора и выдачи» 1 объекта – 0,5 сек., чтение «объектов» может вестись одновременно с 300 подключений.

Вкратце подходы EAV и ROT, как я их понимаю, описаны в прикреплённом файле.

Поделитесь, пожалуйста, следующим:

1) Правильно ли я понимаю, что такое ROT, а что такое EAV?

2) Кто-нибудь применял что-то наподобие EAV, Тенцера и иже с ним) для таких объёмов с такой нагрузкой под СУБД MS SQL 2005 или Oracle 10g?

3) Чем лучше в моём случае «собирать» объекты – сервером БД или сервером бизнес-логики? Или лучше вообще не «собирать», а хранить себе каждый класс в отдельной таблице?

4) Кто прав по оценке трудозатрат, я или он? Что легче делать и потом поддерживать - сотни таблиц или хитрые алгоритмы работы с EAV? Что более ресурсоёмко? И есть ли вообще ощутимая разница, стоит ли EAV усилий по его продвижению?
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624409
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся термин) наедитесь так, что небо в овчинку покажется.
Впрочем первый вариант тоже несколько странноват, на мой взгляд.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624422
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Фадеев wrote:
> C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся
> термин) наедитесь так, что небо в овчинку покажется.
> Впрочем первый вариант тоже несколько странноват, на мой взгляд.
у меня всё пучком было... не раз... и не только у меня...
правда, не при таких объемах и требованиях к отклику....
хотя да, приколы свои еззь....

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

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624428
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven wrote:
> Знаю, знаю, <тынц-тынц-тынц>, этот вопрос уже обсуждался. Только
> обсуждение всегда сводилось к флейму с оффтопом, а статьи однозначного
> ответа не дают.
а и не может быть однозначного ответа... зависит от ситуации, когда чего
применять... у меня вон ваще получилось, что в одной базе собраны 1,2,3
НФ+ EAV - потому как так было удобнее всего с точки зрения разработки и
с точки зрения быстродействия...

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624559
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений ФадеевC тем, что Вы называете EAV (я не в курсе насколько это устоявшийся термин) наедитесь так, что небо в овчинку покажется.
Впрочем первый вариант тоже несколько странноват, на мой взгляд.
Согласен, что наемся. И со вторым тоже наемся. И наедался уже, и ничего. Вопрос в том, с чем программисты больше наедятся: с первым, реализуя, расширяя и докручивая, или со вторым, добавляя по нескольку таблиц, перестраивая и тестируя при изменении и добавлении каждого класса?

А какой не странный подход? db4o и Cache? Пока считаю экзотикой.
locky
а и не может быть однозначного ответа... зависит от ситуации, когда чего
применять... у меня вон ваще получилось, что в одной базе собраны 1,2,3
НФ+ EAV - потому как так было удобнее всего с точки зрения разработки и
с точки зрения быстродействия...

Возможно, через одну-две версии, если доживёт, такое и разовьётся. Но хотелось бы начинать с чего-то одного, чтобы не делать сразу несколько вариантов логики работы. Насчёт однозначного ответа - просто в какой-то статье уже сравнивали производительность, но там совсем другие объёмы и нагрузки.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33624574
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven wrote:
> Возможно, через одну-две версии, если доживёт, такое и разовьётся. Но
> хотелось бы начинать с чего-то одного, чтобы не делать сразу несколько
> вариантов логики работы. Насчёт однозначного ответа - просто в какой-то
> статье уже сравнивали производительность, но там совсем другие объёмы и
> нагрузки.
Я начинал с EAV, проводя где необходимо спуск к 3НФ и дальнейшую
денормализацию.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625483
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
послушайте «старого и опытного», хотя бы для того чтобы потом не было стыдно на собеседованиях, да и вообще при ответах на вопросы об архитектуре системы.

imho как ни странно, но видно только в России возможно, что люди на полном серьезе годами обсуждают возможность применения EAV как основного архитектурного решения для системы. Это какой-то особый вид архитектурной сублимации, наверно, когда архитектор БД вместо того чтобы проектировать непосредственно БД, начинает сначало создание своей РСУБД внутри другой РСУБД, а потом уже на этой своей типа РСУБД пытается проектировать собственно БД которую надо.

Мне вот интересно, а почему вы тогда останавливаетесь на всего лишь первой уровне, их же модно продолжить! Давайте, чтобы уровней было хотя бы три?! Ну типа так RMD->EAV RMD->EAV EAV RMD->EAV EAV EAV RMD->сама БД. Это кстати можно делать до посинения, т.к. РМД (как и любую формальную модель) можно описать в терминах РМД и делать это рекурсивно пока душа просит!

Меня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования?
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625499
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri
Меня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования?

Недостаток РМД и ОМД.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625511
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов

авторНедостаток РМД и ОМД.

Вот как оказывается! А можно поинтересоваться что именно в недостатки обоих записывается? И еще как эти недостатки EAV решает?
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625611
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV их никак не решает.
Недостаток не в моделях, а в самом понятии БД - ущербна она - и недемократично, и нет самостийности, и много чего там нет. Общак всегда приводит к поножовщине.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625732
erwerwerwerweerwre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
funikovyuriМеня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования?

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

вечный поиск филосовского камня и единственного правильного ответа на все вопросы... нормальный Русский человек, более того - обремененный интеллектом, не может пройти мимо, не приняв вызова вселенной которая оспаривает осмысленность его существования...

вечный challenge destination

в конце концов зачем нам результат когда сам процесс так увлекателен
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625787
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Недостаток не в моделях, а в самом понятии БД - ущербна она

Почему ущербна?
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625831
guest_20040621> Недостаток не в моделях, а в самом понятии БД - ущербна она

Почему ущербна?

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

ИМХО конечно это была попытка иронического сарказма... я угадал?
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625854
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri wrote:
> послушайте <старого и опытного>, хотя бы для того чтобы потом не было
Жуть сколько поскипано
> образования?

Ну почему же только русськое? Нехристи зарубежные тоже применять, в
медицине, в частности (там правда уж больно случАи странные). А шобы вот
так, при решении учетных задач - не, не встречал, да и не искал, собственно.
Мы вот лично применяем EAV потому, что единожды написанный костяк
позволяет решать 90% задач - нет необходимости отвлекаться на всякие
мелочи, пишетьтся только бизнес-логика. Да и к тому же все интерфейсы
автоматом получаются типовыми и одинковыми - значительно легче юзеров учить.



--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33625896
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> как и любая модель... являясь подобием ущербна настолько, насколько
> значительны допущения подобия

Вы хотите предложить парадигму, свободную от использования моделей вообще? ;) Было бы интересно послушать.

> собственно понятие БД и есть то кривое зеркало в котором
> отражается картина объективной реальности

Почему кривое? Никто не требует отражать объективную реальность as is. А для описания хм... проекций объективной реальности РСУБД приспособлены более чем. ;) Ничего лучше никто до сих пор не придумал: при очень компактной метамодели РСУБД позволяют стандартным образом решать практически любые задачи.

> я угадал?

Нет. Хотелось немного в другую сторону обсуждение сдвинуть. Imho было бы интересно обсуждать две вещи: 1. подход к проектированию структур данных, плохо ложащихся на реляционную модель, 2. интероперабельность в контексте 1. с учетом гетерогенных структур данных.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33626750
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всего 50 классов против 100млн. экземпляров - существенный довод в пользу ROT. Тем более классы можно обобщить.
Самое интересное - в связях и зависимостях - но про них пока ничего не известно:).
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33626847
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33626937
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri<...> RMD->EAV RMD->EAV EAV RMD->EAV EAV EAV RMD->сама БД. Это кстати можно делать до посинения, т.к. РМД (как и любую формальную модель) можно описать в терминах РМД и делать это рекурсивно пока душа просит!<...>
Согласен, пока архитекторы, программисты, тестировщики и DBA доступны - изменять структуру классов БД в соответствии с желаниями пользователя лучше средствами СУБД, и не надо изобретать велосипедов и наславивать лишние уровни.

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

Впрочем, наверное, для того, чем мы сейчас занимаемся, такое требование неактуально. А для системы паспортизации СКО, помнится, было ещё и как актуально...

Единственное, что осталось понять - как реализовать хранение исторической информации при помощи ROT? Есть ли для этого штатные механизмы хотя бы у Oracle 10g и MS SQL Server 2005, и если они есть, то насколько удобны и похожи? Буду читать...
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33626969
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven wrote:
> funikovyuri
> <...> RMD->EAV RMD->EAV EAV RMD->EAV EAV EAV RMD->сама БД. Это кстати
> можно делать до посинения, т.к. РМД (как и любую формальную модель)
> можно описать в терминах РМД и делать это рекурсивно пока душа просит!<...>
>
>
> Согласен, пока архитекторы, программисты, тестировщики и DBA доступны -
> изменять структуру классов БД в соответствии с желаниями пользователя
> лучше средствами СУБД, и не надо изобретать велосипедов и наславивать
> лишние уровни.
>
Ага... типа пока я (программер) доступен - то прикладники могут меня
заваливать задачами, типа "Зделай мине исчо 35 справучников таких, как
делал вчера"? Гы? И я типа - ррраз! и начал их делать? Скушна... Дам им
нормальный интерфейс, хай сами всё себе делают, настраивают, как душе
угодно. Впрочем, это можно сделать не только в EAV, но и в ROT (правда
чуток сложнее)

> А если разработчики недоступны, а пользователю надо немедленно добавить
> новое свойство класса и тут же начать его заполнять для экземпляров, да
> ещё и чтобы интерфейс соответствующим образом изменился?
.... да еще при сохранении объектов проводить 3 тысячи разных проверок,
да чтобы при этом создавались/проводоились документы, да еще и ... 1с
какая-то :-)
Пользователь - вот так: ррраз! и добави... а потом заодно сам продолжил
эту хрень сопровождать... флаг в руки.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33627624
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить
SELECT ... FROM Сеть WHERE ...
:).
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33627714
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему бы нет.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33627734
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить
SELECT ... FROM Сеть WHERE ...
:).

примерно может быть год-полтора назад один из участников форума, с малознакомым ником <не помню как его звали> давал любопытный, немного, правда, сбивчивый футурологический прогноз равития - бд, хранилища, системы управления знаниями и проч...

местные его заклевали и отринули... практики... прагматики... обреченные плестись на поводу монстров софтостроения и их концепций... а что делать...

такова селяви, как говаривала моя учитель литературы
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33627937
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenВ самой большой структуре EAV может храниться до 100 млн. «объектов», до 10 Тб. Время отклика для создания одного «объекта» – до 1 сек, подключений – до 1000, запись может вестись одновременно с 50, объёмы записи – в 90% до 10 Кб, 10% до 10 Мб. Чтение может вестись одновременно с 5 рабочих мест, кусками по 30 «объектов», время «сбора и выдачи» куска – 3 сек.

Структура EAV не очень сложная, и написать генератор который создаст в ней хотя бы 10 млн объектов, не очень сложно а потом запустите несколько типичных для вашей задачи запросов и посмотрите на скорость реакции.

На мой взгляд стандартный подход с плоскими таблицами более производителен и к тому же позволяет оптимизировать критичные запросы с помощью индексов, хинтов и таблиц агрегатов, но если EAV вас устроит по производительности, то почему бы и нет, вы действительно сократите время на развитие системы.
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33627970
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets wrote:
> AlexTheRaven
> В самой большой структуре EAV может храниться до 100 млн. <объектов>, до
> 10 Тб. Время отклика для создания одного <объекта> - до 1 сек,
> подключений - до 1000, запись может вестись одновременно с 50, объёмы
> записи - в 90% до 10 Кб, 10% до 10 Мб. Чтение может вестись одновременно
> с 5 рабочих мест, кусками по 30 <объектов>, время <сбора и выдачи> куска
> - 3 сек.
>
>
> Структура EAV не очень сложная, и написать генератор который создаст в
> ней хотя бы 10 млн объектов, не очень сложно а потом запустите несколько
> типичных для вашей задачи запросов и посмотрите на скорость реакции.
>
> На мой взгляд стандартный подход с плоскими таблицами более
> производителен и к тому же позволяет оптимизировать критичные запросы с
> помощью индексов, хинтов и таблиц агрегатов, но если EAV вас устроит по
> производительности, то почему бы и нет, вы действительно сократите время
> на развитие системы.
а скрипты потом нам - "мы мигом к вам заявимся, с лопатами и вилами,
денёчек покумекаем - и выправим дефект"

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
    #33628028
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
а скрипты потом нам - "мы мигом к вам заявимся, с лопатами и вилами,
денёчек покумекаем - и выправим дефект"

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


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