|
|
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneКстати, вы собственно статью, где система описывается, прочитали? Прочитал. Мое имхо: овчинка выделки не стоит. Поскольку рез-т запроса всегда таблица, то иметь в БД две разные сущности (виртуальные объекты и реальные таблицы) - это перебор. Пример: как создать мн-во объектов из запроса - сущности то разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 12:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 _мод Вы добавили новое св-во в класс, надо добавить столбец в таблицу. Я не хочу вдаваться в реализацию, но добавление свойства (это не мой термин) выражается в добавлении столбцов и в др. манипуляций с реляционной памятью (а не отображается, как вы считаете). Вас это не должно волновать. Одна команда ALTER CLASS... и все добавлено. Так есть только два способа отобразить объекты на таблицы: традиционный и EAV (или еще как в Каше - все в одну строку) Это кто сказал? Какой такой традиционный способ? А в Каше - это уже третий? Так два или три? А вдруг четыре? 2 Дедушка ваш пример с С и С++ не корректен тут Поченму не еорректен? Мне лучше видно. Интересно, а что SQL прям весь такой из себя ОО? Ммммм.... зАчем описывать предметную область в ОО-терминах в контексте SQL Фиг ее знает. Рубились когда то по этому поводу. Дураки наверное. Но даже не в этом дело. Я предлагаю инструмент, кусок языка. Это не модель, не парадигма, не концепция описания предметной области (я не хочу вдаваться в это). Для того, что бы понять что этот инструмент позволяет, можно статью прочитать до конца. Там есть сквозной пример с запросом и с множественным наследование - он показывает возможности инструмента. Второй раз пересказывать то же самое я не буду. Я просто предлагаю возможность. Я говорю - "теперь можно так сделать", и не в коем случае не говорю что "это нужно". Вопрос "Зачем это делать" я оставляю на Ваше усмотрение. Если Вам это не надо - я не буду настаиваю. Я наблюдаю здесь, что большинство отвечающих твердо убеждены в том, что именно их видение архитектур, интерфейсов, технологий является единственно правильным. Точно так же народ когда то спрашивал зачем С, если есть ассемблер, или зачем С++, если есть С (последнее - в т.ч. и про меня). У меня книжка есть 70-го года "предложения CODASIL" где автор очень скептически относится к реляционной модели. Ваш вопрос - из той же области. Ответ простой - раньше было нельзя, теперь можно. И всё. Я этим инструментом пользуюсь (на уровне прототипа) - мне удобно (это не софистика, а моё личное впечатления) . Бошку иногда ломать не надо. С бубном танцевать порой не приходится. Старый код ковырять не нужно. Инструмент такой. Некоторые вещи, которые в SQL требуют ручного труда, делаются сами. Банально строчек кода меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 17:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модU-geneКстати, вы собственно статью, где система описывается, прочитали? Прочитал. Мое имхо: овчинка выделки не стоит. Поскольку рез-т запроса всегда таблица, то иметь в БД две разные сущности (виртуальные объекты и реальные таблицы) - это перебор. По Вашему - перебор, а по моему - новая возможность. А что, в ОО-программе объекты реальные? КМК это просто способ организовать доступ к значениям (числам, строкам и т.д), хранящиеся в адресуемой памяти. Просто адреса соответствуют семантически значимые выражения, но результат использования этих выражений - все те же значения (числа, строки и т.д). Метаданные транслируются в способ доступа. В этом смысле мои объекты настолько же виртуальны, насколько и объекты в ОО-программах. Результат запроса всегда таблица - потому что система реляционная. В таких системах все данные представлены в виде отношений. Но Вы еще помедитируйте. Над поздним связыванием, над полиморфизмом применительно к запросам. Ну вдруг оно станет понятным, что без классов тут никак. _мод Пример: как создать мн-во объектов из запроса - сущности то разные. Не понял.Зачем создавать множество объектов из запроса? Мне не нужно создавать объекты. Они существуют на стороне сервера. Я там описываю данные через классы, я изменяю данные об объектах этих классов, я получаю получить данные об этих объектах (в виде отношений). А получать объекты мне не надо. Я про это и говорю на первой странице "запросы возвращают данные об объектах (а не сами объекты)" Видимо, Вы невнимательно читали. Мне получать объекты с сервера не надо. Они там существуют, они снаружи управляются. А объекты мне не нужны Их нет. Только таблицы (хотя их тоже нет, но это уровнем ниже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 18:38 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, Да таких инструментов прудь пруди. Тебе кажется что ООП решение всех проблем? или РМД? или их симбиоз? Ничто из этого не решает всех проблем. Интересные вещи говоришь. "Независимые данные". От кого независимые? Какова их семантика? Как их интерпретировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 18:41 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRos Да таких инструментов прудь пруди. Конкретно,ссылки, пожалуйста. Я знаю только постгресовские и оракловские объектные расширения SQL (связаны со стандартом SQL1999), но там теория другая. Я так понимаю, Вы заключение прочитали? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 18:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, да любой LINQ провайдер, EF, Hibernate и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 19:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosU-gene, да любой LINQ провайдер, EF, Hibernate и т.д. Какая самоуверенная прелесть :) Я что то подобное уже встречал... вчера кажется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 19:20 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, смешки непонятны обясни че смешного, может я и вправду не въехал в тему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 19:24 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Ну при чем здесь "LINQ провайдер, EF, Hibernate" и все эти и другие ORM инструменты? Речь идет не о интерфейсе, не о библиотеке, и не о прослойке. RxO система - это вообще не о том. Она реализует OO - расширения Structured Query Language . Попробуйте забыть про все эти технологии. Представьте, что все, что Вы знаете только SQL1992 с какими то процедурными расширениями и больше ничего (или только TSQL 2000). Помедитируйте над статьей исходя только из этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 19:33 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, то бишь это требует, что бы например Оракл или МС переписали свои РСУБД? ну тады я тут не при чем, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 19:58 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПо Вашему - перебор, а по моему - новая возможность. новые возможности не должны нарушать модель. так расширения SQL не изменяют его сути U-geneА что, в ОО-программе объекты реальные? в ОО-программе (в идеале) есть только объекты и никаких массивов, таблиц и т.д. U-geneНу вдруг оно станет понятным, что без классов тут никак. Пока никакой потребности в них не видно U-geneНе понял.Зачем создавать множество объектов из запроса? Аналог create table tab as select * from tab1 create class cls as select * from tab1 ??????????????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 11:22 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene 2 Дедушка ваш пример с С и С++ не корректен тут Поченму не еорректен? Мне лучше видно. Интересно, а что SQL прям весь такой из себя ОО? Ммммм.... зАчем описывать предметную область в ОО-терминах в контексте SQL Фиг ее знает. Рубились когда то по этому поводу. Дураки наверное. Но даже не в этом дело. Я предлагаю инструмент, кусок языка. Это не модель, не парадигма, не концепция описания предметной области (я не хочу вдаваться в это). Для того, что бы понять что этот инструмент позволяет, можно статью прочитать до конца. Там есть сквозной пример с запросом и с множественным наследование - он показывает возможности инструмента. Второй раз пересказывать то же самое я не буду. Я просто предлагаю возможность. Я говорю - "теперь можно так сделать", и не в коем случае не говорю что "это нужно". Вопрос "Зачем это делать" я оставляю на Ваше усмотрение. Если Вам это не надо - я не буду настаиваю. Я наблюдаю здесь, что большинство отвечающих твердо убеждены в том, что именно их видение архитектур, интерфейсов, технологий является единственно правильным. Точно так же народ когда то спрашивал зачем С, если есть ассемблер, или зачем С++, если есть С (последнее - в т.ч. и про меня). У меня книжка есть 70-го года "предложения CODASIL" где автор очень скептически относится к реляционной модели. Ваш вопрос - из той же области. Ответ простой - раньше было нельзя, теперь можно. И всё. вы как то всё в кучу свалили... впрочем, религиозные войны разводить не будем. U-geneЯ этим инструментом пользуюсь (на уровне прототипа) - мне удобно (это не софистика, а моё личное впечатления) . Бошку иногда ломать не надо. С бубном танцевать порой не приходится. Старый код ковырять не нужно. Инструмент такой. Некоторые вещи, которые в SQL требуют ручного труда, делаются сами. Банально строчек кода меньше. ну, дак нужно было не теории разводить (заметьте, в соседней ветке вас народ тоже не понимает с вашим теор-представлением), а дать этот прототип с краткой инструкцией как пользоваться. люди руками потрогоют и поймут (не дураки чай). вон у Тенцера тож было своё видение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 12:10 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модновые возможности не должны нарушать модель. так расширения SQL не изменяют его сути Возможно, фраза "не должны нарушать" звучит все еще слишком назидательно. Тем более что контекст термина "модель" не уточнен. Нельзя исключать что и фраза "расширения SQL не изменяют его сути" тоже не изменяет вообще никакой сути без дополнительных разъяснений. _модв ОО-программе (в идеале) есть только объекты и никаких массивов... Это программа, которая выводит "Hellow world!"? Или какая? Фамилию автора этой программы тоже было можно уточнить (в идеале, конечно). _модПока никакой потребности в них не видно Так када видно станет, может быть, уже будет поздняк метаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 12:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 _мод _модновые возможности не должны нарушать модель. так расширения SQL не изменяют его сути Отличное замечание! А то. что я только что написал "результат запроса всегда таблица - потому что система реляционная. В таких системах все данные представлены в виде отношений."? А то, что в статье сказано, что все данные (в том числе об объектах) представлены в виде отношений" - это видимо мимо прошло? Вы не находите, что это одно и тоже? _модU-gene U-geneА что, в ОО-программе объекты реальные? в ОО-программе (в идеале) есть только объекты и никаких массивов, таблиц и т.д. Мысль (в идеале) правильная... но здесь то Вы это зачем сказали? Впечатление, что Вы в каждом абзаце читаете только первое предложение. _модU-geneНе понял.Зачем создавать множество объектов из запроса? Аналог create table tab as select * from tab1 create class cls as select * from tab1 ??????????????????? Вот это последнее Код: plaintext Поэтому Вашу фразу _модПока никакой потребности в них не видно я пропускаю мимо ушей, ибо вы не понимаете (в смысле - не знаете) то, о чем пытаетесь рассуждать. 2Дедушка Дедушкану, дак нужно было не теории разводить (заметьте, в соседней ветке вас народ тоже не понимает с вашим теор-представлением), а дать этот прототип с краткой инструкцией как пользоваться. люди руками потрогоют и поймут (не дураки чай). вон у Тенцера тож было своё видение... Уважаемый Дедушка. Если бы Вы прочитали статью, то Вы бы увидели, что в ней нет никакой теории. Вообще. Я даю описание конкретных команд на конкретном примере.А во второй статье - формальная математика, почему и как это работает. Что касается соседней ветке, то там уже разобрались. Как часто бывает - несовпадение терминов. Или, точнее, применение одного термина к разным областям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 13:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoВозможно, фраза "не должны нарушать" звучит все еще слишком назидательно Я бы даже сказал - разрушать. Если нововведения разрушают модель (любую) - они отвергаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 16:03 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модЯ бы даже сказал - разрушать. Если нововведения разрушают модель (любую) - они отвергаются. Кто уполномочен отвергать? Фамилии и должности у них есть? Наверное по этому закону у нас в стране хорошие нововведения отвергаются заинтересованными лицами, и потому не удается разрушить кривую модель экономики, заменив ея более прямой моделью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2011, 23:23 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene 2Дедушка Дедушкану, дак нужно было не теории разводить ... а дать этот прототип с краткой инструкцией как пользоваться. люди руками потрогоют и поймут (не дураки чай). Уважаемый Дедушка. Если бы Вы прочитали статью, то Вы бы увидели, что в ней нет никакой теории. Вообще. Я даю описание конкретных команд на конкретном примере.А во второй статье - формальная математика, почему и как это работает. вы понимаете смысл выражения "руками потрогать"? "Я даю описание конкретных команд" - это разве не теория (ссылки на скачивание транслятора вы не указали)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2011, 10:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneЭклектично :) Я когда-то давным-давно использовал plain С и не как не мог понять, что же все носятся с С++. "Не все ли равно?" думал я что класс, что структура - те же яйца, только в профиль". Оказалось - не те. В общем, НВы стали смотреть на языковые конструкции, я предлагаю посмотреть на то. что этими конструкциями реализуется. 0) ничего не исчезает - по-прежнему можно использовать обычные для SQL табличные структутры. А что в этом хорошего? Объектно-реляционный франкенштейн получается. U-gene1) Появляются классы. При этом мы исходим из идеи, что объект по своей сложности сравним с реляционной БД. Состояние объекта описывается множеством значений отношений (точнее - не более сложных, чем значения отношений). Если раньше мы хранили данные о , например, накладной в двух таблицах, то теперь можно описать класс "накладная", и вместо того, что бы делать JOIN, использовать точечную нотацию. У Вас объект как электрон у Ленина - неисчерпаем. :-) Идея с точечной нотацией правильная, но вот только по хорошему это должен быть полноценный запрос, а точка - контекстно зависимой операцией. U-gene(На самом деле этот пункт - "состояние объекта есть множество значений отношений" - позволяет применить к таким сложным объектам трансформации, основанные исключительно на РМД. Например, запросы к данным описанным в терминах сложных структур - это "замаскированные" JOINы, выборки, проекции и тд, (то есть традиционные реляционные операции ) выполняемые согласованно с операцией переименования атрибутов.) С моей точки зрения у Вас в кучу свалены вопросы хранения и прикладной обработки персистентных данных. ОБД должна работать даже с приложением написанном на ассемблере без применения ООП. U-gene2) Появляется возможность использования ссылок между классами. Опять таки, вместо того, что бы JOINить можно использовать ссылочные конструкции. При этом, несмотря на кажущуюся направленность ссылок, запросы к данным работают в обеих "направлениях". (тут выше про это написано). Мне представляется что здесь какая то путаница между ссылками между классами и ссылками между объектами классов. Что касается направлений, то мы живем не на линии, а в трехмерном мире (то есть направлений может быть гораздо больше). U-gene3) Спецификация класса отделена от реализации. Каждый компонент реализуются отдельно. Компонент может быть реализован как хранимый. Для компонентов реализовано позднее связывание. Когда мы делаем запрос к классу, у которого есть наследники, то система связывает все реализации.По сути речь идет о динамическом UNION, который автоматом может подтягивать данные из разных источников. В обычном SQL такого не достичь... точнее, каждый раз, когда появляется новая разновидность данных, которая должна попасть в какой-то результирующий отчет, мы этот отчет должны обязательно править руками, явно добавляя туда источник новой разновидности. Это в целом понятно. Здесь например проявляется то, что семантики такого значения как NULL уже не достаточно. U-gene5) Методы инкапсулированы в классе и полиморфны. Допускается групповой вызов методов. Опять же класс как единица хранения может иметь совсем другой функционал чем класс в ООП прикладной программе. U-geneВы говорите, что нет модели. Вам шашечки или ехать? Я сознательно не употребляю термин "модель" применительно к объектам. Мне это не нравится. Но смотрите. Структура объекта определяется правилом "множество значений, не более сложных, чем отношения". Я могу описывать сложные объекты, использовать ссылки, у меня реализованы инкапсуляция, тотальный(и компоненты и метода) полиморфизм, даже множественное наследование. Мне не нужны экстенты, мне не нужны итераторы, я обхожусь без обязательного описания обратных ссылок. В общем, модель (не люблю это слово, когда про объекты) есть. Просто она такая простая, что вы несколько раз мимо прошли и не заметили. Конечно, с ODMG3.0 где модель на ...цати листах описывается, она не сравниться. Там, только коллекций 8 штук , если не ошибаюсь. Моя модель маленькая, но достаточая, В ODMG модель сложная, а у меня она очень простая - при большей мощности. В ОМД достаточной одной коллекции. Объект считаю определен неправильно. Но если Ваши конкретные задачи решаются, то и слава богу. U-geneПро OQL. (кстати - он вроде не загнулся ) Но, опять таки, давайте начнем не с конструкций, а с идеи. OQL создавался для программистами для программистов. Я не буду говорить, хорошо это или плохо, но полноценно работать с ODMG объектами можно только из языка програмирования. Кстати, насколько я понимаю, OQL не был ни разу полноценно реализован. Только какие то кусочки. Это был(есть?) такой красивый прожект. Что касается схожести. Ну да, раз есть иерархические конструкции, то грех не воспользоваться точечной нотацией. Но в остальном.... ODMG требует явного определения обратных ссылок. ODMG требует эсктенты, ODMG содержит очень много близких конструкций, что делает модель излишне сложной. Про полиморфные виды я вообще нигде не слышал. Запросы ODMG могут выполняться только в языковой среде. Результат запросов ODMG неоднороден по структуре (могут вернуть ссылку, структура, литерал) - в общем они предназначены для дальнейшей обработки в языковой среде. А здесь запросы выполняются сервером as is (как любой SQL запрос), возвращают данные о состоянии объектов, существующих на стороне сервера. Результат - всегда отношение(таблица). То есть языковые конструкции местами может и схожи, но концепция и идея в целом вообще другая. Собственно неудача OQL по моему как раз и предопределена была тем что не смог народ разделить объектный подход к программированию от объектного подхода к хранению данных. U-geneТак что эклетичность здесь сугубо поверхностная. А схожесть обусловлена скорее конвергенцией (см про иерархии и точечную нотацию) и желанием сделать понятно. Про точечную нотацию я уже говорил. Если эклектичность поверхностная, то это хорошо. Но когда в самой базе живут и таблицы/отношения и как бы классы, то появляется ощущение эклектичности и более глубокой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2011, 06:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 serg99 Ваши реплики я воспринимаю, в основном как какие то личные впечатления (местами - исключительно эмоциональные), которые я в основном не понимаю. а там, где понимаю. то понимаю. что Вы что-то не понимаете. serg99А что в этом хорошего? Объектно-реляционный франкенштейн получается. Точно так же я могу спросить "А что в этом плохого? Объектно реляционный рай для разработчика получается. serg99У Вас объект как электрон у Ленина - неисчерпаем. :-) Про неисчерпаемость. Формула "Объект = реляционная БД" действительно делает возможной рекурсивную вложенность с обеих сторон . Если с левой стороны мы говорим, что объект состоит из других объектов, то с правой стороны, мы можем говорить о подмножестве реляционной БД, которое (в силу замкнутости реляционных операций) тоже есть реляцонная БД. Этот вопрос, кстати, обсуждается во многих источниках serg99Идея с точечной нотацией правильная, но вот только по хорошему это должен быть полноценный запрос, а точка - контекстно зависимой операцией. Не понял. Что значит "полноценный запрос"? Что значит "контексто-зависимая операция"? Давайте примеры, тогда и разберемся, что такое - "по хорошему". serg99С моей точки зрения у Вас в кучу свалены вопросы хранения и прикладной обработки персистентных данных. ОБД должна работать даже с приложением написанном на ассемблере без применения ООП. С моей точки зрения, речь идет не о "персистентных данных", а о "данных о персистенных объектах", которые подразумевают не только значения свойств, но и инкапсулированный функционал, позволяющий изменять состояние и описывающий зависисмости между этими персистентыми объектами. Я уже устал объяснять, что это не "объекты для приложения", а "самипосебе объекты". Кстати, эта Ваша фраза содержит внутреннее противоречие. Если мы собираемся "работать с объектами на ассемблере", то объекты (экземпляры класса, инкапсулирующие состояние и поведение) , где то как то должны ...мммм ..... образоваться... или быть..., то есть эти самые состояние и поведение где должны быть уже "свалены в кучу". Вот я и предлагаю ровно эту возможность с наименьшими трудозатратами. serg99Мне представляется что здесь какая то путаница между ссылками между классами и ссылками между объектами классов. Да, говоря про ссылки я конечно имею в виду ссылки между объектами. Просто так короче, чем выписывать "ссылка из объекта класса на объект другого класса" serg99Что касается направлений, то мы живем не на линии, а в трехмерном мире (то есть направлений может быть гораздо больше). Вот это то самый случай, когда я начинаю сомневаться в Вашем понимании предмета. Речь идет о том, что в ODMG стандарте двухстронние ссылки - это нетривиальная штука. Если мы описываем ссылку из класса А на класс Б, то в классе Б надо описать "встречную" ссылку на класс А. У меня же такую "встречную" ссылку описывать не нужно. То есть мои языковые расширения имеют ту же мощность при меньшей сложности. В связи с этим, мысль про "направлений гораздо больше" проясните пожалуйста. Можно идти по ссылкам, можно идти против ссылок, но, видимо, Вы хотите идти куда то вбок.Я прав? serg99Это в целом понятно. Здесь например проявляется то, что семантики такого значения как NULL уже не достаточно. Как идея о недостаточности NULL связана с поздним связыванием и неявным UNION - это я вообще не понял. Но, раз тон не негативный - выяснять не буду. :) serg99Опять же класс как единица хранения может иметь совсем другой функционал чем класс в ООП прикладной программе. Единица хранения -все же объект. Но не в этом дело. Я не понимаю, почему Вы все время пытаетесь отделить хранение от обработки? У меня объект - единица хранения, с инкапсулированным функционалом ("сампосебе объект"). Он не храниться - он активно существует на сервере. Никакого другой функционал (как единице существования) ему не нужен. serg99В ОМД достаточной одной коллекции. Вот именно - достаточно одной, а сделали восемь. Мощности не прибавилось, а сложности в данном конкретном месте в 8 раз больше. serg99Объект считаю определен неправильно. "Ну почему?" (с) Карлсон Классы есть , структура объектов сложная, они персистентые, состояние и поведение инкапсулировано, есть множественное наследование, есть полиморфизм и по состоянию и по поведению, можно задавать ключи, ad-hoc запросы к данным какие хошь, что то там еще.... :) В общем - непонятные капризы. serg99Собственно неудача OQL по моему как раз и предопределена была тем что не смог народ разделить объектный подход к программированию от объектного подхода к хранению данных. КМК тем, что там таки это разделение так или иначе но все же подразумевалось. Ну и чрезвычайно избыточная сложность. И эта сложность - она следует из самой концепции замаскировать подразумевающее разделение между программой. ( да еще при этом - между разными языками программирования) и отдельной системой хранения. serg99Но если Ваши конкретные задачи решаются, то и слава богу. .... Если эклектичность поверхностная, то это хорошо. Но когда в самой базе живут и таблицы/отношения и как бы классы, то появляется ощущение эклектичности и более глубокой. Да. :) Делаю в СУБД чего хочу. Могу использовать табличные структуры, могу описывать данные как объекты. Могу классы использовать как домены. Могу в одном запросе выдернуть данные из таблиц и из классов. Еще чего то с классами могу. Могу. А Вы - нет. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 20:10 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 Дедушка Руками потрогать пока, простите, не дам. Я перфекционист, пока не вылижу - никаких "руками потрогать"? Дедушка"Я даю описание конкретных команд" - это разве не теория (ссылки на скачивание транслятора вы не указали)? По мне - там где я даю формальное обоснование, почему это работает - это теория. А там, где я описываю систему - это уже практика. Например я BOL от MS SQL воспринимаю исключительно как практическое чтиво, "Введение в системы баз данных"Дейта как промежуточное, а, например такую статью - как теорию в чистом виде. Опять разница в терминах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 20:22 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Могу классы использовать как домены Это пока в теории видно. В прототипе не реализовано. Кстати, именно в связи с такими вещами и не "даю потрогать руками". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2011, 20:24 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneТочно так же я могу спросить "А что в этом плохого? Объектно реляционный рай для разработчика получается. Я понимаю что скажем программисту в общем случае удобно иметь возможность писать программу одновременно и на С# и на ассемблере. Это даже можно назвать раем. Однако понятно и то что большинство задач можно решить используя только С#. Соотвественно объектная парадигма должна позволять решать большинство задач не прибегая к реляционной модели данных как таковой. U-gene Про неисчерпаемость. Формула "Объект = реляционная БД" действительно делает возможной рекурсивную вложенность с обеих сторон . Если с левой стороны мы говорим, что объект состоит из других объектов, то с правой стороны, мы можем говорить о подмножестве реляционной БД, которое (в силу замкнутости реляционных операций) тоже есть реляцонная БД. Этот вопрос, кстати, обсуждается во многих источниках Моё мнение просто состоит в том что модель данных должна быть достаточно легко понятной и логичной. Системы основанные именно на таких моделях могут привлечь пользователей к их применению. Я не большой ученый и статью Вашу я просмотрел по диагонали. Поэтому мне например трудно понять что такое "подмножество реляционной БД". U-gene Не понял. Что значит "полноценный запрос"? Что значит "контексто-зависимая операция"? Давайте примеры, тогда и разберемся, что такое - "по хорошему". "По хорошему" это когда точечной записью можно сформулировать полноценный SQL подобный запрос. Примеры потребуют углубления в модель данных поэтому не считаю их здесь уместными. Если эти вопросы интересны можно общаться в личке. U-gene С моей точки зрения, речь идет не о "персистентных данных", а о "данных о персистенных объектах", которые подразумевают не только значения свойств, но и инкапсулированный функционал, позволяющий изменять состояние и описывающий зависисмости между этими персистентыми объектами. Я уже устал объяснять, что это не "объекты для приложения", а "самипосебе объекты". Я собственно о том что скажем и в приложении и в БД используются описания одного и того же объекта. Но эти описания исходят из разных целей, они разные и в общем случае имеют разный "инкапсулированный функционал", а могут и не иметь "инкапсулированного функционала". U-geneКстати, эта Ваша фраза содержит внутреннее противоречие. Если мы собираемся "работать с объектами на ассемблере", то объекты (экземпляры класса, инкапсулирующие состояние и поведение) , где то как то должны ...мммм ..... образоваться... или быть..., то есть эти самые состояние и поведение где должны быть уже "свалены в кучу". Вот я и предлагаю ровно эту возможность с наименьшими трудозатратами. У описаний объекта в БД и в приложении может быть совершенно разное поведение, в то время как у реального прототипа может не быть никакого поведения. То что в БД является объектом, в приложении может им и не быть. И наоборот. Распространенная ошибка состоит в том что считается что ОБД это хранилище ООП объектов. U-gene Вот это то самый случай, когда я начинаю сомневаться в Вашем понимании предмета. Речь идет о том, что в ODMG стандарте двухстронние ссылки - это нетривиальная штука. Если мы описываем ссылку из класса А на класс Б, то в классе Б надо описать "встречную" ссылку на класс А. У меня же такую "встречную" ссылку описывать не нужно. То есть мои языковые расширения имеют ту же мощность при меньшей сложности. В связи с этим, мысль про "направлений гораздо больше" проясните пожалуйста. Можно идти по ссылкам, можно идти против ссылок, но, видимо, Вы хотите идти куда то вбок.Я прав? Я о том что могут быть десятки классов объекты которых связаны графом произвольного вида в том числе связями типа N:N. U-gene Как идея о недостаточности NULL связана с поздним связыванием и неявным UNION - это я вообще не понял. Но, раз тон не негативный - выяснять не буду. :) Смысл в том что если Вы объединяете объекты с разным набором свойств, то кроме NULL - "значение не задано" по хорошему должно появиться ещё одно спецзначение с семантикой "свойство не задано". U-gene Единица хранения -все же объект. Но не в этом дело. Я не понимаю, почему Вы все время пытаетесь отделить хранение от обработки? У меня объект - единица хранения, с инкапсулированным функционалом ("сампосебе объект"). Он не храниться - он активно существует на сервере. Никакого другой функционал (как единице существования) ему не нужен. Программный объект существует после запуска приложения. До этого он существует мертвым телом в виде описания (внутри двоичного кода понятного загрузчику, который выполняет роль конструктора этого объекта). В БД так же содержится описание реального объекта. В БД конечно может содержаться и описание программного объекта соответствующего реальному объекту. С предметной областью могут работать разные приложения написанные разными людьми, в разное время и решающие разные задачи. Все эти приложения могут в разной степени использовать описание объекта из БД. Могут вообще не использовать какие то объекты предметной области. То есть в общем случае описания какого то реального объекта в приложениях могут быть разные, "поведения" этого объекта в разных приложениях может быть разным и все они могут отличаться от описания и поведения того же самого объекта в БД. Коряво наверное написал :-). U-gene "Ну почему?" (с) Карлсон Классы есть , структура объектов сложная, они персистентые, состояние и поведение инкапсулировано, есть множественное наследование, есть полиморфизм и по состоянию и по поведению, можно задавать ключи, ad-hoc запросы к данным какие хошь, что то там еще.... :) В общем - непонятные капризы. Вы в основном про ООП объекты. Я про объекты как элементы модели данных. U-geneДа. :) Делаю в СУБД чего хочу. Могу использовать табличные структуры, могу описывать данные как объекты. Могу классы использовать как домены. Могу в одном запросе выдернуть данные из таблиц и из классов. Еще чего то с классами могу. Могу. А Вы - нет. :) По моему я встречался с Вами несколько лет назад. С тех пор движок объектной БД у нас заработал, так что всё это могём :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 04:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 Serg99 Опять какие-то приложения, загрузчики, объектные модели, двоичные коды. Всё свалено в кучу. Видимо это Ваше " статью Вашу я просмотрел по диагонали " распространяется и на мои посты. Например Serg99Программный объект существует после запуска приложения. До этого он существует мертвым телом в виде описания ... идальше целый абзац это Вы зачем написали? Нет у меня мертвых тел и приложений. О чем Вы? Serg99Смысл в том что если Вы объединяете объекты с разным набором свойств, то кроме NULL - "значение не задано" по хорошему должно появиться ещё одно спецзначение с семантикой "свойство не задано" Это Вы откуда взяли? Я не применяю операцию UNION к объектам с разным набором свойств. О чем Вы? Serg99Распространенная ошибка состоит в том что считается что ОБД это хранилище ООП объектов. У кого ошибка? Я не хочу вдаваться в смысл фразы, но о каком "хранилище" Вы говорите? Вы, видимо опять о приложениях и загрузчиках? Так у меня этого нет. О чем Вы? Serg99Я о том что могут быть десятки классов объекты которых связаны графом произвольного вида в том числе связями типа N:N. И что? У меня впечатления, Что Ваша цель в споре - показаться умным. Я говорю.о фактической двунаправленности ссылок,Вы вваливете мне фразу "Что касается направлений, то мы живем не на линии, а в трехмерном мире (то есть направлений может быть гораздо больше).". Скажите, какое отношение имеет возможное количество ссылок к их направленности? Зачем Вы ввалили эту фразу? О N:N. Первый вариант: Ссылка внутри-компонента набора дает связь N:N. Второй вариант: Связь N:N может быть явно описана как раз с помощью тех самых таблиц структур, которые вам не нужны. Serg99 Давайте остановимся на Вашем признании " статью Вашу я просмотрел по диагонали " . Это очень хорошо объясняет все мои недоумения. Что касается смысла Выших высказываний....здесь в начале Дедушка написал " Авторы подобных изысканий всегда неявно подразумевают, что всё и вся нужно моделировать объектами. ИМХО это не так ." я с ним полностью согласен. По мне объекты - это, что может быть , а не должно быть . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 09:43 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneОпять какие-то приложения, загрузчики, объектные модели, двоичные коды. Всё свалено в кучу. Видимо это Ваше " статью Вашу я просмотрел по диагонали " распространяется и на мои посты. Например Serg99Программный объект существует после запуска приложения. До этого он существует мертвым телом в виде описания ... идальше целый абзац это Вы зачем написали? Нет у меня мертвых тел и приложений. О чем Вы? Я о Вашем "объект активно существует на сервере". Выключите питание сервера и задумайтесь где теперь существует объект и в каком виде. U-geneSerg99Смысл в том что если Вы объединяете объекты с разным набором свойств, то кроме NULL - "значение не задано" по хорошему должно появиться ещё одно спецзначение с семантикой "свойство не задано" Это Вы откуда взяли? Я не применяю операцию UNION к объектам с разным набором свойств. О чем Вы? Я о Вашем "Когда мы делаем запрос к классу, у которого есть наследники...UNION...". Если у Вас все наследники имеют одинаковый набор свойств, то непонятно зачем такая иерархия наследования. U-geneSerg99Распространенная ошибка состоит в том что считается что ОБД это хранилище ООП объектов. У кого ошибка? Я не хочу вдаваться в смысл фразы, но о каком "хранилище" Вы говорите? Вы, видимо опять о приложениях и загрузчиках? Так у меня этого нет. О чем Вы? О том что ООП объекты моделируют реальные объекты в приложении, а объекты модели данных БД обслуживают персистентное описание предметной области в общем случае независимо от приложений. U-geneSerg99Я о том что могут быть десятки классов объекты которых связаны графом произвольного вида в том числе связями типа N:N. И что? У меня впечатления, Что Ваша цель в споре - показаться умным. Я говорю.о фактической двунаправленности ссылок,Вы вваливете мне фразу "Что касается направлений, то мы живем не на линии, а в трехмерном мире (то есть направлений может быть гораздо больше).". Скажите, какое отношение имеет возможное количество ссылок к их направленности? Зачем Вы ввалили эту фразу? Долго объяснять :-). U-gene Serg99 Давайте остановимся на Вашем признании " статью Вашу я просмотрел по диагонали " . Это очень хорошо объясняет все мои недоумения. Давайте :-). U-geneЧто касается смысла Выших высказываний....здесь в начале Дедушка написал " Авторы подобных изысканий всегда неявно подразумевают, что всё и вся нужно моделировать объектами. ИМХО это не так ." я с ним полностью согласен. По мне объекты - это, что может быть , а не должно быть . Мы пока не встречали задач которые нельзя было бы моделировать объектами. Даже тесты TPC. Сам процесс познания имеет "объектный" характер. Таблицы же это скорее удобный способ представления данных в процессе их обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 16:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Мы пока не встречали задач которые нельзя было бы моделировать объектами. Даже тесты TPC. Сам процесс познания имеет "объектный" характер. Таблицы же это скорее удобный способ представления данных в процессе их обработки. ну если все (контексты, типы, события, процессы, время, пространство,....) назвать объектами, то да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 17:23 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37517789&tid=1541920]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 498ms |

| 0 / 0 |
