powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / OO расширения SQL.
25 сообщений из 231, страница 2 из 10
OO расширения SQL.
    #37515887
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модНу, например так:
1. таблица ID всех объектов всех классов
2. таблица всех свойств всех объектов всех классов
обычный EAV
Хватит, не надо! ))
Точнее имеет право на жизнь, но только в определенных ситуациях
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516280
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafХватит, не надо! ))
Точнее имеет право на жизнь, но только в определенных ситуациях
просто как пример (практический !) решения задачки
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516495
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет EAV - хороший вопрос.

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

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

Так вот. EAV пытается в лоб эмулировать линейную память. Этот подход ассоциирует пару "OID + имя атрибута (свойства)" со скалярной (и никакой иной!) величиной свойства. Семантика (имя свойства) используется как скалярное значение , с которым эта хранимая величина ассоциирована. Тем самым реляционное хранилище низводится до линейного хранения множества скаляров. От возможностей реляционной модели при этом ничего по сути не остается.

Взять например банальную накладную, где есть заголовок и множество строки. Как ее представить в EAV? Сколько строк в разных таблицах на это уйдет? Как вообще в EAV представить множество? Вопросов по EAV можно здесь нарыть.

В RxO системе данные о накладной (предполагаем, что все компоненты реализованы как хранимые), будет хранится в двух таблицах (то есть, фактически, привычным способом). При этом семантика сложных структур будет полностью сохранена сохранена в именах и в заголовках этих таблиц.

Еще одно принципиальное различие.Но я сначала у Вас уточню. Насколько я понимаю, EAV есть попытка отображения объектов в реляционную БД. В какой-то программе есть объект, данные о котором надо сохранить в реляционной БД. Соответственно, некое скалярное значение (свойства) копируется из памяти, занимаемой программой в строку EAV таблицы, а потом, по мере надобности, наоборот, восстанавливается из таблицы в память, занимаемую объектом. Это так?
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516550
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
U-geneТем самым реляционное хранилище низводится до линейного хранения множества скаляров. От возможностей реляционной модели при этом ничего по сути не остается.
Это да
U-geneВзять например банальную накладную, где есть заголовок и множество строки. Как ее представить в EAV?
Одна строка в таблице объектов, K+NxM строк в таблице свойств, где K - число полей шапки накладной, N - число строк накладной, M -число полей строки накладной
U-geneВ RxO системе данные о накладной (предполагаем, что все компоненты реализованы как хранимые), будет хранится в двух таблицах (то есть, фактически, привычным способом). При этом семантика сложных структур будет полностью сохранена сохранена в именах и в заголовках этих таблиц.
Сложно в реализации: меняется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру. И все в автомате !
U-geneНасколько я понимаю, EAV есть попытка отображения объектов в реляционную БД. В какой-то программе есть объект, данные о котором надо сохранить в реляционной БД. Соответственно, некое скалярное значение (свойства) копируется из памяти, занимаемой программой в строку EAV таблицы, а потом, по мере надобности, наоборот, восстанавливается из таблицы в память, занимаемую объектом. Это так?
При работе пользователя с конкретным объектом (изменение свойств или просто посмотреть) - так. При массовой обработке объектов (отчеты) выбираются только нужные свойства.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516624
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторменяется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру.

Я можно поподробнее - какие структуры, где они, как вы себе процесс представляете?

Просто у меня впечатление, что Вы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД. Соответственно, в вашем понимании речь идет о согласовании разных структур.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516645
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
U-geneЯ можно поподробнее - какие структуры, где они, как вы себе процесс представляете?
Структура классов д.б. описана любым способом - хоть простым текстом.
Структура БД - таблиц должна соответствовать структуре классов. Следовательно , меня первое надо менять и второе. И что делать с программами - не понятно.
С EAV все просто - структура БД не меняется никогда, соответсвенно не меняются программы.
U-geneСоответственно, в вашем понимании речь идет о согласовании разных структур.
Меняющаяся структура классов отображается в фиксированную структуру БД по определенным правилам.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516660
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз спрошу.

Вы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД?
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516673
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
U-geneВы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД?
Нет, в памяти хранятся не объекты ( в терминах ООП), а копии строк БД, соотв. объекту. А чаще просто выбираются конкретные свойства - скаляры.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516747
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я от Вас прямого ответа добиться не могу. Скалярные значения из памяти в рел БД по Вашему переносятся или нет? (будь они оформлены как объекты, копии строк или что то еще) перенос скаляров(копирование) из памяти программы в БД по Вашему обязателен, для того, что бы утверждать, что объекты существуют?

