|
|
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Хочу попросить местных завсегдатаев высказать мнение о расширениях SQL описанных по этой ссылке . Для того, что бы заинтересовать, добавлю, что вариант статьи на английском опубликован на ODBMS.ORG Единственный вопрос - стали бы Вы пользоваться этими расширениями? PS Надеюсь, что здесь это к месту. PPS Так и не понял, где эту статью можно выложить в рунете. Citforum загнулся, аналогов не нашел. Если кому интересно - пользуйтесь, размещайте, только про (с) не забывайте. PPPS Основная теория (всего то десяток страниц) здесь . английский вариант идет туда же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2011, 19:19 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Авторы подобных изысканий всегда неявно подразумевают, что всё и вся нужно моделировать объектами (в парадигме ООП). ИМХО это не так. Посему, от лукавого это всё, от лукавого... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 09:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Прежде чем выдумывать, что же неявно подразумевают авторы, можно все же прочитать, что они подразумевают явно. Тогда , может быть, ИМХО можно будет оставить при себе. Не сомневаюсь в его правильности, кстати. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 10:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, вы не поверите, но я таки прежде прочитал :) просили же высказать мнение... я высказал. не нужно никакое OO расширение SQL-ю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 11:05 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Немного сомневаюсь. Просто эта мысль, что все нужно описывать объектами, взялась непонятно откуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 11:18 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ДедушкаU-gene, вы не поверите, но я таки прежде прочитал :) просили же высказать мнение... я высказал. не нужно никакое OO расширение SQL-ю. Немножко не соглашусь - иногда бывает необходимо наследование (когда в одно поле могут быть вставлены ссылки на разные сущности), но это не часто и подходить к этому надо осторожно и с умом ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 12:45 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Дедушкане нужно никакое OO расширение SQL-ю.+500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 14:44 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
spДедушкаU-gene, вы не поверите, но я таки прежде прочитал :) просили же высказать мнение... я высказал. не нужно никакое OO расширение SQL-ю. Немножко не соглашусь - иногда бывает необходимо наследование (когда в одно поле могут быть вставлены ссылки на разные сущности), но это не часто и подходить к этому надо осторожно и с умом ) Я тоже не соглашусь. Но не с тем что он не нужен, а с тем, что просто мнений не достаточно для решения вопроса о егойной ненужности. Вдруг окажется нужным, а мы счас отметем? Что тогда? Опасаюсь, что нужно, есче кое-что менее безапеляционное для таких выводов. Вон Дейт, думет что сам SQL не нужен был, а мы его юзаем. Поди плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 15:24 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Прежде чем предлагать реализацию ОО расширений неплохо было бы 1 сформулировать проблему 2 описать методы решения этой проблемы существующие до вас 3 описать чем ваш метод лучше, чем решения конкурентов 4 и вот только после этого заинтересованного, клюнувшего читателя подсекать тонкостями реализации. Объекты к субд пытаются прикрутить как бы не сразу после их появления, и если процесс еще не пошел то ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 18:31 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoВон Дейт, думет что сам SQL не нужен был, а мы его юзаем. Поди плохо? а можно пруф для ликбеза, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2011, 18:54 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneЕдинственный вопрос - стали бы Вы пользоваться этими расширениями? Не ясно, как пользоваться. Возьмем к примеру этот пример из описалова: GOODS.Turnover.Contractor.Bank Скока записей он вернет? Для каждой GOODS одну запись в результате? Или по числу банков? Другой вопрос. А если я хочу задом наперед: имея банки, получить goods: BANKS <?> GOODS Че посередке должно стоять? Или так низя делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2011, 01:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
вопросВозьмем к примеру этот пример из описалова: GOODS.Turnover.Contractor.Bank Скока записей он вернет? Для каждой GOODS одну запись в результате? Или по числу банков? это пример пути, а не запроса. если это заголовок запроса (то есть там дальше есть атрибуты, например Name и BIC), то он вернет данные о банках, на которые есть ссылки, согласно пути указанному в заголовке. вопросДругой вопрос. А если я хочу задом наперед: имея банки, получить goods: BANKS <?> GOODS Че посередке должно стоять? Или так низя делать? Можно например конструкция GOODS [ .Turnover.Contractor.Bank.Name LIKE "Citi" ] .Art вернет артикулы товаровЮ проданных контракторам у которых банк удовлетворяет условию. В скобках - критерий отбора объектов, где используются абсолютно те же пути. Критерии можно вкладывать как угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2011, 11:32 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneДобрый день. Хочу попросить местных завсегдатаев высказать мнение о расширениях SQL описанных по этой ссылке . Для того, что бы заинтересовать, добавлю, что вариант статьи на английском опубликован на ODBMS.ORG Единственный вопрос - стали бы Вы пользоваться этими расширениями? PS Надеюсь, что здесь это к месту. PPS Так и не понял, где эту статью можно выложить в рунете. Citforum загнулся, аналогов не нашел. Если кому интересно - пользуйтесь, размещайте, только про (с) не забывайте. PPPS Основная теория (всего то десяток страниц) здесь . английский вариант идет туда же. Выглядит эклектично. Скорее всего из-за того что не предложена объектная модель данных как таковая. Впечатление что к SQL достаточно искусственно прикручиваются элементы ООП и почившего в бозе OQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2011, 20:18 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Эклектично :) Я когда-то давным-давно использовал plain С и не как не мог понять, что же все носятся с С++. "Не все ли равно?" думал я что класс, что структура - те же яйца, только в профиль". Оказалось - не те. В общем, НВы стали смотреть на языковые конструкции, я предлагаю посмотреть на то. что этими конструкциями реализуется. 0) ничего не исчезает - по-прежнему можно использовать обычные для SQL табличные структутры. 1) Появляются классы. При этом мы исходим из идеи, что объект по своей сложности сравним с реляционной БД. Состояние объекта описывается множеством значений отношений (точнее - не более сложных, чем значения отношений). Если раньше мы хранили данные о , например, накладной в двух таблицах, то теперь можно описать класс "накладная", и вместо того, что бы делать JOIN, использовать точечную нотацию. (На самом деле этот пункт - "состояние объекта есть множество значений отношений" - позволяет применить к таким сложным объектам трансформации, основанные исключительно на РМД. Например, запросы к данным описанным в терминах сложных структур - это "замаскированные" JOINы, выборки, проекции и тд, (то есть традиционные реляционные операции ) выполняемые согласованно с операцией переименования атрибутов.) 2) Появляется возможность использования ссылок между классами. Опять таки, вместо того, что бы JOINить можно использовать ссылочные конструкции. При этом, несмотря на кажущуюся направленность ссылок, запросы к данным работают в обеих "направлениях". (тут выше про это написано). 3) Спецификация класса отделена от реализации. Каждый компонент реализуются отдельно. Компонент может быть реализован как хранимый. Для компонентов реализовано позднее связывание. Когда мы делаем запрос к классу, у которого есть наследники, то система связывает все реализации.По сути речь идет о динамическом UNION, который автоматом может подтягивать данные из разных источников. В обычном SQL такого не достичь... точнее, каждый раз, когда появляется новая разновидность данных, которая должна попасть в какой-то результирующий отчет, мы этот отчет должны обязательно править руками, явно добавляя туда источник новой разновидности. 4) Собственно запросы к классам. Запросы к классам основаны на О-видах.Я уже сказал, что они - "замаскированные" реляционные операции. Результата - всегда отношений. О-виды могут быть произвольными, самое главное, что бы были употреблены "правильные" последовательности имен, заданные в описании классов. "Правильные" значит - те же имена в той же последовательности. Это единственно требование - система посчитает любой такой вид. В запросам можно комбинировать классы и таблицы, классы можно использовать как домены таблиц. 5) Методы инкапсулированы в классе и полиморфны. Допускается групповой вызов методов. Вы говорите, что нет модели. Вам шашечки или ехать? Я сознательно не употребляю термин "модель" применительно к объектам. Мне это не нравится. Но смотрите. Структура объекта определяется правилом "множество значений, не более сложных, чем отношения". Я могу описывать сложные объекты, использовать ссылки, у меня реализованы инкапсуляция, тотальный(и компоненты и метода) полиморфизм, даже множественное наследование. Мне не нужны экстенты, мне не нужны итераторы, я обхожусь без обязательного описания обратных ссылок. В общем, модель (не люблю это слово, когда про объекты) есть. Просто она такая простая, что вы несколько раз мимо прошли и не заметили. Конечно, с ODMG3.0 где модель на ...цати листах описывается, она не сравниться. Там, только коллекций 8 штук , если не ошибаюсь. Моя модель маленькая, но достаточая, В ODMG модель сложная, а у меня она очень простая - при большей мощности. Про OQL. (кстати - он вроде не загнулся ) Но, опять таки, давайте начнем не с конструкций, а с идеи. OQL создавался для программистами для программистов. Я не буду говорить, хорошо это или плохо, но полноценно работать с ODMG объектами можно только из языка програмирования. Кстати, насколько я понимаю, OQL не был ни разу полноценно реализован. Только какие то кусочки. Это был(есть?) такой красивый прожект. Что касается схожести. Ну да, раз есть иерархические конструкции, то грех не воспользоваться точечной нотацией. Но в остальном.... ODMG требует явного определения обратных ссылок. ODMG требует эсктенты, ODMG содержит очень много близких конструкций, что делает модель излишне сложной. Про полиморфные виды я вообще нигде не слышал. Запросы ODMG могут выполняться только в языковой среде. Результат запросов ODMG неоднороден по структуре (могут вернуть ссылку, структура, литерал) - в общем они предназначены для дальнейшей обработки в языковой среде. А здесь запросы выполняются сервером as is (как любой SQL запрос), возвращают данные о состоянии объектов, существующих на стороне сервера. Результат - всегда отношение(таблица). То есть языковые конструкции местами может и схожи, но концепция и идея в целом вообще другая. Так что эклетичность здесь сугубо поверхностная. А схожесть обусловлена скорее конвергенцией (см про иерархии и точечную нотацию) и желанием сделать понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2011, 15:57 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Перекликается с моей мыслью http://mynaf.narod.ru/OQL.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 10:59 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
NafПерекликается с моей мыслью http://mynaf.narod.ru/OQL.html Это должно вызывать какую-то дополнительную обеспокоенность по поводу данной мыстли? Или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 12:38 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Дедушкаvadiminfo, всё-таки, если не затруднит 11548401 Плиз, сформулируйте более однозначно вопрос, поскоку, скорее всего, не догал его содержания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 13:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoДедушкаvadiminfo, всё-таки, если не затруднит 11548401 Плиз, сформулируйте более однозначно вопрос, поскоку, скорее всего, не догал его содержания. вы упомянули, Дейт думает, что SQL не нужен... если возможно киньте ссылку почитать для ликбеза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 13:25 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Дедушкаvadiminfoпропущено... Плиз, сформулируйте более однозначно вопрос, поскоку, скорее всего, не догал его содержания. вы упомянули, Дейт думает, что SQL не нужен... если возможно киньте ссылку почитать для ликбеза Ну, это то вроде довольно избитый факт. Сам я читал в книгах. Например, Дейт "Основы баз данных". Например упоминается Третий манифест Дейта и Дарвена в источниках. Ну и там был ими предложен некий язык D. Впрочем, наскока я помню и реляционная алгеба А от них есть. Ну вот упоминание об этом одного из отечесвенных авторитетов http://www.osp.ru/os/2000/04/178000/ . Но я то упомянул все же с иронией, намекая на неопределенность в подобного рода вопросах. Например еще раньше сам Кодд чуть ли 10 лет обивал типа пороги с идеей реляционных БД, наскока я где-то читал, пока дело тронулось. Тоже, возможно, многим казалось, что дело ненужное это. А вона как все потом обернулось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 13:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
спасибо. как то это мимо меня проскочило :) vadiminfoТоже, возможно, многим казалось, что дело ненужное это. А вона как все потом обернулось. ну этак можно и наркоманов подкармливать... типа вдруг они в своих глюках нечто гениальное увидят и будет нам счастье. впрочем, это тоже суровая ирония. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 14:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
А есть что пощупать, кроме теории? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 16:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
NafПерекликается с моей мыслью http://mynaf.narod.ru/OQL.html Да, внешне местами похоже. Но я, когда смотрю на такие впредложеня, в первую очередь пытаюсь оценить их с формальной точки зрения. Vadiminfo дал ссылку на "Третий манифест" Дарвена и Дейта. Цитата оттуда Крис Дейт и Хью Дарвен «Foundation for Object/Relational Databases: The Third Manifesto»Можно предложить два возможных ответа на поставленный вопрос: домен = объектный класс отношение = объектный класс. В главе показывается, что первый ответ - правильный, а второй - нет. У Вас написано "Класс данных – обычная таблица в реляционной БД", то есть сразу понятно, что Вы идете по второму пути, который рассматирвают Дейт и Дарвен. Далее, в тексте, они убедительно аргументируют, почему второй путь ведет в тупик. Подход, который я реализовал, никто никогда нигде вообще не рассматривал. Несмотря на отмеченное выше явное внешнее сходство моей реализации с существующими языковыми конструкциями, я основываюсь на идее "любой объект = реляционная БД", и далее реализую формальное преобразование, позволяющее представить множество таких объектов относящихся(к разным классам) тоже в виде (одной общей) реляционной БД. Поэтому я и предлагаю всем в первую очередь оценивать не столько языковые конструкции, сколько то, что за ними стоит. 2 Дедушка Почему Дейт критикует SQL - что можно здесь прочитать Но, вообще лучше книгу "Третий манифест найти". Там, в приложении H, на 25 страницах Д&Д сравнивают SQL со своим видением "истинно реляционной системы" сравнивают по пунктам. А начинать надо с того, что SQL допускает дублирование строк в таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 16:20 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneNafПерекликается с моей мыслью http://mynaf.narod.ru/OQL.html Да, внешне местами похоже. Но я, когда смотрю на такие впредложеня, в первую очередь пытаюсь оценить их с формальной точки зрения. Vadiminfo дал ссылку на "Третий манифест" Дарвена и Дейта. Цитата оттуда Крис Дейт и Хью Дарвен «Foundation for Object/Relational Databases: The Third Manifesto»Можно предложить два возможных ответа на поставленный вопрос: домен = объектный класс отношение = объектный класс. В главе показывается, что первый ответ - правильный, а второй - нет. У Вас написано "Класс данных – обычная таблица в реляционной БД", то есть сразу понятно, что Вы идете по второму пути, который рассматирвают Дейт и Дарвен. Далее, в тексте, они убедительно аргументируют, почему второй путь ведет в тупик. Ну а если домен = абстрактный класс (интерфейс) таблица = реальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2011, 16:24 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneформальное преобразование, позволяющее представить множество таких объектов относящихся(к разным классам) тоже в виде (одной общей) реляционной БД. Ну, например так: 1. таблица ID всех объектов всех классов 2. таблица всех свойств всех объектов всех классов обычный EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 11:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модНу, например так: 1. таблица ID всех объектов всех классов 2. таблица всех свойств всех объектов всех классов обычный EAV Хватит, не надо! )) Точнее имеет право на жизнь, но только в определенных ситуациях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 12:42 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
NafХватит, не надо! )) Точнее имеет право на жизнь, но только в определенных ситуациях просто как пример (практический !) решения задачки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 15:09 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Насчет EAV - хороший вопрос. Я бы сказал, что доля истины в этом есть. EAV действительно позволяет представить данные объектов в виде набора отношений. Однако при этом на реляционное хранилище накладывается такие ограничение, которое уничтожают все возможности, которые изначально присущи реляционным системам. Когда говорят об объектах, то обычно (точнее все и всегда кроме меня, конечно:) ) подразумевают объекты, являющиеся результатом эволюции систем программирования фон-неймановских машин с адресуемой линейной памятью . Как результат, мы имеем систему, которая заменила адреса на некую семантику. В простейшем случае, пара "OID + имя атрибута (свойства)" (о которой Вы говорите) является точным аналогом пары "адрес + смещение", дающая точный адрес какого-то скалярного значения. При этом сама семантика преобразуется в тоже скалярное значение (значение смещения) Так вот. EAV пытается в лоб эмулировать линейную память. Этот подход ассоциирует пару "OID + имя атрибута (свойства)" со скалярной (и никакой иной!) величиной свойства. Семантика (имя свойства) используется как скалярное значение , с которым эта хранимая величина ассоциирована. Тем самым реляционное хранилище низводится до линейного хранения множества скаляров. От возможностей реляционной модели при этом ничего по сути не остается. Взять например банальную накладную, где есть заголовок и множество строки. Как ее представить в EAV? Сколько строк в разных таблицах на это уйдет? Как вообще в EAV представить множество? Вопросов по EAV можно здесь нарыть. В RxO системе данные о накладной (предполагаем, что все компоненты реализованы как хранимые), будет хранится в двух таблицах (то есть, фактически, привычным способом). При этом семантика сложных структур будет полностью сохранена сохранена в именах и в заголовках этих таблиц. Еще одно принципиальное различие.Но я сначала у Вас уточню. Насколько я понимаю, EAV есть попытка отображения объектов в реляционную БД. В какой-то программе есть объект, данные о котором надо сохранить в реляционной БД. Соответственно, некое скалярное значение (свойства) копируется из памяти, занимаемой программой в строку EAV таблицы, а потом, по мере надобности, наоборот, восстанавливается из таблицы в память, занимаемую объектом. Это так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 16:15 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneТем самым реляционное хранилище низводится до линейного хранения множества скаляров. От возможностей реляционной модели при этом ничего по сути не остается. Это да U-geneВзять например банальную накладную, где есть заголовок и множество строки. Как ее представить в EAV? Одна строка в таблице объектов, K+NxM строк в таблице свойств, где K - число полей шапки накладной, N - число строк накладной, M -число полей строки накладной U-geneВ RxO системе данные о накладной (предполагаем, что все компоненты реализованы как хранимые), будет хранится в двух таблицах (то есть, фактически, привычным способом). При этом семантика сложных структур будет полностью сохранена сохранена в именах и в заголовках этих таблиц. Сложно в реализации: меняется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру. И все в автомате ! U-geneНасколько я понимаю, EAV есть попытка отображения объектов в реляционную БД. В какой-то программе есть объект, данные о котором надо сохранить в реляционной БД. Соответственно, некое скалярное значение (свойства) копируется из памяти, занимаемой программой в строку EAV таблицы, а потом, по мере надобности, наоборот, восстанавливается из таблицы в память, занимаемую объектом. Это так? При работе пользователя с конкретным объектом (изменение свойств или просто посмотреть) - так. При массовой обработке объектов (отчеты) выбираются только нужные свойства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 16:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
авторменяется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру. Я можно поподробнее - какие структуры, где они, как вы себе процесс представляете? Просто у меня впечатление, что Вы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД. Соответственно, в вашем понимании речь идет о согласовании разных структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 17:08 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneЯ можно поподробнее - какие структуры, где они, как вы себе процесс представляете? Структура классов д.б. описана любым способом - хоть простым текстом. Структура БД - таблиц должна соответствовать структуре классов. Следовательно , меня первое надо менять и второе. И что делать с программами - не понятно. С EAV все просто - структура БД не меняется никогда, соответсвенно не меняются программы. U-geneСоответственно, в вашем понимании речь идет о согласовании разных структур. Меняющаяся структура классов отображается в фиксированную структуру БД по определенным правилам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 17:20 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Еще раз спрошу. Вы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 17:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneВы мыслите отображением (переносом, копированием, сохранением) значений объектов, существующих в памяти программ в таблицы реляционной БД? Нет, в памяти хранятся не объекты ( в терминах ООП), а копии строк БД, соотв. объекту. А чаще просто выбираются конкретные свойства - скаляры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 17:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Я от Вас прямого ответа добиться не могу. Скалярные значения из памяти в рел БД по Вашему переносятся или нет? (будь они оформлены как объекты, копии строк или что то еще) перенос скаляров(копирование) из памяти программы в БД по Вашему обязателен, для того, что бы утверждать, что объекты существуют? Вот эта мысль Сложно в реализации: меняется структура класса - надо менять структуру его таблиц и менять программы, заточенные на старую структуру. И все в автомате ! она вообще откуда взялась? Кто вам это сказал? Вы это так утверждаете, как будто я меняю класс и потом для этого изменения должен отдельно согласовывать структуру таблиц (собственно я поэтому с вопросам и присаю). Но это не так. Программа, заточенная на структуру - это что? RxO система вполне самодостаточна. Никаких внешних специально заточенных программ не нужно. Модель предметной области создается и поддерживается целиком на сервере. Этой моделью можно откуда угодно. А если мы поменяли модель на сервере, то естественно запросы тоже могут требовать изменения... Но это замечание к объектам никак не относится. С таблицами абсолютно такая же ситуация. Кстати С EAV все просто - структура БД не меняется никогда, соответсвенно не меняются программы. То есть классы совсем не меняются? А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается? Кстати, вы собственно статью, где система описывается, прочитали?(это простой вопрос, он требует ответа "да" или "нет") А то я заметил, что многие пытаются сделать выводы исключительно на своих представлениях. Хотя, вместо того, что бы догадки строить, можно прочитать. RxO - это вообще о другом, чем EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 18:22 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПрограмма, заточенная на структуру - это что? RxO система вполне самодостаточна. Никаких внешних специально заточенных программ не нужно. Модель предметной области создается и поддерживается целиком на сервере. Этой моделью можно откуда угодно. А если мы поменяли модель на сервере, то естественно запросы тоже могут требовать изменения... Но это замечание к объектам никак не относится. С таблицами абсолютно такая же ситуация. Ну, это и есть фигня. 1. Никакие запросы НЕ должны меняться. 2. Нельзя менять мудель, если эта версия этой мудели законтрактована (или контрагенты должны автоматом настроиться на новую модель интерпретировав семантику изменений - кароче послать мудель нафиг, если невозможно интерпретировать и настроиться). U-geneКстати То есть классы совсем не меняются? А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается? Очень просто. Просто меняется тип свойства и все. Прога при этом не меняется (если, конечно, приличная прога :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 18:35 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Это все конечно здорово но вы таки не ответили на мой самый первый вопрос: задлянафига это все нужно. Зачем я буду напрягать свой моск, зачем новички будут учить старый добрый 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 - база: тысячи таблиц и вьюх, десятки тысяч процедур, длительный срок разработки разными разработчиками, отвратительная документация, не следование соглашениям о наименованиях, короче ад для поддержки, а вот если бы использовать вашу придумку то ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 19:33 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
1. Никакие запросы НЕ должны меняться. Да ну? Оригинальный подход. По мне запросы могут быть вообще любыми - в рамках текущей схемы, конечно. 2. Нельзя менять мудель, если эта версия этой мудели законтрактована (или контрагенты должны автоматом настроиться на новую модель интерпретировав семантику изменений - кароче послать мудель нафиг, если невозможно интерпретировать и настроиться). А это проблема клиента. Схема открыта, пусть интерпретирует и настраивается, если надо. Я еще раз повторяю - вопрос изменения схемы не зависит от того, имеем мы дела с таблицами или с классами. Очень просто. Просто меняется тип свойства и все. Прога при этом не меняется (если, конечно, приличная прога :)) Тоже загадка. Где меняли, зачем меняли? Ктсати, я правильно понимаю, что вот здесь, с 16-го по 32-й слайд - это и есть EAV? В любом случае, я EAV рассматриваю как очень частное решение применимое в очень конкретном ряде случаев. При этом, что самое главное, я вообще не рассматриваю EAV как альтернативу RxO-системе. EAV - это отображение объектов из программы в РБД. RxO-система - это существование объектов на стороне сервера (программы вообще не требуются) который сохраняет все возможности РСУБД ( кстати, если угодно - EAV можно реализовать на сервере, реализующем RxO.... не знаю зачем, но можно). Это идейно разные вещи. поэтому давайте про EAV закроем тему. Если хочется поточить когти на эту тему, можно возобновить это обсуждение. Я там кстати, уже задал вопросик. PS. Я, кстати, не в коем случае не утверждаю что RxO-система есть общее решение для всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:11 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 SERG 1257 Я вот на эту фразу наткнулся То есть появляется только дополнительный интерфейс к базе, милый сердцу объектникам а дальше вопросы читал невнимательно. Какой дополнительный интерфейс, извините? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene Какой дополнительный интерфейс, извините?Я так понимаю что база остается базой, таблицы таблицами, а также вьюхи и процедуры. То есть с базой можно будет работать по старинке, обеспечивая обратную совместимость. ПЛЮС вы добавляете еще одну возможность работы с базой - через классы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
SERG1257 ПЛЮС вы добавляете еще одну возможность работы с базой - через классы Да. Но где Вы при этом нашли какой-то дополнительный интерфейс, мне не понятно. Впечатление, что Вы решили, что я пытаюсь изобразить какие-то интерфесные классы. или какую то ORM подсистему, которую надо использовать в ОО-программах, или еще какую-то хрень, которую можно охарактеризовать как "дополнительный интерфейс". Это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene EAV - это отображение объектов из программы в РБД. RxO-система - это существование объектов на стороне сервера (программы вообще не требуются) Объекты не в ЕАВ или в СУБД, они воще то в Модели предметной области. Проги (так же и СУБД) должны создавать свои непротиворечивые представления этой модели исходя из описания модели. При изменении модели меняются представления и если какая та прога (так же СУБД) не могет это, то на свалку ее. (На счет изменеия запроса - однаждын написанный запрос (прога, которая все еще нужна без переделок) должен работать и при измененной модели). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 20:57 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Хорошо поставим вопрос иначе - поддерживает ли ваша база обычный SQL. Есть ли у вас обратная совместимость? Если совместимости нет, то вам будет легче показать достоинства вашего подхода, но придется реализовывать туеву хучу всякой обвязки - драйверов, компонент, утилит и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 21:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Уважаемый SERG1257 , Если прочитали бы статью (хотя бы пару станиц), вопрос "поддерживает ли ваша база обычный SQL?" вообще бы не встал. То есть Вы ввязались в спор даже не удосужившись ознакомится с предметом обсуждения. Ну это же не серьезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 21:10 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
авторОбъекты не в ЕАВ или в СУБД, они воще то в Модели предметной области. Проги (так же и СУБД) должны создавать свои непротиворечивые представления этой модели исходя из описания модели. А можно система тоже будет поддерживать классы и объекты? Ну...хотя бы для того, что бы уменьшить разрыв между инфологичекой моделью и ее датаологическим представлением? В идеале - что бы они вообще не отличались? авторПри изменении модели меняются представления и если какая та прога (так же СУБД) не могет это, то на свалку ее. (На счет изменеия запроса - однаждын написанный запрос (прога, которая все еще нужна без переделок) должен работать и при измененной модели). Опять какая то программа. Ну что ты будешь делать. Нет никакой программы. Не нужна она. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 21:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Неменее уважаемый U-gene Статью я дочитал, предыдущий запрос снимается. Но я таки не нашел чем (при каких обстоятельствах) ваша RxO система лучше уже имеющихся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 21:38 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Если я отвечу "приблизительно тем же, чем С++ лучше С." не уверен, что вас этот ответ устроит. Но именно так.Он позволяет описывать предметную область в ОО-терминах, позволяет реализовывать это описание, поддерживает активное существование объектов, обеспечивает манипуляции над группами объектов, запросы к классам, оставаясь при этом полностью реляционным и полностью совместимым с традиционным SQL. Вы пример с одним единственным запросом к классу (точнее к нескольким классам) прочуствовали? Как к этому запросу система , по мере наследования класса и изменения реализаций его компонентов, автоматом добавляет новые источники, новые алгоритмы расчетов. Как система вызывает метод для группы объектов, и для объектов разных классов выполняется своя реализация этого метода. Говорят, что SQL - декларативный язык, что вместо вопроса "как вычислять" он отвечает на вопрос "что вычислять". Так RxO система - следующий шаг в этом же направлении. Мы отвечаем на этот же вопрос, но используем уже не имена таблиц, а имена, которыми мы описывали сложные структуры. Мы , когда это нужно, инкапсулируем этот вопрос и, при необходимости меняем реализующее его выражение. И так далее. Вы совсем до конца дочитайте :) может у Вас и другие вопросы снимутся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 22:22 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, н уне программа, а интерпретатор метаданных модели как хошь называй если нет интерпретации, то модель нафиг никому не нужна, это уже теория :):):) классы и т.д. тож воще то нафиг не нужны, но так как имеющиеся средства разработки оперируют ими, то приходится генерировать их, что бы могли пользоваться редактором текст, типа нажал точку и вывалились внутренности, если бы написать свой редактор, то можно было бы классы не генерировать, а по другму реализвать подмогу прогеру ну это уже из другой оперы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2011, 23:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
[quot U-gene]Скалярные значения из памяти в рел БД по Вашему переносятся или нет?[quot ] Ессно да. А как еще значения могут попасть в БД ? [quot U-gene]как будто я меняю класс и потом для этого изменения должен отдельно согласовывать структуру таблиц (собственно я поэтому с вопросам и присаю). Но это не так.[quot ] Вы добавили новое св-во в класс, надо добавить столбец в таблицу. Надо, что-бы ваши программы увидели этот столбец и т.д. [quot U-gene]А если надо будет вдруг тип свойства поменять. Было INT, вдруг нужно LONG? Как в EAV это решается?[quot ] По разному. Чаще всего значения св-в хранятся в varchar2(много) U-geneRxO - это вообще о другом, чем EAV. Так есть только два способа отобразить объекты на таблицы: традиционный и EAV (или еще как в Каше - все в одну строку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 10:07 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneЕсли я отвечу "приблизительно тем же, чем С++ лучше С." не уверен, что вас этот ответ устроит. Но именно так.Он позволяет описывать предметную область в ОО-терминах, позволяет реализовывать это описание, поддерживает активное существование объектов, обеспечивает манипуляции над группами объектов, запросы к классам, оставаясь при этом полностью реляционным и полностью совместимым с традиционным SQL. когда я в самом начале 11544005 задал неявный вопрос вы "надулись"... тем не менее я попробую ещё раз... зАчем описывать предметную область в ОО-терминах в контексте SQL (только не надо про "удобно" этак мы в софистику скатимся)? и ваш пример с С и С++ не корректен тут скорее С++ и Haskell в который пытаются тулить ОО парадигму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 10:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ДедушказАчем описывать предметную область в ОО-терминах[/u] в контексте SQL Ну вообще еще Постгри в ОРМД предпринял шаги. А теперь и Оракл прикручивает. Причина - ответ ООбэдешникам. Очевидно, есть Приложения БД, где чиста РМД не адекватна. Но может ОРМД одеватна буит. Кто знает? Напрмер, для поддержки геоинформационных Оракл в 8 версии еще юзал РМД, на начиная с 9 ОРМД. А счас у него 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2011, 11:54 |
|
||
|
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 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosserg99Мы пока не встречали задач которые нельзя было бы моделировать объектами. Даже тесты TPC. Сам процесс познания имеет "объектный" характер. Таблицы же это скорее удобный способ представления данных в процессе их обработки. ну если все (контексты, типы, события, процессы, время, пространство,....) назвать объектами, то да А что их лучше назвать табличками? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 20:38 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99, процесс познания носит "процессный" характер и "процесс" этот называется "классификация" ООП не может "классифицировать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2011, 21:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosserg99, процесс познания носит "процессный" характер и "процесс" этот называется "классификация" ООП не может "классифицировать" А классификация чего? Наверное ведь не таблиц. И при чем здесь ООП? Я говорил не про ООП, а про объектную модель данных в контексте реализации объектной СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 00:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Serg99Я о Вашем "объект активно существует на сервере". Выключите питание сервера и задумайтесь где теперь существует объект и в каком виде. А Вы попробуйте представить себе компьютер у которого вся память персистентна (типа флеш). Персистентность данных - основное св-во которое реализует РСУБД. У меня РСУБд является машиной, а не средством хранения данных . Хотя с вашим "по диагонали".... о чем я говорю? Serg99Если у Вас все наследники имеют одинаковый набор свойств, то непонятно зачем такая иерархия наследования. Опана. :) А что же тут непонятного? Есть класс AА. В нем определено свойство аа. Есть класс-наследник ББ. У него есть св-во бб и, также, он унаследовал св-во аа. Исходя из того, что речь идет о наследовании, можно предполагать, что объекты класса ББ можно так же рассматривать так же как объекты класса АА, что подтверждается тем, что у него есть свойства аа (точно так же как у любых других объектов класса АА). А в обратную сторону это не работает. Объекты класса АА не являются объектами класса ББ - и у них нет тех свойств, которые есть в ББ. Соответственно, когда я обращаюсь к множеству объектов класса АА, я могу использовать только свойство аа Это свойство может быть переопределено в объектах класса ББ (здесь и выполняется неявный UNION). А когда я обращаюсь к множеству объектов класса ББ, я могу использовать и оба свойства аа и бб. Указывая множество, к которому принадлежит объект (или множество объектов) я однозначно определяю множество свойств, которые мне будут доступны. По моему, это очевидно. Всегда так было. Но судя по необходимости использовать значения, "обозначающее отсутствие свойств" - у Вас как то по другому. Такое.... лихое.... наследование. Или уже не наследование? Serg99большинство задач можно решить используя только С# эта фраза и меня поразила. Например. что такое LINQ без MS SQL? Serg99 То что в БД является объектом, в приложении может им и не быть..... О том что ООП объекты моделируют реальные объекты в приложении, а объекты модели данных БД обслуживают персистентное описание предметной области в общем случае независимо от приложений.......Вы в основном про ООП объекты. Я про объекты как элементы модели данных.....О том что ООП объекты моделируют реальные объекты в приложении, а объекты модели данных БД обслуживают персистентное описание предметной области в общем случае независимо от приложений..... Я искренне стараюсь понять о чем Вы здесь (в контексте данного топика), но в целом это выглядит как "тут это объект. а тут - не объект, а тут перевернуть, а тут мы рыбу заворачивали". Вспомнилась гениальная фраза (звук!) (в т.ч. про табл клетки) На всякий случай поясню (в очередной раз), что я имею в виду персистентные объекты описывающие предметную область. И больше ничего. Этого достаточно. Поэтому, пожалуйста, не надо больше "объектами модели данных БД" путать здесь народ. Ему и так за последнии 20 лет мозги заплели. Serg99Долго объяснять :-) Ну.... это же так интересно! Какое же отношений количество ссылок имеет к их направлености? КМК никакого. Тут и объяснять нечего. Вы, в очередной раз прочитав по диагонали, решили блеснуть эрудицией... и в очередной раз не попали. Serg99"По хорошему" это когда точечной записью можно сформулировать полноценный SQL подобный запрос. Примеры потребуют углубления в модель данных Так давайте углубимся, прямо злесь.... если это, конечно, не просто очередное прочтение по диагонали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 12:00 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneУказывая множество, к которому принадлежит объект (или множество объектов) я однозначно определяю множество свойств, которые мне будут доступны. По моему, это очевидно. Всегда так было. Это и есть самое узкое место в ООП. Т.е. сначала надо конструировать ТИП. Объектов исчо НЕТ, а классифкатор уже готов. :) Мотом по мере появления самих объектов начинается еб с пляской типа наследования от пустого класса и полиморфизмами (переопределение семантики). Эти товарищи появляются от безысходности и сеют ужасную семантическую муть. У этой фигни есть только две понятные вещи - у объекта могут быть доступные свойства на которых можно глянуть и какие то методов, которых можно вызвать (что при этом будет фиг его знает). У РМД все проще и ясно -есть ОДИН тип объекта - отношение и его методы с четкой семантикой и вычислимым результатом. Так что либо вы свои долбаные объекты трансформируете в рмд (и пользуете мощ рмд по части трансформации) и обратно или рмд нафиг вам не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 19:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
долбаные объекты трансформируете в рмд (и пользуете мощ рмд по части трансформации) да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2011, 23:08 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 ViPRos ViPRosЭто и есть самое узкое место в ООП. Кстати! Я не берусь обсуждать недостатки ООП. Точно так же я не хочу обсуждать недостатки РМД или, например, то, в чем SQL отходит от РМД. Я предлагаю непртиворечивый подход, который соединяет свойства РМД (или систем,ее реализующих) и ОО-языков - вместе со всеми их преимуществами и недостатками, если таковые (и те и другие) есть. Напрмиер, я реализовал подход на базе SQL сервера - как результат у меня в этой реализации имеют место быть дупликаты в наборах и NULL значения. Потому что это подход к соединению - все что было в исходных моделях/парадигмах он оставляет без изменения (что, собственно, и подтверждает его непротиворечивость). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2011, 20:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, дя я что , предлагай соко хошь мне не надобно, свой кентавр имеется с дополнительными рогами и без дуПликатов, а NULL хошь имей хошь нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2011, 22:09 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene А Вы попробуйте представить себе компьютер у которого вся память персистентна (типа флеш). Персистентность данных - основное св-во которое реализует РСУБД. У меня РСУБд является машиной, а не средством хранения данных . Хотя с вашим "по диагонали".... о чем я говорю? Можно даже представить что всё что есть - это энергонезависимое ОЗУ. Тем не менее все равно где то есть описание (двоичный код)программного объекта, который становится "живым" только после запуска соответствующей программы. Просто мне представляются эти немного философские расуждения о разнице между моделью вычислений и моделью данных важными независимо от того в какой степени это относится к Вашему подходу. U-geneSerg99Если у Вас все наследники имеют одинаковый набор свойств, то непонятно зачем такая иерархия наследования. Опана. :) А что же тут непонятного? Есть класс AА. В нем определено свойство аа. Есть класс-наследник ББ. У него есть св-во бб и, также, он унаследовал св-во аа. Исходя из того, что речь идет о наследовании, можно предполагать, что объекты класса ББ можно так же рассматривать так же как объекты класса АА, что подтверждается тем, что у него есть свойства аа (точно так же как у любых других объектов класса АА). А в обратную сторону это не работает. Объекты класса АА не являются объектами класса ББ - и у них нет тех свойств, которые есть в ББ. Соответственно, когда я обращаюсь к множеству объектов класса АА, я могу использовать только свойство аа Это свойство может быть переопределено в объектах класса ББ (здесь и выполняется неявный UNION). А когда я обращаюсь к множеству объектов класса ББ, я могу использовать и оба свойства аа и бб. Указывая множество, к которому принадлежит объект (или множество объектов) я однозначно определяю множество свойств, которые мне будут доступны. По моему, это очевидно. Всегда так было. Но судя по необходимости использовать значения, "обозначающее отсутствие свойств" - у Вас как то по другому. Такое.... лихое.... наследование. Или уже не наследование? Я так и не понял какие множества объединяются Вашим UNION и в чем собственно фишка если всё делается как всегда. Допустим у нас есть класс "Средства_передвижения" с наследниками "Автомобили" и "Лошади". Соответственно у автомобилей есть атрибут "Количество_колес", а у лошадей - "Количество_ног". Потом мы делаем запрос Код: plaintext Код: plaintext 1. 2. 3. 4. То есть в базе заданы два автомобиля и две лошади. NULL потому что количество колес для ГАЗ-24 забыли задать, а NotDef потому что у лошадей вообще нет такого атрибута. Собственно отсюда должно быть понятно что я говорил о случае, когда в одно множество объединяются объекты разных классов и что спецзначение NotDef относится к случаю выполнения операций над такими множествами. Что касается "Наследования", то если отойти от устоявшейся ООП терминологии я бы лучше назвал это "Уточнение/Обобщение" в зависимости от того в какую сторону иерархии мы "смотрим". Действительно семантику "Наследования" можно доопределить, как впрочем возможны и другие взаимоотношения между Классами. U-geneSerg99большинство задач можно решить используя только С# эта фраза и меня поразила. Например. что такое LINQ без MS SQL? Я собственно имел ввиду что если есть объектная модель данных и соответствующий декларативный язык, то практически нет нужды что то знать про реляционную модель данных. U-geneSerg99Долго объяснять :-) Ну.... это же так интересно! Какое же отношений количество ссылок имеет к их направлености? КМК никакого. Тут и объяснять нечего. Вы, в очередной раз прочитав по диагонали, решили блеснуть эрудицией... и в очередной раз не попали. Как Вам угодно. Хочу только заметить что я не писал про связь количества ссылок с их направленностью. Моя реплика была связана с 1) с Вашим ответом одному из участников на вопрос "а если мне нужно наоборот" и относилась к тому что синтаксис запроса где нужно было "наоборот" мало отражал сильно изменившуюся семантику. Другими словами если я хочу получить список возрастов учеников которые учатся у заданного множества учителей, то мне хотелось бы написать Код: plaintext А если бы мне хотелось получить список возрастов учителей обучающих заданное множество учеников, то мне хотелось бы написать Код: plaintext Отсюда же видно что смысл "точки" в зависимости от контекста совершенно разный. А скажем запрос типа Код: plaintext Выводил бы список имен учеников, которые являются детьми сотрудников Банков, клиентами которых являются их учителя. 2) Между объектами скажем одной и той же пары классов могут существовать разнотипные ссылки различающиеся своей семантикой (в том числе различные по 1:N, N:1 или N:N). Это добавляет многомерность во взаимосвязи между объектами. U-geneSerg99"По хорошему" это когда точечной записью можно сформулировать полноценный SQL подобный запрос. Примеры потребуют углубления в модель данных Так давайте углубимся, прямо злесь.... если это, конечно, не просто очередное прочтение по диагонали. См. выше. У меня нет много времени углубляться дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2011, 22:50 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Serg99Я так и не понял какие множества объединяются Вашим UNION и в чем собственно фишка если всё делается как всегда. После диагонали - что можно понять? UNION связывает реализации. В классе АА компонент аа был реализован как хранимый, а в классе ББ он реализован как вычисляемый. Когда я делаю запрос к классу АА я получаю отношение, где в столбце компонента аа некоторые значения хранятся, а некоторые - вычисляются. Это достигается за счет неявного UNIONа, который объединяет значения поздесвязанных реализаций. Это как вызов переопределяемого метода для объекта, только при вызове методов система неявно выбирает реализацию метода (связанную с классом объекта), а у меня - неявно объединяет множества значений, являющихся результатами реализаций для разных классов. Serg99 Код: plaintext Имя Количество_колес ВАЗ21-07 4 ГАЗ-24 NULL Вороной NotDef Кляча NotDef Это конечно оригинально, но по мне система банально должна вернуть ошибку. Например, что у Вас будет, если кто-нибуть случайно попытается выполнить запрос Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2011, 23:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99 Код: plaintext Давайте начнем со старого вопроса - что будет, если кто-то спросит случайно Код: plaintext По делу. Если мы говорим о системе со строгим ранним контролем типов, то куда ссылка есть - туда и спрашивать можно. Это всега так было (именно поэтому ODMG требует явных встречных ссылок). Однако я могу использовать эту же ссылку и в обратную сторону. Например, есть ссылка только из учителей в ученики. Если я я хочу узнать имена учеников учителя Петрова. (логическая цепь - Учителя.Ученики.Имя), я спрошу Код: plaintext И по той же ссылке я могу узнать имена учителей ученика Иванов (логическая цепь - Ученики.Учителя.Имя), я спрошу Код: plaintext Соответсвенно я могу создать в системе новый класс, создать только в нем ссылку на уже существующий класс и получать информацию запросами в обе стороны - не меняя этот существующий класс . Это принципиальная отличие от ODMG. Я еще раз говорю, что речь идет о системе с ранним строгим контролем типов. Так что насчет Уч и ников? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2011, 23:58 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Отсюда же видно что смысл "точки" в зависимости от контекста совершенно разный. Ничего не видно. К акой контекст? какой разный смысл? Это просто обращение по ссылке - если он есть. Кстати (забыл уточнить), все эти примеры - это как бы Вам хотелось? или как оно у Вас уже есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 00:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneSerg99Я так и не понял какие множества объединяются Вашим UNION и в чем собственно фишка если всё делается как всегда. После диагонали - что можно понять? UNION связывает реализации. В классе АА компонент аа был реализован как хранимый, а в классе ББ он реализован как вычисляемый. Когда я делаю запрос к классу АА я получаю отношение, где в столбце компонента аа некоторые значения хранятся, а некоторые - вычисляются. Это достигается за счет неявного UNIONа, который объединяет значения поздесвязанных реализаций. Это как вызов переопределяемого метода для объекта, только при вызове методов система неявно выбирает реализацию метода (связанную с классом объекта), а у меня - неявно объединяет множества значений, являющихся результатами реализаций для разных классов. Это не для среднего ума. :-) U-geneSerg99 Код: plaintext Имя Количество_колес ВАЗ21-07 4 ГАЗ-24 NULL Вороной NotDef Кляча NotDef Это конечно оригинально, но по мне система банально должна вернуть ошибку. А по мне так должна ответить всё что может по сути запроса. Например, что у Вас будет, если кто-нибуть случайно попытается выполнить запрос Код: plaintext Будет ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 01:07 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Это не для среднего ума. :-)Да. Например, я не влезаю в механизмы реализации полиморфных методов в ООЯП. Я этими методами просто пользуюсь. авторБудет ошибка А почему она будет? Может же в этом случае система выводить для всех объектов NotDef? Почему же для Количества_колес ошибки не будет, а для К а личества_ колес - будет. Ведь в средствах передвижения, к которым Вы обращаетесь, нет ни Количества_колес, ни К а личества_колес. Откуда пользователь узнает, что Количества_колес можно , а К а личества_колес нельзя. Он же работает с средства_передвижения. Там никаких количеств вообще нет. Откуда пользователь вообще про эти количества узнает? И зачем надо было вообще определять отдельно средства_передвижения? Это всё действительно не для среднего ума. И это не типизация, а непонятно что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 01:32 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99 Код: plaintext Давайте начнем со старого вопроса - что будет, если кто-то спросит случайно Код: plaintext Будет ошибка. U-gene По делу. Если мы говорим о системе со строгим ранним контролем типов, то куда ссылка есть - туда и спрашивать можно. Это всега так было (именно поэтому ODMG требует явных встречных ссылок). Однако я могу использовать эту же ссылку и в обратную сторону. Не пойму в чем здесь фишка. Если по прямой ссылке можно восстановить обратную, то нет разницы задана обратная ссылка вдобавок явно или нет. Здесь как правило выбирается баланс между быстродействием и избыточностью данных. А так же принципом "быстрее положишь - медленней возьмешь, и медленней положишь - быстрее возьмешь". Если избыточность (требуемая ODMG) позволяет ускорить работу, то и слава богу, особенно если автоматом обеспечить ссылочную целостность. Кстати ссылочная целостность - это одна из проблем реляционных БД, которую мы решили. U-geneНапример, есть ссылка только из учителей в ученики. Если я я хочу узнать имена учеников учителя Петрова. (логическая цепь - Учителя.Ученики.Имя), я спрошу Код: plaintext И по той же ссылке я могу узнать имена учителей ученика Иванов (логическая цепь - Ученики.Учителя.Имя), я спрошу Код: plaintext Соответсвенно я могу создать в системе новый класс, создать только в нем ссылку на уже существующий класс и получать информацию запросами в обе стороны - не меняя этот существующий класс . Это принципиальная отличие от ODMG. Хладный труп ODMG пытаются реанимировать, но пульс близок к нулю. :-) Никто не мешает выполнить запросы Учителя[имя="Петров].Ученики.Имя; и Ученики[имя="Иванов"].Учителя.Имя; без генерации каких либо новых классов. Но если Вы при необходимости динамически восстанавливаете обратные ссылки путем генерации каких то классов (за счет быстродействия я полагаю), то пользователь с моей точки зрения не должен об этом париться (и даже знать). В любом случае это думаю не мешает использовать более понятный синтаксис. [quot U-gene]Я еще раз говорю, что речь идет о системе с ранним строгим контролем типов. Так а в чем здесь проблема? Естественно система должна обеспечивать контроль типов на этапе компиляции/интерпретации запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 01:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99Отсюда же видно что смысл "точки" в зависимости от контекста совершенно разный. Ничего не видно. К акой контекст? какой разный смысл? Это просто обращение по ссылке - если он есть. У нас это не просто обращение по ссылке. U-geneКстати (забыл уточнить), все эти примеры - это как бы Вам хотелось? или как оно у Вас уже есть? Я загрубляю то что есть. Но работы ещё очень много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 01:49 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneА почему она будет? Может же в этом случае система выводить для всех объектов NotDef? Почему же для Количества_колес ошибки не будет, а для К а личества_ колес - будет. Ведь в средствах передвижения, к которым Вы обращаетесь, нет ни Количества_колес, ни К а личества_колес. Хотя бы у одного наследника есть "Количество_колес". U-geneОткуда пользователь узнает, что Количества_колес можно , а К а личества_колес нельзя. Он же работает с средства_передвижения. Там никаких количеств вообще нет. Откуда пользователь вообще про эти количества узнает? Из "метаданных". Если он сам эти метаданные вводил, то может и просто вспомнить. U-geneИ зачем надо было вообще определять отдельно средства_передвижения? Это всё действительно не для среднего ума. И это не типизация, а непонятно что. Тогда зачем в биологии вводили класс млекопитающих? Ведь нет ни одного животного этого класса. Есть коровы, люди, киты и т.п., а млекопитающего нет. Получается и в ООП абстрактные классы не нужны. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 02:00 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneSerg99 Код: plaintext Имя Количество_колес ВАЗ21-07 4 ГАЗ-24 NULL Вороной NotDef Кляча NotDef Это конечно оригинально, но по мне система банально должна вернуть ошибку. Нет, ошибки не должно быть. В том числе в случае ошибочного имени атрибута. Но также очевидно, что и отличия между NULL и NotDef тоже не должно быть. Отсутствие свойства и отсутствие присвоенного значения это одно и то же (на уровен модели). Но само собой можно ввести любые спец. значения на уровне приложения. U-geneНапример, есть ссылка только из учителей в ученики. Если я я хочу узнать имена учеников учителя Петрова. (логическая цепь - Учителя.Ученики.Имя), я спрошу Код: plaintext И по той же ссылке я могу узнать имена учителей ученика Иванов (логическая цепь - Ученики.Учителя.Имя), я спрошу Код: plaintext Соответсвенно я могу создать в системе новый класс, создать только в нем ссылку на уже существующий класс и получать информацию запросами в обе стороны - не меняя этот существующий класс . Это принципиальная отличие от ODMG. К сожалению, ссылки в обратную сторону здесь не работают. В самом начале был задан вопрос именно с целью показать, что есть только прямое прохождение ссылок. В обоих примерах мы начинаем с Учителей, так что порядок прохождения не меняется. Видимо путаница из-за того, что используется внешне похожий, но совершенно другой механизм (тоже инверсия, но другая). serg99Другими словами если я хочу получить список возрастов учеников которые учатся у заданного множества учителей, то мне хотелось бы написать Код: plaintext А если бы мне хотелось получить список возрастов учителей обучающих заданное множество учеников, то мне хотелось бы написать Код: plaintext Отсюда же видно что смысл "точки" в зависимости от контекста совершенно разный. Да, здесь модель недоотработана (и очень сильно). Но это не самое слабое место - это можно легко исправить. Хуже другое: - очередная попытка скрестить реляционные и объектные модели. получается эклектично. Например, одновременно и ключи и ссылки. - мы видим и работаем с объектами, а назад получаем их обломки по частям. Это исправить тяжело (но можно), поскольку нужно переосмысливат что такое объект, поэтому можно считать вынужденным шагом. - по идее модель не имеет никакого отношения к РМ - можно транслировать в РМ, а можно в EAV или куда угодно. Поэтому так и не ясно, зачем протаскивать реляционку на уровень объектов. - сами задачи уже давно неактуальны. Сложные объекты можно легко хранить и обрабатывать в EAV - получается гораздо более гибко, просто и понятно. Вот если бы была аналитика или семантика, то это было бы более актуально. Но для этого тоже надо переосмысливать модель, а когда тут такой якорь как РМ, то ясно, больших сдвигов не приходится ожидать. Но в целом это не самый плохой подход, тем более, что самому автору нравится (что самое главное). Я бы сказал где-то 45% по направлению к цели. В процессе реализации транслятора и языка наверняка появится много других вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 02:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
модель данныххНет, ошибки не должно быть. В том числе в случае ошибочного имени атрибута. Типа и на опечатки не реагировать? :-) модель данныххНо также очевидно, что и отличия между NULL и NotDef тоже не должно быть. Отсутствие свойства и отсутствие присвоенного значения это одно и то же (на уровен модели). Но само собой можно ввести любые спец. значения на уровне приложения. Если смыслы (причины) отсутствия значения разные, то почему же на уровне модели они должны обозначаться одинаково? Более того есть еще одно спецзнчение, в результате чего скажем булевская логика становится не трехзначной, а пятизначной. :-) модель данныххДа, здесь модель недоотработана (и очень сильно). У Вас глаз как у орла. За парой строчек рассмотрели целиком модель данных :-). модель данныххХуже другое: - очередная попытка скрестить реляционные и объектные модели. получается эклектично. Например, одновременно и ключи и ссылки. - мы видим и работаем с объектами, а назад получаем их обломки по частям. Это исправить тяжело (но можно), поскольку нужно переосмысливат что такое объект, поэтому можно считать вынужденным шагом. - по идее модель не имеет никакого отношения к РМ - можно транслировать в РМ, а можно в EAV или куда угодно. Поэтому так и не ясно, зачем протаскивать реляционку на уровень объектов. - сами задачи уже давно неактуальны. Сложные объекты можно легко хранить и обрабатывать в EAV - получается гораздо более гибко, просто и понятно. Вот если бы была аналитика или семантика, то это было бы более актуально. Но для этого тоже надо переосмысливать модель, а когда тут такой якорь как РМ, то ясно, больших сдвигов не приходится ожидать. Но в целом это не самый плохой подход, тем более, что самому автору нравится (что самое главное). Я бы сказал где-то 45% по направлению к цели. В процессе реализации транслятора и языка наверняка появится много других вопросов. Понял. Цитировали меня, но пишите не про меня. У нас нет никакой реляционной модели, нет никаких ключей и нет проблем получить назад объекты :-). Да и c семантикой всё нормально, вплоть до того что система поймет и "Количество_колес" и "Number_of_Wheels". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 02:43 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Не пойму в чем здесь фишка Раз Вы опять читаете по диагонали, объясню. Для начала ответьте, где я сказал, что чего то восстанавливаю? Вы написали кучу предложений, только потому, что по своему проинтерпретировали мои слова. Ссылки выглядят как направленные, а реально же они работают в обеих направлениях без всяких восстановлений. Говоря про ODMG я сравнил только языковые конструкции. Давайте сначала. Я уже говорил, что речь идет о активных объектах, описываемых и управляемых командами непроцедурного языка. Предположим, что у меня есть класс Ученики. Я его создал в своей схеме данных. Я создал кучу учеников. Эти объекты уже есть, они существуют на сервере (и больше нигде). В какой то момент времени я решил, что мне нужен класс учителей. Я его просто добаляю в схему данных на сервере. Здесь глагол "добавил" не значит, что добавил класс в текст программы, а потом программу перекомпилировал. Я просто выполняю команду, создающую этот класс на сервере, я добавляю его в существующую схему данных. А класс ученики я менять не хочу (хотя могу). Я создаю учителей, добавляю в них ссылки на издавна ссуществующих учеников и могу выполнять по этим ссылкам (фактически в любую сторнону) любые незапланированные запросы из любого клиентского приложения, котором требуются данные об этих объектах. При этом старые запросы (только к ученикам) если таковые использовались в этих любых клиентских приложениях, остаются неизменными. serg99Хладный труп ODMG пытаются реанимировать, но пульс близок к нулю. :-) Никто не мешает выполнить запросы Учителя[имя="Петров].Ученики.Имя; и Ученики[имя="Иванов"].Учителя.Имя; без генерации каких либо новых классов. О каких Вы новых классах, кстати? В контексте предыдущей ситуации (с добавлением класса Учителя), вам придется менять и класс ученики (что бы ссылки были направлены в обе стороны) и перекомпилировать программу целиком. Кстати, просматривая стандарт ODMG, я не уловил, что в этот момент будет с данными в хранилище.... как они соотнесуться с новым описанием классов. В любом случае, это будет нетривиальный процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 03:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 serg99 Теперь о Ваших средствах_передвижения. serg99Из "метаданных". Если он сам эти метаданные вводил, то может и просто вспомнить. А если не сам? Кстати, тут утверджают модель данныххНет, ошибки не должно быть. В том числе в случае ошибочного имени атрибута.почему он не прав? serg99Хотя бы у одного наследника есть "Количество_колес". А если количество_колес есть у разных наследников? serg99Тогда зачем в биологии вводили класс млекопитающих? Ведь нет ни одного животного этого класса. Есть коровы, люди, киты и т.п., а млекопитающего нет. Получается и в ООП абстрактные классы не нужны Мда. А Вы вконец жжете своими " немного философские расуждениями". Это уже и комментировать не хочется. Совсем. Я про строгий контроль типов, а мне в ответ псевдобиологический бред к которому приплетены уже абстрактные(?) классы. Тем не менее к этим млекопитающим (которых по Вашему нет) под конец Вы очень ловко ловко хоботы и ногти в запросах приделаете, которых у "отсутсвующих" млекопитающих изначально тоже нет. Логика железная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 03:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 модель данныхх хотя EAV и эклектику тут уже кто-то комбинировал :) автор- очередная попытка скрестить реляционные и объектные модели. получается эклектично. Например, одновременно и ключи и ссылки. Какая такая объектная модель? То, что у меня есть классы, не значит, что использую каую т ообъектную модель. Перестаньте напраслину наговаривать. :) Вы совсем зациклились на объектных моделях. автор- мы видим и работаем с объектами, а назад получаем их обломки по частям. Это исправить тяжело (но можно), поскольку нужно переосмысливат что такое объект, поэтому можно считать вынужденным шагом. Ну опять, дались вам эти объекты? Мне, например, не нужны объекты целиком. Мне на клиенте достаточно данных об объектах , представленных в соответствии с моим запросом. А обломки это или обмылки... хоть горшком назови. В любом ООП приложении мы видим и работаем с объектами ( переменными ), а "назад получаем" их свойства (данные об объектах) представленные в виде цифр, строк и т.п. значений . Увы и ах. Такова селява.Я с этим ничего сделать не могу. И не хочу. авторпо идее модель не имеет никакого отношения к РМ - можно транслировать в РМ, а можно в EAV или куда угодно. Поэтому так и не ясно, зачем протаскивать реляционку на уровень объектов. Если бы Вы заглянули в теорию, Вы бы увидели, что всё обоснование - сплошная реляционная модель данных. Такой строгий формальный базис. На самом деле - это чисто реляционная система, с немного навороченными метаданными. Но Вы, конечно, не загляните, и поэтому будете доказывать мне какую-то фигню, что де я что-то протаскиваю, и что это как то возможно по другому реализовать. Вы даже не представляете какую чушь Вы здесь пишете (ничего личного). автор- сами задачи уже давно неактуальны. Сложные объекты можно легко хранить и обрабатывать в EAV - получается гораздо более гибко, просто и понятно. Вот если бы была аналитика или семантика, то это было бы более актуально. Но для этого тоже надо переосмысливать модель, а когда тут такой якорь как РМ, то ясно, больших сдвигов не приходится ожидать. очередная бред про EAV. Вы понять то можете, что речь не идет о хранении объектов? Когда это до Вас дойдет, мантры про EAV сразу же прекратятся. Очередной критик. который критикует собственное представление непонятно о чем, не удосужившись ознакомиться с темой. Я уже это Вам (с вероятностью до эклектики и EAV в одной мессаге) говорил. Жду следующей инкранации (с той же вероятноятью) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 04:03 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99Не пойму в чем здесь фишка Раз Вы опять читаете по диагонали, объясню. Для начала ответьте, где я сказал, что чего то восстанавливаю? Вы написали кучу предложений, только потому, что по своему проинтерпретировали мои слова. Ссылки выглядят как направленные, а реально же они работают в обеих направлениях без всяких восстановлений. Так если они работают в обоих направлениях, зачем же Вы заставляете их выглядеть направленными :-). U-geneДавайте сначала. Я уже говорил, что речь идет о активных объектах, описываемых и управляемых командами непроцедурного языка. Предположим, что у меня есть класс Ученики. Я его создал в своей схеме данных. Я создал кучу учеников. Эти объекты уже есть, они существуют на сервере (и больше нигде). В какой то момент времени я решил, что мне нужен класс учителей. Я его просто добаляю в схему данных на сервере. Здесь глагол "добавил" не значит, что добавил класс в текст программы, а потом программу перекомпилировал. Я просто выполняю команду, создающую этот класс на сервере, я добавляю его в существующую схему данных. А класс ученики я менять не хочу (хотя могу). Я создаю учителей, добавляю в них ссылки на издавна ссуществующих учеников и могу выполнять по этим ссылкам (фактически в любую сторнону) любые незапланированные запросы из любого клиентского приложения, котором требуются данные об этих объектах. При этом старые запросы (только к ученикам) если таковые использовались в этих любых клиентских приложениях, остаются неизменными. Не видно с чего это изменились бы запросы к Ученикам, если бы Вы ввели ссылки в Учеников. Так как Учителя к Ученикам по крайней мере 1:N, то получается что для каждого объекта учителя у Вас может задаваться переменное число ссылок. Не очень понятно как это ложится в реляционные таблицы. Теперь если удаляется какой то ученик нужно удалить и ссылку на него в соответствующем учителе (то есть затратить время на ее поиск). Если бы была встречная ссылка, то времени тратить было бы не нужно. Еще сложнее в случае N:N, когда ссылки скорее всего нужно отчуждать от объектов и хранить в отдельной индексированной таблице. Раз индексированная то действует ("медленно положишь"). А если я потом ввожу класс "Школы", ввожу ссылки на соответствующих учителей, а потом учителей удаляю. Как понять в какой школе учится ученик? В общем природу не обманешь :-). U-geneВ контексте предыдущей ситуации (с добавлением класса Учителя), вам придется менять и класс ученики (что бы ссылки были направлены в обе стороны) и перекомпилировать программу целиком. Кстати, просматривая стандарт ODMG, я не уловил, что в этот момент будет с данными в хранилище.... как они соотнесуться с новым описанием классов. В любом случае, это будет нетривиальный процесс. У нас мало чего общего с ODMG. Ничего перекомпилировать не нужно. Описания классов в самом хранилище и находятся. А будет ли кто писать новые приложения с учетом добавленных в БД метаданных, и будет ли он писать эти приложения на C# или на ассемблере - это личное дело прикладных программистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 04:26 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene2 serg99 Теперь о Ваших средствах_передвижения. serg99Из "метаданных". Если он сам эти метаданные вводил, то может и просто вспомнить. А если не сам? Тогда просто смотрит метаданные. U-geneКстати, тут утверджают модель данныххНет, ошибки не должно быть. В том числе в случае ошибочного имени атрибута.почему он не прав? Если имя атрибута не задано ни в одном классе, то это скорее всего опечатка (то есть ошибка). Если имени атрибута нет в тех классах о которых запрос, то либо программист ошибочно полагает что такой атрибут есть в этих классах, либо он ошибочно ищет этот атрибут не в тех классах. То есть опять же ошибка. U-geneserg99Хотя бы у одного наследника есть "Количество_колес". А если количество_колес есть у разных наследников? Будет выводить количество колес как обычно. В этом контексте системе всё равно какого класса объект. U-geneТем не менее к этим млекопитающим (которых по Вашему нет) под конец Вы очень ловко ловко хоботы и ногти в запросах приделаете, которых у "отсутсвующих" млекопитающих изначально тоже нет. Логика железная. Не очень понятно чем Вы недовольны. "Средства_передвижения" - это обычный абстрактный класс, где скажем может быть задан атрибут "Максимальная_скорость". Если в первоначальным запросе заменить "Количество_колес" на "Максимальную_скорость", то запрос выдаст валидные значения и для автомобилей и для лошадей безо всяких NotDef, так как этот атрибут будет унаследован обоими классами. Код: plaintext Можно конечно в лоб записать как Код: plaintext но тогда если мы потом в средства передвижения добавим скажем велосипеды, то запрос будет выдавать неполный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 04:57 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Serg99, о чем ты воще говоришь? Ну, Ugene сделал какой то (ненужный :)) язык и тащится. А у тя что? (Между прочим, ВИПРОС может делать все что ты хотел в своем запросе - есть понятие "мигрирующие свойства", они могут передаваться вверх(представитель - например, основное место жительство)-вниз(точно) по всей иерархии типов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
вплоть до того, что она может понят что "колесо" и "ноги" в контексте "передвжения" одно и то же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:20 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosSerg99, о чем ты воще говоришь? Ну, Ugene сделал какой то (ненужный :)) язык и тащится. А у тя что? У мэнэ СУОБД. :-) ViPRos(Между прочим, ВИПРОС может делать все что ты хотел в своем запросе - есть понятие "мигрирующие свойства", они могут передаваться вверх(представитель - например, основное место жительство)-вниз(точно) по всей иерархии типов) У Вас насколько понимаю есть некая прикладная система для производства. Выглядит неплохо. Могли бы даже купить наверное. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:35 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99, хорошо было бы, заодно и бросили бы писать и суобд свой:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:40 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosвплоть до того, что она может понят что "колесо" и "ноги" в контексте "передвжения" одно и то же просто сами свойства тоже типизированы и не просто типизированы а в разных контекстах :) а то что Угини делает, ВИПРОС генерирует автоматом, компилирует и кеширует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:42 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
не только производство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 05:49 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosserg99, хорошо было бы, заодно и бросили бы писать и суобд свой:) "лучше все таки помучаться" (с) товарищь Сухов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 06:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosViPRosвплоть до того, что она может понят что "колесо" и "ноги" в контексте "передвжения" одно и то же просто сами свойства тоже типизированы и не просто типизированы а в разных контекстах :) а то что Угини делает, ВИПРОС генерирует автоматом, компилирует и кеширует Мельком посмотрел. Много правильных идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 06:31 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
А! очередная замороченная клиентская апликуха., которая что-то там генерит, кашируют, и компилирует. Несравнимо в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 19:58 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, на основе че это ты решил - клиентский там или серверный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 20:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Так если они работают в обоих направлениях, зачем же Вы заставляете их выглядеть направленными :-). Затем ,что это позволяет мне вводить в схему данных новые классы, не трогая старые. При этом ссылки от новых классов к старых работают в обе стороны. serg99Так как Учителя к Ученикам по крайней мере 1:N, то получается что для каждого объекта учителя у Вас может задаваться переменное число ссылок. Не очень понятно как это ложится в реляционные таблицы. Теперь если удаляется какой то ученик нужно удалить и ссылку на него в соответствующем учителе (то есть затратить время на ее поиск). Если бы была встречная ссылка, то времени тратить было бы не нужно. Еще сложнее в случае N:N, когда ссылки скорее всего нужно отчуждать от объектов и хранить в отдельной индексированной таблице. Раз индексированная то действует ("медленно положишь"). А если я потом ввожу класс "Школы", ввожу ссылки на соответствующих учителей, а потом учителей удаляю. Как понять в какой школе учится ученик? В общем природу не обманешь :-). Ложатся, работают, любые варианты, ничего отчуждать не нужно, никаких отдельные таблиц, природу никто не обманывает (Это не ногти с хоботами мешать). Про школы. Объекты, на которые есть ссылки удалить по-дефолту нельзя . Для связи школа-учитель этот дефолт очень даже подходит. Про Ваши Средства _передвижения. Я так понимаю, что это все-же фантазии. Например, я нафантазировал менять класс объекта... конечно не произвольным образом, а развивать его в иерархии наследования. Объект тот же самый, интерфейс тот тот же самый, но класс объекта поменялся на класс-наследник. Был служащий, стал менеджер. Но до тех пор, пока я это не реализую, я эту идею, как аргумент в споре , использовать не буду. маниловщина. Вон ViPRos написал какую то замороченную клиентскую апликуху и тащится. Я конечно подозреваю, что эта апликуха есть вещь в себе - например из Excelя к ней удаленно(как к SQL серверу) не подключиться. Но ему нравиться. Он всем ею в морду тычет. Есть чем ткнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 20:41 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Опана..... обиделся, что ли? :) Предназначена для построения прикладных информационных систем на основе реляционных структур данных с объектными расширениями на базе метаданных, описывающих типы, макротипы, свойства, ограничения, методы и события типов. На основе метаданных программа автоматически создает базу данных на SQL-сервере , создает визуальное представление данных в виде таблиц, деревьев и диаграмм Ганта в свободной форме, с возможностью редактирования и бесконфликтного хранения в базе данных . Пользователь может настраивать и в дальнейшем использовать сохраненные визуальные элементы и их местоположение. Встроенный генератор и менеджер отчетов позволяют пользователю проводить всесторонний анализ хранимых данных. Обеспечивает программиста функционально полным набором методов для работы с SQL-сервером без применения языка SQL Опять "программа создает в базе данных". Какие-то визуальные интерфейсы. Интерфейс без SQL. Примочка над SQL. Клиент. Может сервер приложений, но все равно, для SQL - клиент. Несравнимо в принципе. Я не умоляю возможных достоинств, просто сравнивать нельзя. У Вас интерфейс без SQL, а у меня SQL без интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 20:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
работа на ашипками ...не умаляю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 21:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, для SQL - хранимые процедуры (для работы ведения метаданных и генерации на их основе хранимок, вьюшек, динамических запросов и т.д.) для остальных обертки над этими хранимками хости на чем хошь, хоть на клиенте хоть где визуализатор - готовый клиент, строить рожи лучше 90% прогеров автоматически (ты просто коннектишься к БД и строится аппликуха для тебя под твои права, которую ты можешь перенастроить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 22:03 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, а ты свое реализовал или пока в проекте все это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2011, 22:05 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПро школы. Объекты, на которые есть ссылки удалить по-дефолту нельзя . Для связи школа-учитель этот дефолт очень даже подходит. Получается нужно понять есть ли ссылка на учителя, найти эту ссылку, удалить её и только потом удалить объект Учитель. А если на Учителя есть ссылки из M разных классов, то найти и удалить ссылки нужно M раз. А если из каких то классов ссылки N:1 или N:N объем работы растет в геометрической прогрессии. Випрос хотя бы старается где можно ограничиваться ссылками 1:N. U-geneПро Ваши Средства _передвижения. Я так понимаю, что это все-же фантазии. Описание предметной области это всегда фантазии пользователей выраженные тем или иным "языком". А мы (Ugene, Vipros, Serg99) собственно пытаемся предлагать разные модели данных и разные инструментальные средства, то есть тот "язык" на котором мы считаем пользователь сможет наиболее быстро и логично описать предметную область и наиболее эффективно решит поставленную перед ним задачу. U-geneВон ViPRos написал какую то замороченную клиентскую апликуху и тащится. Я конечно подозреваю, что эта апликуха есть вещь в себе - например из Excelя к ней удаленно(как к SQL серверу) не подключиться. Но ему нравиться. Он всем ею в морду тычет. Есть чем ткнуть. Действительно есть чем ткнуть. Другое дело что для коммерциализации любого продукта, каким бы новаторским он не был требуются команда и деньги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 02:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneОпять "программа создает в базе данных". Какие-то визуальные интерфейсы. Интерфейс без SQL. Примочка над SQL. Клиент. Может сервер приложений, но все равно, для SQL - клиент. Несравнимо в принципе. Я не умоляю возможных достоинств, просто сравнивать нельзя. У Вас интерфейс без SQL, а у меня SQL без интерфейса. На самом деле Випрос рассуждает вполне логично и так же как в своё время рассуждали мы. Программирование приложений или скажем администрирование БД являются ведь то же предметными областями. И можно хранить метаданные и данные этих предметных областей в той же самой БД. Например для новых классов хранить и их программную модель (модель вычислений реализованную в виде пригодном для использования произвольным приложением). В результате с некоторыми ограничениями приложение может оперировать с объектами даже неизвестных в момент написания приложения классов. Прежде всего это касается функций визуализации и модификации даных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 02:47 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneУ Вас интерфейс без SQL, а у меня SQL без интерфейса. А лучше одновременно интерфейс без SQL и SQL без интерфейса. EAV так и работает: 1. Класс создается на уровне метаописания 2. Объекты вводятся через интерфей (генерируется автоматически) 3. Доступ к объектам из программ - обычный SQL + набор вьюшек и функций. Сво-ва объектов можно получать напрямую из таблиц или через функции. 4. Наследование и полиморфим заменены на произвольную иерархич. классификацию объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 12:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модU-geneУ Вас интерфейс без SQL, а у меня SQL без интерфейса. А лучше одновременно интерфейс без SQL и SQL без интерфейса. EAV так и работает: 1. Класс создается на уровне метаописания 2. Объекты вводятся через интерфей (генерируется автоматически) 3. Доступ к объектам из программ - обычный SQL + набор вьюшек и функций. Сво-ва объектов можно получать напрямую из таблиц или через функции. 4. Наследование и полиморфим заменены на произвольную иерархич. классификацию объектов. Все это и без ЕАВ отлично работает (зачем ЕАВ , если есть Метаданные?). 3 Можно СКЛ спрятать. 4. Классификаторов Много, один и тот же тип классифицирован аспектно в разных местах. ЛЕСа. Каждый Лес = Контекст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 14:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99U-geneПро школы. Объекты, на которые есть ссылки удалить по-дефолту нельзя . Для связи школа-учитель этот дефолт очень даже подходит. Получается нужно понять есть ли ссылка на учителя, найти эту ссылку, удалить её и только потом удалить объект Учитель. А если на Учителя есть ссылки из M разных классов, то найти и удалить ссылки нужно M раз. А если из каких то классов ссылки N:1 или N:N объем работы растет в геометрической прогрессии. Випрос хотя бы старается где можно ограничиваться ссылками 1:N. Ссылки должны отделяться от ограничений целостности. Ссылка может быть и без ограничения целостности. Это настраивается. Воще это место самое затратное и сложное (для прикладного прогера и юзвера). Прогер работает с срезом метаданных и не видит все ссылки, потому движку приходится его дополнять, особенно по части удалений, так как у прогера (юзера) нехватает прав, что бы работать с метаданными вне среза (со скрытыми ссылками). (допустим прогеру доступен срез макротипа Накладные, а они связаны с материалами и ЕИ, дык вот, в эти типы он че то может добавить, а удалить уже нет, потому что он НЕ видит, где эти материалы и ЕИ еще использованы, приходится тут его подменить, если он пытается удалить.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 14:19 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosВсе это и без ЕАВ отлично работает (зачем ЕАВ , если есть Метаданные?). Как ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 15:31 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosПрогер работает с срезом метаданных На чтение можно использовать SQL, а вот на изменения объектов - только процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 15:35 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, при изменении метаданных синхронно изменяется и БД на основе метаданных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 15:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
до изменения БД данные (касательно измененной структуры) хранятся в ЕАВ, при малейшей возможности БД автоматически синхронизируется ЕАВ как кеш изменений до момента классификации я рассказывал как то про динамическую классификацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 15:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модViPRosПрогер работает с срезом метаданных На чтение можно использовать SQL, а вот на изменения объектов - только процедуры. прогер не знает ничего о прецедурах там или СКЛ он пишет SaveChanges и все процедуры необязательны (права определяются секюрити менеджером и все делается движком, пользователи ВСЕ - паблик) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 15:42 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRos_мод, при изменении метаданных синхронно изменяется и БД на основе метаданных alter table .... А что делать с уже написанными программами ? Они же сразу становятся invalid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:23 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, Почему? я же говорил про контракты (метаданные не так просто менять) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:25 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosпрогер не знает ничего о прецедурах там или СКЛ На каком-же языке он программы пишет ? (подозреваю птичий) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:25 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ВСЕ методы типов хранятся в БД изменение метаданных касается их и если изменение мета приводит к невыполнимоси метода то они отменяются или метод отмечается как неисполнимым с соответствующим икзепшном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:28 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
а пока БД не синхронизировано данные в ЕАВ кеше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:29 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модViPRosпрогер не знает ничего о прецедурах там или СКЛ На каком-же языке он программы пишет ? (подозреваю птичий) на любом NET языке (переделаю на сервисы и тогда на любом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosна любом NET языке (переделаю на сервисы и тогда на любом) С вызовом методов из БД ? А как работать с множеством объектов без запросов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:37 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, я не понимаю, что такое множество объектов в ВИПРОС есть ТИП и МАКРОТИП(ТИПы + Ссылки) Прогер работает с Макротипами (любой Тип имеет дефольтный макротип) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:42 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosизменение метаданных касается их и если изменение мета приводит к невыполнимоси метода то они отменяются или метод отмечается как неисполнимым с соответствующим икзепшном Т.е. изменение метаданных -> alter table ... -> компиляция методов -> икзепшн в runtime у эндюзера Так ? зы вот для чего и нужен EAV - никаких alter table .. и икзепшн , а метаданные меняй как хошь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:43 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
в памяти создается БД куда сваливаются все загруженные макротипы прогер работает с этой БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:44 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, алтер тейбл может нарушить работу метода только если Удалено что то значимое (Тип или его свойство) Но модель ведет Модельщик а не кто нить???????? зачем ему че то удалять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:46 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosя не понимаю, что такое множество объектов как написать программу, выводящую на печать список объектов заданного класса по фильтру без SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:46 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, ЛоадМакротип(Имя, Фильтр) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:47 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ЕАВ в ВИПРОС есть в чистом виде (один из режимов) но расписание производства или АПС там работает часами :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:49 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
может плохо реализовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:49 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosЛоадМакротип(Имя, Фильтр) Маловато будет. А сложные запросы c join- ами, подзапросами и прочей аналитикой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модViPRosя не понимаю, что такое множество объектов как написать программу, выводящую на печать список объектов заданного класса по фильтру без SQL ? ну такая фигня счас получается Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модViPRosЛоадМакротип(Имя, Фильтр) Маловато будет. А сложные запросы c join- ами, подзапросами и прочей аналитикой ? Какие джойны????? Есть Тип, Макротип (персистентный, виртуальный) все джойны и т.д. делаются при вызове Макротипов а Внутри если надо LINQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:55 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosно расписание производства или АПС там работает часами :( Да, для таких задач ЕАВ не годится, надо комбинировать (или все в ОП закачивать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модViPRosно расписание производства или АПС там работает часами :( Да, для таких задач ЕАВ не годится, надо комбинировать (или все в ОП закачивать) Потому и комбинировал ЕАВ сейчас нужен 1. Для нетипизированных свойств 2. для кеша до типизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 16:58 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosну такая фигня счас получается Мне SQL как-то ближе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 17:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosКакие джойны????? Есть Тип, Макротип (персистентный, виртуальный) все джойны и т.д. делаются при вызове Макротипов а Внутри если надо LINQ Т.е. все предопределено заранее и программист не может ничего сделать ? Надо создавать новый Макротип ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 17:05 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, если этот Макротип для описания предметной области то лучше его создать (виртуальный (вью из имеющихся типов) или персистентный) а вощне можно работать и с СКЛ вот методы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 17:11 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRos Ваш подход понятен, успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 17:13 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, вот тут на писатель попытался описать как мог (частично и с ошибками + устарела сильно) если охота полистай много че с той поры добавлено, но конечно работать и работать еще, но некогда прикладные задачи отнимают все время вот ссылка http://depositfiles.com/files/5q6qmjo9y сообщие если скачаешь, что бы убил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2011, 18:03 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosсообщие если скачаешь, что бы убил спасибо, можно убирать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2011, 10:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Прототип работает. Но это не продакшн, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2011, 20:54 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 serg99 1:1, 1:N, N:1, N:N Все реализуется в классе, где ссылка, путем добавления глобального условия на уникальность, сиречь ключи. Любое поле объявленное в классе как ключ (его значчение уникально среди всех объекто класса), автомотом ограничивает связь как ...:1 с той стороны. Если с этой стороны единичная ссылка то 1:.. , если ссылка в группе, то N:... . Например единичная ссылка, которая глобально уникальна в классе - 1:1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2011, 21:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПрототип работает. Но это не продакшн, конечно. При большом числе бесплатных СУБД и различных ОРМ надстроек над ними вопрос успешной коммерции в области еще одной ОРМ надстройки весьма проблематичен. Нужен инвестор готовый на длинные инвестиции без гарантий успеха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 15:50 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene2 serg99 1:1, 1:N, N:1, N:N Все реализуется в классе, где ссылка, путем добавления глобального условия на уникальность, сиречь ключи. Любое поле объявленное в классе как ключ (его значчение уникально среди всех объекто класса), автомотом ограничивает связь как ...:1 с той стороны. Если с этой стороны единичная ссылка то 1:.. , если ссылка в группе, то N:... . Например единичная ссылка, которая глобально уникальна в классе - 1:1. В любом случае остаются проблемы ссылочной целостности. Либо если эти проблемы решаются в рамках надстройки над СУБД остаются проблемы влияния поддержки ссылочной целостности на скорость работы СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 16:03 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 serg99 Алё! Алё! Есть Кто-нибуть! Это не идет о ОРМ надстройке! Я уж не знаю, как до Вас эту мысль донести. Я не говорю о том как реализовано, я говорю о том, что реализовано. serg99В любом случае остаются проблемы ссылочной целостности. Либо если эти проблемы решаются в рамках надстройки над СУБД остаются проблемы влияния поддержки ссылочной целостности на скорость работы СУБД. Где проблемы остаются? У Вас может и остаются. У меня - нет. И, еще раз - это не ОРМ. Вы бы всё же ознакомились с темой, а то как то даже смешно: столько пишете - и всё о чём-то своем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 17:08 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene2 serg99 Алё! Алё! Есть Кто-нибуть! Это не идет о ОРМ надстройке! Я уж не знаю, как до Вас эту мысль донести. А ты попробуй донеси как нить. Потому что я тоже думаю, что это чистой воды ОРМ, и худший, потому что надо вручную на стороне сервера создавать классы или написать еще один слой для маппинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 18:51 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
А это типичный случай. Современный среднестатический разработчик слыша фразу, где как-то сочетаются объекты и SQL, сразу начинает думать о маппинге. Какой ORM? Я уж не говорю о исходной статье, где .все достаточно подробнно описано. Вы хотя бы тему внимательно прочитайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 20:52 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
В последнем посте под темой я подразумеваю название топика . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 20:58 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, а ы все равно постарайся вот в СУБД есть объекты - таблица, поле таблицы, ключ, процедура, триггер, транзакция.... ты туда новые объекты ввел? типа - класс, метод и т.д? или на объектах СУБД построил другие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 21:25 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, ORM (англ. Object-relational mapping, рус. Объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как коммерческие, так и свободные реализации этой технологии это что ли? это чушь, како йж дебил может написать такое я не знаю связывает базы данных с концепциями объектно-ориентированных языков программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 21:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
неа , давайте с ORm разберемся для начала Можно сказать, что основной целью ORM является сохранение данных объектов, существующих в памяти программы, в реляционной БД? Потому что память программы непесистентна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 21:50 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Это еще одна черта среднестатических разработчиков. Первый абзац прочитают и всё им типа понятно и, конечно, всё не так. Хотя может быть, в последующем тексте есть что-то полезное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 21:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, ну если первый абзац полная фигня то дальше читать нет смысла а ты отвечай на вопрос, если конечно хочешь донести :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 22:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneнеа , давайте с ORm разберемся для начала Можно сказать, что основной целью ORM является сохранение данных объектов, существующих в памяти программы, в реляционной БД? Потому что память программы непесистентна. я бы сказал иначе ОРМ(М тут =маппинг) - трансформация одной модели данных в другую (объектную в РМД) всякие Память, программа, персистентность тут не причем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 22:05 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Персистентность не при чем.Понял. Народ просто так заморочился отображением структур. Это очень интересное восприятие мэппинга. Например, если абстрагироваться от РМД и от персистентности, то С++ компилятор - это тоже мэппинг. Из модели объектов в модель ОЗУ. Не, ну конечно можно и так считать. Хотя все вокруг вроде бы считают по другому, то есть что мэппинг нужен, что бы как то сохранить данные объектов из неперсистентного ОЗУ в базу данных. Объясню. Я просто пытаюсь сопоставить отправные точки (надеясь, что Вы здесь не тупо троллите). Несовпадение отправных точек понимаю - Вам не когда всякие книжки целиком читать, кодить нужно. Первых абзацев какбэ достаточно. Но найти исходные точки пока не получается (или Вы действительно тупо троллите). Так нафига мэппинг нужен, если персистентность не при чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 23:02 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, да что ты прицепился к персистентности? этот аспект тут малозначителен или вовсе не присутствует транслятор, конечно, маппер язык->язык, потому и назван транслятор а не колбаса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 23:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
предстваь что общаются два процесса один работает с табличками а другой с объектами им надо общаться вот между ними и сидит маппер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2011, 23:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Представил. Перенос данных (значений) из объектов в таблице все имеет место быть. Я прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
На мою фразу Например, если абстрагироваться от РМД и от персистентности, то С++ компилятор - это тоже мэппинг. Из модели объектов в модель ОЗУ. ответьте "да" или "нет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:13 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneНа мою фразу Например, если абстрагироваться от РМД и от персистентности, то С++ компилятор - это тоже мэппинг. Из модели объектов в модель ОЗУ. ответьте "да" или "нет". да. токо память тут не при чем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:25 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПредставил. Перенос данных (значений) из объектов в таблице все имеет место быть. Я прав? да каких данных??????? Синтаксис и структуру. Данные тут в последнюю очередь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:28 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Ахахах В последнюю очередь? Ржу. Понял. В этом примере (с двумя потоками) тоже речь идет не о переносе данных между потоками. Ну так... просто заморочка. Данные мы переносить не будем. Про С++ компилятор ответьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:32 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneАхахах В последнюю очередь? Ржу. Понял. В этом примере (с двумя потоками) тоже речь идет не о переносе данных между потоками. Ну так... просто заморочка. Данные мы переносить не будем. Про С++ компилятор ответьте. зря ты ржешь, это воще то неприлично конечно все можно назвать Данными или Объектами. Но это неприлично, потому что у них нет определения однозначного. С++ компилятор = Маппер. Только память, персистентность и т.д. тут не при чем. Ты че там начитался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:40 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
А, заметил ответ. Трансляция - тоже маппинг. Какая прелесть. Ржу опять. А че? давайте называть дома коробками, автомобили - повозками, реакторы - печками, самолеты - птицами (а чё, тоже летают) и т.д. (......а потому, что первые абзацы читаем). Я не против - лично Вы называйте как хотите. Тока людей, которые тут читают, не стоит путать своими понятиями. Вдруг, они не только первые абзацы читают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:41 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
и будь добр тоже отвечать так ты расширил Объектную Модель РМД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:43 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneА, заметил ответ. Трансляция - тоже маппинг. Какая прелесть. Ржу опять. А че? давайте называть дома коробками, автомобили - повозками, реакторы - печками, самолеты - птицами (а чё, тоже летают) и т.д. (......а потому, что первые абзацы читаем). Я не против - лично Вы называйте как хотите. Тока людей, которые тут читают, не стоит путать своими понятиями. Вдруг, они не только первые абзацы читают? во обобщать уже умеешь учись и трансформировать тогда увидишь что все Процессы = Маппинг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:46 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Опана - неприлично. :) Ржу смеюсь опять. Тыкать незнакомым людям неприлично. У меня была одна коллега (но она из Алма-аты, ей простительно, там менталитет немного другой), тоже тыкала, но пыталась приличиям учить, приходилось обламывать. Вы введите Object relatonal Mapping в поисковике. почитайте, что там пишут дальше первого абзаца. Например здесь Mapping Terminology Mapping (v). The act of determining how objects and their relationships are persisted in permanent data storage, in this case relational databases Ну и так далее. Но, понятно, там это не первый абзац (5й или 6й). Но у вас источники другие. Какие? Боюсь, что там, дальше первого абзаца, встретится какая-нить фраза про хранение, или про персистентность, или про перенос значений и .т.д. Перестаньте троллить. Все вы понимаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:54 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Неа, я так обощать не умею. Это я тонко ирноизирую над Вашим способом "обощений", а именно - свалить всё в одну кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 00:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneОпана - неприлично. :) Ржу смеюсь опять. Тыкать незнакомым людям неприлично. У меня была одна коллега (но она из Алма-аты, ей простительно, там менталитет немного другой), тоже тыкала, но пыталась приличиям учить, приходилось обламывать. Вы введите Object relatonal Mapping в поисковике. почитайте, что там пишут дальше первого абзаца. Например здесь Mapping Terminology Mapping (v). The act of determining how objects and their relationships are persisted in permanent data storage, in this case relational databases Ну и так далее. Но, понятно, там это не первый абзац (5й или 6й). Но у вас источники другие. Какие? Боюсь, что там, дальше первого абзаца, встретится какая-нить фраза про хранение, или про персистентность, или про перенос значений и .т.д. Перестаньте троллить. Все вы понимаете. Я тоже из оттудова таукую глуспость читать даже не стану Mapping (v). The act of determining how objects and their relationships are persisted in permanent data storage, in this case relational databases ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Объектная модель РМД. Приплыли. Вы, извините, понимаете, что говорите?(Кто-нибудь здесь это понимает?) Скажите, а у арифметики есть объектная модель? РМД я не трогаю. Её достаточно. Что такое объектная модель РМД - я не понимаю. Видимо это так же, как с маппингом. Вы реактор печкой назвали, и пытаетесь теперь выяснить, как же туда дров положить. Засим на сегодня откланиваюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
не читай глупых все в жизни Куча Контекстный маппинг кучи приводит к пониманию сути. Я не троллю, ты просто начитался всякой дешевой фигни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:05 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene Объектная модель РМД. Приплыли. Вы, извините, понимаете, что говорите?(Кто-нибудь здесь это понимает?) Скажите, а у арифметики есть объектная модель? РМД я не трогаю. Её достаточно. Что такое объектная модель РМД - я не понимаю. Видимо это так же, как с маппингом. Вы реактор печкой назвали, и пытаетесь теперь выяснить, как же туда дров положить. Засим на сегодня откланиваюсь. Ну вот :) Как раз Ожидаемая реакция :) Значит у РМД НЕТ объектной модели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:06 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Давай сначала с маппингом разберемся. С терминами вообще. Давай ссылки на дорогую нефигню. где маппингом называется только отображение структур (не имеющее цель переноса значений) Давай ссылки на дорогую нефигню, где маппингом называется трансляцию языков программирования. А знаешь? я согласен даже на дешевую фигню, где такие идет проскальзывают. Давай ссылки. Дашь ссылки - попытаюсь объяснять в твоих странных терминах. Значит у РМД НЕТ объектной модели? Кончай бредить...."как мы расширяем модель модели"... "значит у модели нет модели".... брррр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:35 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
...идеи проскальзывают.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 01:36 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, ну давай читать про маппинг погугли алгебра маппинг инективны биективный и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 02:10 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene2 serg99 Алё! Алё! Есть Кто-нибуть! Это не идет о ОРМ надстройке! Я уж не знаю, как до Вас эту мысль донести. Я не говорю о том как реализовано, я говорю о том, что реализовано. У Вас были некие слова о том что все возможности SQL остаются в силе, что объект это подмножество РСУБД, данные хранятся в РСУБД. При этом Вы даёте возможность клиентскому приложению общаться с БД используя объектную парадигму. То что Ваши средства выполнены в виде сервера приложений, перехватывают запросы пользователя, и могут скрывать от него нижлежащую РСУБД, с моей точки зрения всё равно не выводит их за пределы ОРМ надстройки. Ведь все "объектные" операции с персистентными данными всё равно в конечном счете транслируются в операции с реляционными отношениями в РСУБД. То что дополнительный функционал обычно реализуемый в клиентском приложении (вычисляемые свойства, реализация стандартных алгоритмов в методах классов вместо триггеров и т.п.) перенесли в сервер пиложения и сделали общими для разных приложений с целью упрощения их написания не меняет сути используемой архитектуры. Относить или не относить Ваш подход к ОРМ скорее вопрос терминологии. Я собственно и не настаиваю. U-geneserg99В любом случае остаются проблемы ссылочной целостности. Либо если эти проблемы решаются в рамках надстройки над СУБД остаются проблемы влияния поддержки ссылочной целостности на скорость работы СУБД. Где проблемы остаются? У Вас может и остаются. У меня - нет. Проблемы простые. Если можно удалить объект не удаляя ссылку на него, то это вызывает проблемы ссылочной целостности. Если Вы при удалении любого объекта автоматом удаляете и ссылки на него, то это вызывает проблемы скорости. [quot U-gene]U-geneВы бы всё же ознакомились с темой, а то как то даже смешно: столько пишете - и всё о чём-то своем. Куда уж нам с суконным рылом в сермяжный ряд :-). Я собственно и не сомневаюсь что Вы теоретически подкованы гораздо лучше меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 04:59 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneПро С++ компилятор ответьте. Вообще то компилятор С++ переводит описание программы понятное программисту в описание программы понятное компьютеру. Оба описания персистентны. Загрузчик ОС берет двоичное описание программы и после зачастую весьма нетривиальных преобразований создает образ прграммы в ОЗУ (может мэппировать в разные области ОЗУ) после чего запускает её. Только после этого объект "программа" в реальности появляется как объект этого мира. А в это время где то в БД которая регистрирует запущенные пользователями программы появляется объект-описание этой же программы содержащий всего лишь имя программы, время её запуска, и имя клиента который ею в настоящий момент пользуется. По сравнению с тексом программы на С++ данное описние программы в БД получается какой то ничтожной тенью с тремя атрибутами двух из которых кстати в наиболее полном описании программы на С++ вообще нет. Но ведь больше для решения задачи регистрации использования программы клиентами не нужно. Вы опять скажете что я замучил Вас философией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 05:16 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 ViPRos ViPRosU-geneДавай ссылки на дорогую нефигню. где маппингом называется только отображение структур (не имеющее цель переноса значений) Давай ссылки на дорогую нефигню, где маппингом называется трансляцию языков программирования. погугли то есть ссылки ты дать не можешь. Понятно. Гуглить не буду. Вдруг опять дешевая фигня окажется. Ссылки давай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 15:39 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99 То что Ваши средства выполнены в виде сервера приложений, перехватывают запросы пользователя, и могут скрывать от него нижлежащую РСУБД, Нет у меня возможности добавить эти языковые расшрения непосредственно туда внутрь. Нет у меня доступа к исходному коду программы. которая называется, например, "MS SQL сервер" что бы добавить немного кода в его SQL транслятор. Зачем Вы вообще смотрит как реализовано? serg99То что дополнительный функционал обычно реализуемый в клиентском приложении (вычисляемые свойства, реализация стандартных алгоритмов в методах классов вместо триггеров и т.п.) перенесли в сервер пиложения То есть Вы думает, что я объекты спрятал в сервер приложений и из этих объектов данные в таблицы маплю втихаря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 15:59 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99 То что Ваши средства выполнены в виде сервера приложений, перехватывают запросы пользователя, и могут скрывать от него нижлежащую РСУБД, Нет у меня возможности добавить эти языковые расшрения непосредственно туда внутрь. Нет у меня доступа к исходному коду программы. которая называется, например, "MS SQL сервер" что бы добавить немного кода в его SQL транслятор. Зачем Вы вообще смотрит как реализовано? Вообще то первые трансляторы С++ всего лишь переводили текст программ С++ в текст на С. Не думаю что доступ к коду SQL транслятора принципиален. Допустим он у Вас есть. Появятся ли на выходе этого транслятора какие то операции отличные от операций над реляционными отношениями? Если нет, то у Вас происходит мэппинг на реляционную модель данных. И здесь не важно как это реализовано - используете ли Вы какие то готовые СУБД, какая часть ваших отношений хранится в этой СУБД, а какая часть еще как то, используете ли Вы курсоры, каким образом и для чего транслятор использует переменные, и т.п. То есть не важно с точки зрения определения что это мэппинг, хотя может быть и важно с точки зрения потребительской ценности для пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 16:53 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, вот тут у меня книжка такая хошь дам почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:06 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene, вот тут у меня книжка такая хошь дам почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
два раза че то получилось :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:12 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRos вот тут у меня книжка такая Увлекательное чтиво. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:35 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99, пусть читает, а то все википедией тычет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:50 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
и чё? Я понимаю. что отображение переводится как mapping. Но термин ORM имеет вполне конкретное значение, отличающееся от mapping так же, как hot-dog отличается от dog. где тут про ORM? где автор, где название? Отмаза в стиле "о какие у меня крутые сканы есть". В свете тваво Выпросэто чистой воды ОРМ, я какбэ намекаю, что у тя каша в голове. Во всяком случае, ты свои (возможно правильные) мысли обозначаешь хз какими терминами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:22 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99ViPRosвот тут у меня книжка такая Увлекательное чтиво. :-) Ржу уже изпадстала. Там полтекста между первой и второй страницей не видно, но "увлекательное чтиво". :) Анекдот. В свете "Я собственно и не сомневаюсь что Вы теоретически подкованы гораздо лучше меня." это выглядит особенно мило. Вы уж, дружище, определитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:26 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99U-geneпропущено... Нет у меня возможности добавить эти языковые расшрения непосредственно туда внутрь. Нет у меня доступа к исходному коду программы. которая называется, например, "MS SQL сервер" что бы добавить немного кода в его SQL транслятор. Зачем Вы вообще смотрит как реализовано? Вообще то первые трансляторы С++ всего лишь переводили текст программ С++ в текст на С. Не думаю что доступ к коду SQL транслятора принципиален. Допустим он у Вас есть. Появятся ли на выходе этого транслятора какие то операции отличные от операций над реляционными отношениями? Если нет, то у Вас происходит мэппинг на реляционную модель данных. И здесь не важно как это реализовано - используете ли Вы какие то готовые СУБД, какая часть ваших отношений хранится в этой СУБД, а какая часть еще как то, используете ли Вы курсоры, каким образом и для чего транслятор использует переменные, и т.п. То есть не важно с точки зрения определения что это мэппинг, хотя может быть и важно с точки зрения потребительской ценности для пользователей. и чё? ну раз всё маппинг, то у меня - тоже маппинг. Потому что "всё маппинг". То есть на двух разворотах спор о том, что раз "все маппинг" то это тоже маппинг. В чем смысл Ваших постов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:30 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 serg99 Раз уж Вас так увлекло чтиво - пожалте недостающий кусок внизу первой страницы. но и ту про ORM нетути ни словечка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:46 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 ViPRos Отбой. Автора и название я по тексту вспомнил. Ржу я с вас. Как дети малые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:49 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 ViPRos Так чё там у тя про "модель - не модель"? Ты определился ужо??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 02:55 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99пропущено... Увлекательное чтиво. :-) Ржу уже изпадстала. Там полтекста между первой и второй страницей не видно, но "увлекательное чтиво". :) Анекдот. В свете "Я собственно и не сомневаюсь что Вы теоретически подкованы гораздо лучше меня." это выглядит особенно мило. Вы уж, дружище, определитесь. Так я смайлик поставил. С ходу почти ничего не понял. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 04:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99пропущено... Вообще то первые трансляторы С++ всего лишь переводили текст программ С++ в текст на С. Не думаю что доступ к коду SQL транслятора принципиален. Допустим он у Вас есть. Появятся ли на выходе этого транслятора какие то операции отличные от операций над реляционными отношениями? Если нет, то у Вас происходит мэппинг на реляционную модель данных. И здесь не важно как это реализовано - используете ли Вы какие то готовые СУБД, какая часть ваших отношений хранится в этой СУБД, а какая часть еще как то, используете ли Вы курсоры, каким образом и для чего транслятор использует переменные, и т.п. То есть не важно с точки зрения определения что это мэппинг, хотя может быть и важно с точки зрения потребительской ценности для пользователей. и чё? ну раз всё маппинг, то у меня - тоже маппинг. Потому что "всё маппинг". То есть на двух разворотах спор о том, что раз "все маппинг" то это тоже маппинг. В чем смысл Ваших постов? Смысл не изменился. Представляется что Вы не смогли предложить объектную модель данных. Те же объектные расширения для РСУБД которые Вы предложили описаны тяжелым для восприятия способом, который несет в себе эклектичную смесь обоих миров и особенности реализации. Например классы у Вас с одной стороны имеют интерфейсы, с другой стороны состоят из методов, ключей и компонентов где последние могут быть типа "набор кортежей". Да еще в классе перечислены родительские классы (явно не указано является ли такое перечисление в свою очередь компонентом). Вот собственно коротко. При этом вполне возможно что автоматизация создания схемы БД при создании классов, возможность использовать точечную запись в запросах, и др. имеют свою потребительскую стоимость так как позволяют пользователям решать какие то задачи быстрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 04:51 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene2 ViPRos Так чё там у тя про "модель - не модель"? Ты определился ужо??? ты о чем? я уж подзабыл, напомни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 11:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Жесткая шутка, смайликов можно побольше serg99Например классы у Вас с одной стороны имеют интерфейсы, с другой стороны состоят из методов, ключей и компонентов где последние могут быть типа "набор кортежей". Да еще в классе перечислены родительские классы (явно не указано является ли такое перечисление в свою очередь компонентом) Почему же "с одной стороны" и "с другой стороны"? Вчитывался в текст, но не понял, почему Вы так решили. Спецификация определяет класс и полностью описывает интерфейс, по которому можно обращаться к данным и методам объектов класса. В спецификации перечисляются родительские классы, значимые (т.е. имеющие значение) компоненты, методы (возможно параметризованные) и ключи. Первое предложение - зачем спецификация нужна. Второе - как она выглядит. Интерфейс - это и есть совокупность методов и компонентов (они могут наследоваться от родительских классов). Ключи - ограничения целостности. Всё это задается в спецификации класса. serg99....эклектичную смесь обоих миров.....компонентов, где последние могут быть типа "набор кортежей" Компоненты объекта сравнимы с таблицами, а объект целиком сравним с реляционной БД. Это не эклектика. Именно это предположение позволяет непротиворечиво соединять свойства ОО и реляционных систем в одной системе. Любая система - это набор правил, которых надо придерживаться, что бы получить какие то возможности. Я ввожу всего одно правило "объект = реляционная БД" и предлагаю реализующие его средства. Если пользователь примет это правило и воспользуется этими средствами (очень КМК несложными) , он получает возможности и реляционных СУБД и OOЯП в одной системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 11:50 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-gene Я ввожу всего одно правило "объект = реляционная БД" и предлагаю реализующие его средства. Если пользователь примет это правило и воспользуется этими средствами (очень КМК несложными) , он получает возможности и реляционных СУБД и OOЯП в одной системе. Ты даже не понимаешь о чем говоришь :) "объект = реляционная БД", тогда одно из них лишнее (хотя я думаю, они оба нафиг не нужны, первая слишкоб обща, вторая слишком узка) Вышеуказанную сентенцию можно заменить на более простую - "РМД можно описать в ООП" что уже 1000 раз сделано(всякие субд, орм и т.д.) а "объект = подсхема" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 12:11 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
и не = , а "структурно отображемо" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 12:57 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneЛюбая система - это набор правил, которых надо придерживаться, что бы получить какие то возможности. Я ввожу всего одно правило "объект = реляционная БД" и предлагаю реализующие его средства. Если пользователь примет это правило и воспользуется этими средствами (очень КМК несложными) , он получает возможности и реляционных СУБД и OOЯП в одной системе. У Вас же вычисляемые свойства не могут быть персистентными. Значит Вы сами своё правило и нарушаете. :-) ООЯП и СУБД сейчас и так есть в одной системе. ООЯП на стороне клиента, а СУБД на сервере. Думаю и Ваша надстройка может быть оформлена как клиентская библиотека. При этом если Вы обеспечите совместимость с разными РСУБД (Oracle, MS SQL и т.п), то эта библиотека не будет завязана только на My SQL, что с точки зрения коммерческого успеха правильно. При этом изучать Ваш инструментарий должны будут прикладные программисты, которые и так вполне комфортно себя чувствуют с ООЯП, а не администраторы БД, которые вряд ли захотят изучать что то новое, а тем более брать на себя ответственность за корректную работу неизвестной никому серверной прибамбасины. А основная проблема как я и говорил в том что все пытаются прикрутить ООЯП к РСУБД, в то время как нужно прикручивать объектный подход к модели данных БД. Какие при этом элементы уже существующие в ООЯП или в РСУБД окажутся использованными - вторичный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 16:09 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99У Вас же вычисляемые свойства не могут быть персистентными. Значит Вы сами своё правило и нарушаете Опана. Уровень дилетантизма меня поражает. Вот весьма формальное определение реляционной базы данных, которое дает Дейт T h e T h i r d M a n i f e s t o (version dated October 30th, 2011) http://www.dcs.warwick.ac.uk/~hugh/TTM/TTM-2011-10-30.pdf 14. Database relvars shall be either real or virtual. .... 16. A database shall be a named container for relvars; the content of a given database at any given time shall be a set of database relvars. ... Оригинал здесь Как видно, база данных - это набор любых relval. Они могут быть и хранимыми и вычисляемыми. Если по-простому: РБД - это не только таблицы, но и виды. Что в точности соответствует компонентам моих объектов. Ваши дальнейшие рассуждения про ООЯП я воспринял как отвлеченные философские рассуждения, опять о чем то о Вашем личном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 23:07 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
2 ViPRos Реляционная БД здесь чисто формальное понятие, которое ни к каким СУБД отношения не имеет. Но ты опять о чем то своем думаешь. Поэтому тебе всякая фигня кажется. иди Бурбаки почитай. :) так про это написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2011, 23:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneserg99У Вас же вычисляемые свойства не могут быть персистентными. Значит Вы сами своё правило и нарушаете Опана. Уровень дилетантизма меня поражает. Вот весьма формальное определение реляционной базы данных, которое дает Дейт T h e T h i r d M a n i f e s t o (version dated October 30th, 2011) http://www.dcs.warwick.ac.uk/~hugh/TTM/TTM-2011-10-30.pdf 14. Database relvars shall be either real or virtual. .... 16. A database shall be a named container for relvars; the content of a given database at any given time shall be a set of database relvars. ... Оригинал здесь Как видно, база данных - это набор любых relval. Они могут быть и хранимыми и вычисляемыми. Если по-простому: РБД - это не только таблицы, но и виды. Что в точности соответствует компонентам моих объектов. Ваши дальнейшие рассуждения про ООЯП я воспринял как отвлеченные философские рассуждения, опять о чем то о Вашем личном. Почему же Вы решили что вычисляемые релвары не могут быть персистентными? Тот же Дейт пишет. "База данных— это некоторый набор перманентных (постоянных) данных, ис- пользуемых прикладными системами какого-либо предприятия." Данные которые не переживают порождающую их транзакцию с моей точки зрения нельзя назвать постоянными. Конечно и у Дейта взгляды могут меняться. А я как дилетант за этим естественно не слежу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 05:48 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99Почему же Вы решили что вычисляемые релвары не могут быть персистентными? :) тогда почему Вы решили, что serg99раньше У Вас же вычисляемые свойства не могут быть персистентными??? Вы разницу между данными таблиц и видов понимаете? Первые хранятся, вторые вычисляются - на основании хранимых данных . Поэтому БД целиком - это как пишет Дейт "некоторый набор перманентных (постоянных) данных". которые либо представлены точно в том виде в котором они храняться (таблицы), либо иным образом (виды), о чем он пишет в другом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 08:34 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneВы разницу между данными таблиц и видов понимаете? Первые хранятся, вторые вычисляются - на основании хранимых данных . Поэтому БД целиком - это как пишет Дейт "некоторый набор перманентных (постоянных) данных". которые либо представлены точно в том виде в котором они храняться (таблицы), либо иным образом (виды), о чем он пишет в другом месте. Как правило Вид это всего лишь ссылка на подзапрос и временные таблицы соответствующие Видам существуют не дальше своей транзакции. А могут и совсем не существовать так как запросный оптимизатор может их заоптимизировать совместно с основным запросом. Соответственно постоянными данными эти Виды назвать нельзя. И у Дейта нет знака равенства между виртуальными релварами и Видами. С другой стороны то что в Оракле называется материализованными Видами в принципе можно назвать постоянными данными, так как они могут жить своей жизнью долго. Но там совсем другие принципы реализации. Собственно всё это не так уж и важно. Если Ваша система работает и приносит кому то пользу, то и слава богу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 09:09 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
serg99 нужно прикручивать объектный подход к модели данных БД. Суть объектного подхода - обойтись без моделирования данных. Он вообще отрицает наличие какой-либо МД. Вот есть объекты - с ними и работай напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 12:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модСуть объектного подхода - обойтись без моделирования данных. Он вообще отрицает наличие какой-либо МД. Вот есть объекты - с ними и работай напрямую. А как же быть с тем, что "самый плохой архитектор отличается от самой лучшей пчелы тем, что моделирует, а не работает на прямую"? Что же? Теперь получается, что объктники подобны пчелам? Т.е., возможно, у кого-то все еще объектный подход не тока не предполагает обхода МД, но, наоборот, предполагает ОМД или там ООМД. Ну, покрайней мере, в плане БД. Находят в объктном подходе какую-то другую суть. Более привлекательную, чем отмена МД. Опасапются доиграться, и отменить вместе с МД и самою БД. Не известно же докуда можно дойти в этих отменах. Вы же не предлагаете им запрететить таковую свободу мыстли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 12:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoЧто же? Теперь получается, что объктники подобны пчелам? Это вы сказали :) vadiminfoОпасапются доиграться, и отменить вместе с МД и самою БД. Не известно же докуда можно дойти в этих отменах. Вы же не предлагаете им запрететить таковую свободу мыстли? Они сами ее запретили. Ну зачем вам какая-то МД, если у вас есть персистентные объекты. Вот и работайте с ними их методами. Чего еще надо ? Или методов не хватает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 17:04 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модvadiminfoЧто же? Теперь получается, что объктники подобны пчелам? Это вы сказали :) Это я не сказал, а спросил. Чтобы уточнить как Вас следует понимать. _мод[Они сами ее запретили. А я до этого момента думал, что они наоборот всяко ея разрешали: налабали все для моделирования вообще (UML) и для БД в частности. Ну например, ООМД, а кое-кто и ОРМД. Там соответсвующего типа СУБД, которые наровят поддерживать такие МД. Ну и планировали вытеснить РМД. А оказывается они типа пятая колонна: на самом деле помогали РМД запретив объектные МД? Када они произвели запрет? _модНу зачем вам какая-то МД, если у вас есть персистентные объекты. Вот и работайте с ними их методами. Чего еще надо ? Или методов не хватает ? Ну лично мне какая никакая МД нужна вседа, как тока я имею дело с БД. Но желательно РМД. Но дело не во мне, а в том, что Вы типа говорите, что ООМД какая-то МД. И хотя я никада не был среди сторонников ООМД, я не могу без дополнительных обоснований не признавать, что у нее все же есть достоинства. И пока есть опасения что какими-то следует считать персистентные объекты и их методы сравнению с ООМД. Возможно, есть риски что это типа Вы их опускаете до файловых систем - которые были до появления БД. Ну там тоже персистентно хранились переменные, ну пусть и простого типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2011, 23:54 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модserg99 нужно прикручивать объектный подход к модели данных БД. Суть объектного подхода - обойтись без моделирования данных. Он вообще отрицает наличие какой-либо МД. Вот есть объекты - с ними и работай напрямую. Мне представляется что модель данных не связана с моделированием данных. Я вообще не очень понимаю зачем нужно моделировать данные и что это такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 02:09 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoНо дело не во мне, а в том, что Вы типа говорите, что ООМД какая-то МД. Я этого не говорил. ИМХО никакой ООМД вообще не существует. зы и причем тут файлы :) ззы и еще раз вопрос: если есть объекты и их методы, зачем еще какая-то МД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 09:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_мод, ну есть же модель объекта Объект{{собственные свойства}, {ассоциированные объекты}, {методы}, {события},...} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 09:27 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модИМХО никакой ООМД вообще не существует. Ну поскольку это отрицание можно отнести к слишком крайним, с котороми, возможно, даже не все противники ООМД могут согласиться, то, по видимому, это предположение придется считать очень сильным еще какое-то время. _модзы и причем тут файлы :) Файловые системы при том: что это их юзали в ИС, до появления БД. Ну типа у них МД не было. Хотя для общности подхода считают, что была но тока плоская. Ну типа считается что МД является фундаментом БД. А када фундамента нет, то считают, что есть тока нулевой по высоте. _модззы и еще раз вопрос: если есть объекты и их методы, зачем еще какая-то МД ? Ну, возможно, затем, что есть раз БД, то нужна и МД. Объекты и их методы могут повлиять на тип МД, но БД то они не отменяют. Без МД БД - все равно с МД, тока плоской, которую воспринять сложновато буит. Без приложений это вообще, возможно, приближается к тупому набору байтов и битов, ну как в файловых системах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 10:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
ViPRosну есть же модель объекта Объект{{собственные свойства}, {ассоциированные объекты}, {методы}, {события},...} Я под объектом понимал ессно его модель, а не реальный объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 12:01 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoНу, возможно, затем, что есть раз БД, то нужна и МД. БД нужна МД. Но при объектном подходе у вас нет БД, есть база объектов (БО) без МД. БО - просто хранилище объектов разных классов вместе с их методами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 12:06 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модБД нужна МД. Но при объектном подходе у вас нет БД, есть база объектов (БО) без МД. БО - просто хранилище объектов разных классов вместе с их методами Ну нам подходов, при которых нет БД, удавалось избежать, к счастью. А у объектников нет БД? Есть БО? А че не ХО (хранилище объектов), чтобы по честному звучало? Зачем там подслово "База" сохранили? Тем боллее может звучать как ОБ (овощная база), а это уже можно заподозрить как агитацию за КПРФ. Но все же, сбивает с толка то, что классы объектов - это опять типы данных. Ну те предопределенные , а эти типы создаваемые, ну у которых типа есть поведение. Но данные же. Потому могут найтись некоторые сторонники ООМД, которые не прильстятся на БО или там ХО. И вопрос об их попытках оттеснить РМД может быть еще рано еще окончательно сниамить с повестки дня. А Ваши идеи, они могут объявить Сусанинскими, т.е. стремящимися их завести в болото, хде бы они исчезли раз и на всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 12:56 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
vadiminfoА у объектников нет БД? Есть БО? А че не ХО (хранилище объектов), чтобы по честному звучало? Да хоть горшком :) vadiminfoНо все же, сбивает с толка то, что классы объектов - это опять типы данных. Ну те предопределенные , а эти типы создаваемые, ну у которых типа есть поведение. Но данные же. Да оно все данные, и плоские файлы и РБД и БО (ХО). vadiminfoПотому могут найтись некоторые сторонники ООМД, которые не прильстятся на БО или там ХО. А в этой т.н. ООМД не объекты хранятся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 14:44 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
_модДа хоть горшком :) Ну если Вам все равно, то, может быть, пока до выяснения новых обстоятельств, подойдет название - Кладбище объектов? _модДа оно все данные, и плоские файлы и РБД и БО (ХО). Ну вот видите. А ить я предупреждал, када Вы придумали эту идею с ХО. Не позарятся объектники на ее, ох не позарятся. Хачем им какое-то ХО, када у всех БД, если все равно нуно иметь дело с данными. _модА в этой т.н. ООМД не объекты хранятся ? В ООМД обязаны юзаться объекты в силу ея названия. И более того, они претендовали в начале 90-х на вытеснение РМД. Или Вы думаете что положительный ответ на подобный вопрос сразу отметет МД? А они в это время, к примеру, претендуют, что их тип МД подходит и для концептального и для логичекого уровня моделирования. Тада как РМД тока для логического. А Вы говорите что там МД никакая и вместо БД нечто, что моно назвать хоть горшком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 15:17 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
Уважаемые Г-да спорящие! Вы щас о чем? :) Остальным (ежели тут таковые остались) объясню, что к заявленному в теме сабжу этот спор отношения не имеет. А то иш... кладбище объектов... модели данных нет... ХО (хо-хо).... и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 15:37 |
|
||
|
OO расширения SQL.
|
|||
|---|---|---|---|
|
#18+
U-geneУважаемые Г-да спорящие! Вы щас о чем? :) Остальным (ежели тут таковые остались) объясню, что к заявленному в теме сабжу этот спор отношения не имеет. А то иш... кладбище объектов... модели данных нет... ХО (хо-хо).... и т.п. Это не спор, а уточнение важной новости. _мод выдал важные новости, что объектный подход запрещает МД, да и БД там нет. Если это правда, то конечно это достойно отдельного сабжа. Но он почему-то выбрал Ваш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2011, 15:50 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541920]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
150ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 539ms |

| 0 / 0 |
