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

Вопрос встал вот почему. Спорим мы с коллегой о структуре БД. Я – «молодой», говорю – давайте возьмём 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
24.03.2006, 17:55
    #33624409
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся термин) наедитесь так, что небо в овчинку покажется.
Впрочем первый вариант тоже несколько странноват, на мой взгляд.
...
Рейтинг: 0 / 0
24.03.2006, 17:59
    #33624422
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
Евгений Фадеев wrote:
> C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся
> термин) наедитесь так, что небо в овчинку покажется.
> Впрочем первый вариант тоже несколько странноват, на мой взгляд.
у меня всё пучком было... не раз... и не только у меня...
правда, не при таких объемах и требованиях к отклику....
хотя да, приколы свои еззь....

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

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

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

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

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


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

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

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

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

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

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

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

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

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

вечный challenge destination

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

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

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

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

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

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



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

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

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

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

> я угадал?

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

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

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

Единственное, что осталось понять - как реализовать хранение исторической информации при помощи ROT? Есть ли для этого штатные механизмы хотя бы у Oracle 10g и MS SQL Server 2005, и если они есть, то насколько удобны и похожи? Буду читать...
...
Рейтинг: 0 / 0
27.03.2006, 13:25
    #33626969
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
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
27.03.2006, 16:15
    #33627624
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить
SELECT ... FROM Сеть WHERE ...
:).
...
Рейтинг: 0 / 0
27.03.2006, 16:38
    #33627714
Сахават Юсифов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
Почему бы нет.
...
Рейтинг: 0 / 0
27.03.2006, 16:41
    #33627734
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
ModelR Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить
SELECT ... FROM Сеть WHERE ...
:).

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

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

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

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

На мой взгляд стандартный подход с плоскими таблицами более производителен и к тому же позволяет оптимизировать критичные запросы с помощью индексов, хинтов и таблиц агрегатов, но если EAV вас устроит по производительности, то почему бы и нет, вы действительно сократите время на развитие системы.
...
Рейтинг: 0 / 0
27.03.2006, 17:54
    #33627970
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
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
27.03.2006, 18:15
    #33628028
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
locky
а скрипты потом нам - "мы мигом к вам заявимся, с лопатами и вилами,
денёчек покумекаем - и выправим дефект"

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


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