Вот эта мысль
Сложно в реализации: меняется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру. И все в автомате ! она вообще откуда взялась? Кто вам это сказал? Вы это так утверждаете, как будто я меняю класс и потом для этого изменения должен отдельно согласовывать структуру таблиц (собственно я поэтому с вопросам и присаю). Но это не так.

Программа, заточенная на структуру - это что? RxO система вполне самодостаточна. Никаких внешних специально заточенных программ не нужно. Модель предметной области создается и поддерживается целиком на сервере. Этой моделью можно откуда угодно. А если мы поменяли модель на сервере, то естественно запросы тоже могут требовать изменения... Но это замечание к объектам никак не относится. С таблицами абсолютно такая же ситуация.

Кстати
С EAV все просто - структура БД не меняется никогда, соответсвенно не меняются программы. То есть классы совсем не меняются? А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается?

Кстати, вы собственно статью, где система описывается, прочитали?(это простой вопрос, он требует ответа "да" или "нет") А то я заметил, что многие пытаются сделать выводы исключительно на своих представлениях. Хотя, вместо того, что бы догадки строить, можно прочитать. RxO - это вообще о другом, чем EAV.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516778
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneПрограмма, заточенная на структуру - это что? RxO система вполне самодостаточна. Никаких внешних специально заточенных программ не нужно. Модель предметной области создается и поддерживается целиком на сервере. Этой моделью можно откуда угодно. А если мы поменяли модель на сервере, то естественно запросы тоже могут требовать изменения... Но это замечание к объектам никак не относится. С таблицами абсолютно такая же ситуация.


Ну, это и есть фигня.
1. Никакие запросы НЕ должны меняться.
2. Нельзя менять мудель, если эта версия этой мудели законтрактована (или контрагенты должны автоматом настроиться на новую модель интерпретировав семантику изменений - кароче послать мудель нафиг, если невозможно интерпретировать и настроиться).

U-geneКстати
То есть классы совсем не меняются? А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается?


Очень просто. Просто меняется тип свойства и все. Прога при этом не меняется (если, конечно, приличная прога :))
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516877
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все конечно здорово но вы таки не ответили на мой самый первый вопрос: задлянафига это все нужно.
Зачем я буду напрягать свой моск, зачем новички будут учить старый добрый SQL, и новый злой SQL++
Без ответа на этот вопрос, понятного даже такому ретрограду как я, в терминах которые можно измерить без определений типа модно, круто, современно, можно до хрипоты спорить об реализациях, но оно все равно не взлетит.
U-gene0) ничего не исчезает - по-прежнему можно использовать обычные для SQL табличные структутры. То есть появляется только дополнительный интерфейс к базе, милый сердцу объектникам. То есть об экономии речи не ведется, разработчики СУБД должны тратить ресурсы, плодить баги и т.п. реализуя эту фичу и что же получая взамен.
U-gene1) Появляются классы.Афигеть какое преимущество.
U-geneвместо того, что бы делать JOIN, использовать точечную нотацию. Типа набирать меньше
То есть вы привели два слабых пустых аргумента, которые меня ни в чем не убеждают. Да хрен бы со мной, но оно не убедит и других
U-gene2) Появляется возможность использования ссылок между классами.Если под ссылкой вы имеете ввиду, дополнительное неявное ограничение налагаемое на параметр в процедуре, то я согласен, смысл имеет
U-geneПо сути речь идет о динамическом UNION, который автоматом может подтягивать данные из разных источников. В обычном SQL такого не достичь... точнее, каждый раз, когда появляется новая разновидность данных, которая должна попасть в какой-то результирующий отчет, мы этот отчет должны обязательно править руками, явно добавляя туда источник новой разновидности.А чем вам вьюха не угодила
U-gene4) Собственно запросы к классам. Запросы к классам основаны на О-видахЧем ваши О-виды лучше старого доброго, отлаженного SQL, известного многим. Я сомневаюсь, что вы хотите стать новым гуру и стричь купоны на лекциях, семинарах и книжках.
U-gene5) Методы инкапсулированы в классе и полиморфны. Допускается групповой вызов методов.Пример задачи, решение которой старыми методами громоздко, некрасиво, подверженно ошибкам.

