|
|
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Знаю, знаю, «тынц-тынц-тынц», этот вопрос уже обсуждался. Только обсуждение всегда сводилось к флейму с оффтопом, а статьи однозначного ответа не дают. Вопрос встал вот почему. Спорим мы с коллегой о структуре БД. Я – «молодой», говорю – давайте возьмём 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 усилий по его продвижению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:08 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся термин) наедитесь так, что небо в овчинку покажется. Впрочем первый вариант тоже несколько странноват, на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:55 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Евгений Фадеев wrote: > C тем, что Вы называете EAV (я не в курсе насколько это устоявшийся > термин) наедитесь так, что небо в овчинку покажется. > Впрочем первый вариант тоже несколько странноват, на мой взгляд. у меня всё пучком было... не раз... и не только у меня... правда, не при таких объемах и требованиях к отклику.... хотя да, приколы свои еззь.... зы при больших объемах... там всё по другому, на самом то деле... и при высокой нагрузке - всё по другому... -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:59 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven wrote: > Знаю, знаю, <тынц-тынц-тынц>, этот вопрос уже обсуждался. Только > обсуждение всегда сводилось к флейму с оффтопом, а статьи однозначного > ответа не дают. а и не может быть однозначного ответа... зависит от ситуации, когда чего применять... у меня вон ваще получилось, что в одной базе собраны 1,2,3 НФ+ EAV - потому как так было удобнее всего с точки зрения разработки и с точки зрения быстродействия... -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 18:01 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Евгений ФадеевC тем, что Вы называете EAV (я не в курсе насколько это устоявшийся термин) наедитесь так, что небо в овчинку покажется. Впрочем первый вариант тоже несколько странноват, на мой взгляд. Согласен, что наемся. И со вторым тоже наемся. И наедался уже, и ничего. Вопрос в том, с чем программисты больше наедятся: с первым, реализуя, расширяя и докручивая, или со вторым, добавляя по нескольку таблиц, перестраивая и тестируя при изменении и добавлении каждого класса? А какой не странный подход? db4o и Cache? Пока считаю экзотикой. locky а и не может быть однозначного ответа... зависит от ситуации, когда чего применять... у меня вон ваще получилось, что в одной базе собраны 1,2,3 НФ+ EAV - потому как так было удобнее всего с точки зрения разработки и с точки зрения быстродействия... Возможно, через одну-две версии, если доживёт, такое и разовьётся. Но хотелось бы начинать с чего-то одного, чтобы не делать сразу несколько вариантов логики работы. Насчёт однозначного ответа - просто в какой-то статье уже сравнивали производительность, но там совсем другие объёмы и нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 19:04 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven wrote: > Возможно, через одну-две версии, если доживёт, такое и разовьётся. Но > хотелось бы начинать с чего-то одного, чтобы не делать сразу несколько > вариантов логики работы. Насчёт однозначного ответа - просто в какой-то > статье уже сравнивали производительность, но там совсем другие объёмы и > нагрузки. Я начинал с EAV, проводя где необходимо спуск к 3НФ и дальнейшую денормализацию. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 19:15 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
послушайте «старого и опытного», хотя бы для того чтобы потом не было стыдно на собеседованиях, да и вообще при ответах на вопросы об архитектуре системы. imho как ни странно, но видно только в России возможно, что люди на полном серьезе годами обсуждают возможность применения EAV как основного архитектурного решения для системы. Это какой-то особый вид архитектурной сублимации, наверно, когда архитектор БД вместо того чтобы проектировать непосредственно БД, начинает сначало создание своей РСУБД внутри другой РСУБД, а потом уже на этой своей типа РСУБД пытается проектировать собственно БД которую надо. Мне вот интересно, а почему вы тогда останавливаетесь на всего лишь первой уровне, их же модно продолжить! Давайте, чтобы уровней было хотя бы три?! Ну типа так RMD->EAV RMD->EAV EAV RMD->EAV EAV EAV RMD->сама БД. Это кстати можно делать до посинения, т.к. РМД (как и любую формальную модель) можно описать в терминах РМД и делать это рекурсивно пока душа просит! Меня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2006, 22:38 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
funikovyuri Меня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования? Недостаток РМД и ОМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2006, 23:15 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов авторНедостаток РМД и ОМД. Вот как оказывается! А можно поинтересоваться что именно в недостатки обоих записывается? И еще как эти недостатки EAV решает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2006, 23:48 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
EAV их никак не решает. Недостаток не в моделях, а в самом понятии БД - ущербна она - и недемократично, и нет самостийности, и много чего там нет. Общак всегда приводит к поножовщине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 11:28 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
funikovyuriМеня пока во всем этом интересует только вопрос почему? т.е. это проблемы менталитета наших архитекторов БД или это их недостаток образования? мне иногда кажется, что это не проблема менталитета, а просто некоторая его особенность - сложившийся столетиями метод (или, если хотите, парадигма)мышления... вечный поиск филосовского камня и единственного правильного ответа на все вопросы... нормальный Русский человек, более того - обремененный интеллектом, не может пройти мимо, не приняв вызова вселенной которая оспаривает осмысленность его существования... вечный challenge destination в конце концов зачем нам результат когда сам процесс так увлекателен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 14:58 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
> Недостаток не в моделях, а в самом понятии БД - ущербна она Почему ущербна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 16:13 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Недостаток не в моделях, а в самом понятии БД - ущербна она Почему ущербна? как и любая модель... являясь подобием ущербна настолько, насколько значительны допущения подобия, а само понятие БД это некоторая парадигма допущений... собственно понятие БД и есть то кривое зеркало в котором отражается картина объективной реальности... по которой мы, впоследствии, стоим информационную модель и гордо нарекаем ее идеальной системой учета ИМХО конечно это была попытка иронического сарказма... я угадал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 17:04 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
funikovyuri wrote: > послушайте <старого и опытного>, хотя бы для того чтобы потом не было Жуть сколько поскипано > образования? Ну почему же только русськое? Нехристи зарубежные тоже применять, в медицине, в частности (там правда уж больно случАи странные). А шобы вот так, при решении учетных задач - не, не встречал, да и не искал, собственно. Мы вот лично применяем EAV потому, что единожды написанный костяк позволяет решать 90% задач - нет необходимости отвлекаться на всякие мелочи, пишетьтся только бизнес-логика. Да и к тому же все интерфейсы автоматом получаются типовыми и одинковыми - значительно легче юзеров учить. -- ------------------------- There's no silver bullet! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 17:34 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
> как и любая модель... являясь подобием ущербна настолько, насколько > значительны допущения подобия Вы хотите предложить парадигму, свободную от использования моделей вообще? ;) Было бы интересно послушать. > собственно понятие БД и есть то кривое зеркало в котором > отражается картина объективной реальности Почему кривое? Никто не требует отражать объективную реальность as is. А для описания хм... проекций объективной реальности РСУБД приспособлены более чем. ;) Ничего лучше никто до сих пор не придумал: при очень компактной метамодели РСУБД позволяют стандартным образом решать практически любые задачи. > я угадал? Нет. Хотелось немного в другую сторону обсуждение сдвинуть. Imho было бы интересно обсуждать две вещи: 1. подход к проектированию структур данных, плохо ложащихся на реляционную модель, 2. интероперабельность в контексте 1. с учетом гетерогенных структур данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 18:39 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Всего 50 классов против 100млн. экземпляров - существенный довод в пользу ROT. Тем более классы можно обобщить. Самое интересное - в связях и зависимостях - но про них пока ничего не известно:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:02 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
С возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:41 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
funikovyuri<...> RMD->EAV RMD->EAV EAV RMD->EAV EAV EAV RMD->сама БД. Это кстати можно делать до посинения, т.к. РМД (как и любую формальную модель) можно описать в терминах РМД и делать это рекурсивно пока душа просит!<...> Согласен, пока архитекторы, программисты, тестировщики и DBA доступны - изменять структуру классов БД в соответствии с желаниями пользователя лучше средствами СУБД, и не надо изобретать велосипедов и наславивать лишние уровни. А если разработчики недоступны, а пользователю надо немедленно добавить новое свойство класса и тут же начать его заполнять для экземпляров, да ещё и чтобы интерфейс соответствующим образом изменился? Впрочем, наверное, для того, чем мы сейчас занимаемся, такое требование неактуально. А для системы паспортизации СКО, помнится, было ещё и как актуально... Единственное, что осталось понять - как реализовать хранение исторической информации при помощи ROT? Есть ли для этого штатные механизмы хотя бы у Oracle 10g и MS SQL Server 2005, и если они есть, то насколько удобны и похожи? Буду читать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:14 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:25 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить SELECT ... FROM Сеть WHERE ... :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 16:15 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
Почему бы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 16:38 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
ModelR Сахават ЮсифовС возрвстанием скоростей и объемов каждый объект будет иметь свойство "хранилище", а "хранилище" будет публиковать агрегаты. БД в теперешем понятии не будет - все будет размазано в сети. И у сети можно будет спросить SELECT ... FROM Сеть WHERE ... :). примерно может быть год-полтора назад один из участников форума, с малознакомым ником <не помню как его звали> давал любопытный, немного, правда, сбивчивый футурологический прогноз равития - бд, хранилища, системы управления знаниями и проч... местные его заклевали и отринули... практики... прагматики... обреченные плестись на поводу монстров софтостроения и их концепций... а что делать... такова селяви, как говаривала моя учитель литературы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 16:41 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenВ самой большой структуре EAV может храниться до 100 млн. «объектов», до 10 Тб. Время отклика для создания одного «объекта» – до 1 сек, подключений – до 1000, запись может вестись одновременно с 50, объёмы записи – в 90% до 10 Кб, 10% до 10 Мб. Чтение может вестись одновременно с 5 рабочих мест, кусками по 30 «объектов», время «сбора и выдачи» куска – 3 сек. Структура EAV не очень сложная, и написать генератор который создаст в ней хотя бы 10 млн объектов, не очень сложно а потом запустите несколько типичных для вашей задачи запросов и посмотрите на скорость реакции. На мой взгляд стандартный подход с плоскими таблицами более производителен и к тому же позволяет оптимизировать критичные запросы с помощью индексов, хинтов и таблиц агрегатов, но если EAV вас устроит по производительности, то почему бы и нет, вы действительно сократите время на развитие системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 17:46 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 17:54 |
|
||
|
Что выбрать: "класс как таблица" (ROT) или "класс как сущность-атрибут-значение" (EAV)?
|
|||
|---|---|---|---|
|
#18+
locky а скрипты потом нам - "мы мигом к вам заявимся, с лопатами и вилами, денёчек покумекаем - и выправим дефект" ;) это я к тому что без моделирования на объемах "приближенных к промышленному маштабу" решать вопрос с "базовой стуктуре БД" это разговор в пользу бедных. И никто не зная особенностей объектов, связей между ними, типичных запросов, ничего не скажет. Точнее скажут много, только вот отвечать за работоспособность всего этого не им. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 18:15 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=140&tid=1545349]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 357ms |

| 0 / 0 |