Еще раз U-gene это вы попросили нас оценить вашу концепцию. Это вы должны доказывать что ваши расширения имеют право на жизнь. Я мыслю, что объекты в программировании были внедрены чтобы упростить жизнь разработчикам заменив линейный список процедур иерархическим списком объектов.
Еще раз повторю - приведите пример success story - база: тысячи таблиц и вьюх, десятки тысяч процедур, длительный срок разработки разными разработчиками, отвратительная документация, не следование соглашениям о наименованиях, короче ад для поддержки, а вот если бы использовать вашу придумку то .....
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516929
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Никакие запросы НЕ должны меняться.
Да ну? Оригинальный подход. По мне запросы могут быть вообще любыми - в рамках текущей схемы, конечно.

2. Нельзя менять мудель, если эта версия этой мудели законтрактована (или контрагенты должны автоматом настроиться на новую модель интерпретировав семантику изменений - кароче послать мудель нафиг, если невозможно интерпретировать и настроиться). А это проблема клиента. Схема открыта, пусть интерпретирует и настраивается, если надо. Я еще раз повторяю - вопрос изменения схемы не зависит от того, имеем мы дела с таблицами или с классами.

Очень просто. Просто меняется тип свойства и все. Прога при этом не меняется (если, конечно, приличная прога :)) Тоже загадка. Где меняли, зачем меняли?

Ктсати, я правильно понимаю, что вот здесь, с 16-го по 32-й слайд - это и есть EAV?

В любом случае, я EAV рассматриваю как очень частное решение применимое в очень конкретном ряде случаев. При этом, что самое главное, я вообще не рассматриваю EAV как альтернативу RxO-системе. EAV - это отображение объектов из программы в РБД. RxO-система - это существование объектов на стороне сервера (программы вообще не требуются) который сохраняет все возможности РСУБД ( кстати, если угодно - EAV можно реализовать на сервере, реализующем RxO.... не знаю зачем, но можно). Это идейно разные вещи. поэтому давайте про EAV закроем тему. Если хочется поточить когти на эту тему, можно возобновить это обсуждение. Я там кстати, уже задал вопросик.


PS. Я, кстати, не в коем случае не утверждаю что RxO-система есть общее решение для всего.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516933
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SERG 1257

Я вот на эту фразу наткнулся
То есть появляется только дополнительный интерфейс к базе, милый сердцу объектникам
а дальше вопросы читал невнимательно.

Какой дополнительный интерфейс, извините?
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516953
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene Какой дополнительный интерфейс, извините?Я так понимаю что база остается базой, таблицы таблицами, а также вьюхи и процедуры. То есть с базой можно будет работать по старинке, обеспечивая обратную совместимость.
ПЛЮС вы добавляете еще одну возможность работы с базой - через классы.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516967
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257 ПЛЮС вы добавляете еще одну возможность работы с базой - через классы
Да. Но где Вы при этом нашли какой-то дополнительный интерфейс, мне не понятно.

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

Это не так.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37516998
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene EAV - это отображение объектов из программы в РБД. RxO-система - это существование объектов на стороне сервера (программы вообще не требуются)
Объекты не в ЕАВ или в СУБД, они воще то в Модели предметной области.
Проги (так же и СУБД) должны создавать свои непротиворечивые представления этой модели исходя из описания модели.
При изменении модели меняются представления и если какая та прога (так же СУБД) не могет это, то на свалку ее.
(На счет изменеия запроса - однаждын написанный запрос (прога, которая все еще нужна без переделок) должен работать и при измененной модели).
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517000
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо поставим вопрос иначе - поддерживает ли ваша база обычный SQL. Есть ли у вас обратная совместимость?
Если совместимости нет, то вам будет легче показать достоинства вашего подхода, но придется реализовывать туеву хучу всякой обвязки - драйверов, компонент, утилит и т.п.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517017
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый SERG1257 ,

Если прочитали бы статью (хотя бы пару станиц), вопрос "поддерживает ли ваша база обычный SQL?" вообще бы не встал. То есть Вы ввязались в спор даже не удосужившись ознакомится с предметом обсуждения. Ну это же не серьезно.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517043
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОбъекты не в ЕАВ или в СУБД, они воще то в Модели предметной области. Проги (так же и СУБД) должны создавать свои непротиворечивые представления этой модели исходя из описания модели.
А можно система тоже будет поддерживать классы и объекты? Ну...хотя бы для того, что бы уменьшить разрыв между инфологичекой моделью и ее датаологическим представлением? В идеале - что бы они вообще не отличались?

авторПри изменении модели меняются представления и если какая та прога (так же СУБД) не могет это, то на свалку ее.
(На счет изменеия запроса - однаждын написанный запрос (прога, которая все еще нужна без переделок) должен работать и при измененной модели). Опять какая то программа. Ну что ты будешь делать. Нет никакой программы. Не нужна она.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517047
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неменее уважаемый U-gene
Статью я дочитал, предыдущий запрос снимается.
Но я таки не нашел чем (при каких обстоятельствах) ваша RxO система лучше уже имеющихся.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517094
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я отвечу
"приблизительно тем же, чем С++ лучше С."
не уверен, что вас этот ответ устроит.

Но именно так.Он позволяет описывать предметную область в ОО-терминах, позволяет реализовывать это описание, поддерживает активное существование объектов, обеспечивает манипуляции над группами объектов, запросы к классам, оставаясь при этом полностью реляционным и полностью совместимым с традиционным SQL.

Вы пример с одним единственным запросом к классу (точнее к нескольким классам) прочуствовали? Как к этому запросу система , по мере наследования класса и изменения реализаций его компонентов, автоматом добавляет новые источники, новые алгоритмы расчетов. Как система вызывает метод для группы объектов, и для объектов разных классов выполняется своя реализация этого метода.

Говорят, что SQL - декларативный язык, что вместо вопроса "как вычислять" он отвечает на вопрос "что вычислять". Так RxO система - следующий шаг в этом же направлении. Мы отвечаем на этот же вопрос, но используем уже не имена таблиц, а имена, которыми мы описывали сложные структуры. Мы , когда это нужно, инкапсулируем этот вопрос и, при необходимости меняем реализующее его выражение. И так далее.

Вы совсем до конца дочитайте :) может у Вас и другие вопросы снимутся?
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517141
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

н уне программа, а интерпретатор метаданных модели
как хошь называй
если нет интерпретации, то модель нафиг никому не нужна, это уже теория :):):)
классы и т.д. тож воще то нафиг не нужны, но так как имеющиеся средства разработки оперируют ими, то приходится генерировать их, что бы могли пользоваться редактором текст, типа нажал точку и вывалились внутренности, если бы написать свой редактор, то можно было бы классы не генерировать, а по другму реализвать подмогу прогеру
ну это уже из другой оперы
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517540
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot U-gene]Скалярные значения из памяти в рел БД по Вашему переносятся или нет?[quot ]
Ессно да. А как еще значения могут попасть в БД ?
[quot U-gene]как будто я меняю класс и потом для этого изменения должен отдельно согласовывать структуру таблиц (собственно я поэтому с вопросам и присаю). Но это не так.[quot ]
Вы добавили новое св-во в класс, надо добавить столбец в таблицу. Надо, что-бы ваши программы увидели этот столбец и т.д.
[quot U-gene]А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается?[quot ]
По разному. Чаще всего значения св-в хранятся в varchar2(много)
U-geneRxO - это вообще о другом, чем EAV.
Так есть только два способа отобразить объекты на таблицы: традиционный и EAV (или еще как в Каше - все в одну строку)
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517615
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneЕсли я отвечу
"приблизительно тем же, чем С++ лучше С."
не уверен, что вас этот ответ устроит.

Но именно так.Он позволяет описывать предметную область в ОО-терминах, позволяет реализовывать это описание, поддерживает активное существование объектов, обеспечивает манипуляции над группами объектов, запросы к классам, оставаясь при этом полностью реляционным и полностью совместимым с традиционным SQL.
когда я в самом начале 11544005 задал неявный вопрос вы "надулись"...
тем не менее я попробую ещё раз... зАчем описывать предметную область в ОО-терминах в контексте SQL (только не надо про "удобно" этак мы в софистику скатимся)?
и ваш пример с С и С++ не корректен тут скорее С++ и Haskell в который пытаются тулить ОО парадигму.
...
Рейтинг: 0 / 0
OO расширения SQL.
    #37517759
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДедушказАчем описывать предметную область в ОО-терминах[/u] в контексте SQL
Ну вообще еще Постгри в ОРМД предпринял шаги. А теперь и Оракл прикручивает. Причина - ответ ООбэдешникам. Очевидно, есть Приложения БД, где чиста РМД не адекватна. Но может ОРМД одеватна буит. Кто знает? Напрмер, для поддержки геоинформационных Оракл в 8 версии еще юзал РМД, на начиная с 9 ОРМД. А счас у него 11.
...
Рейтинг: 0 / 0
25 сообщений из 231, страница 2 из 10
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / OO расширения SQL.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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