|
ООП на сервере
|
|||
---|---|---|---|
#18+
Пришел к нам на работу ДБ девелопер, мне типа в помощь (зачем - непойму, вродеб и так справляюсь) И начал толкать ООП подход ко всему, что в БД храниться... типа авторПонятие класса в базе данных: каждый класс соответствует таблице, запись таблицы является экземпляром класса. Каждый экземпляр класса должен однозначно идентифицироваться в таблице, поэтому в каждой таблице обязательно должно присутствовать поле – ключ объекта. В качестве ключа объекта очень желательно использовать целочисленное значение (суррогатный ключ). При этом данный ключ должен быть уникальным в пределах всей базы, а это значит, что для любого класса БД должен быть один общий предок, назовём его Object, а его ключевое целочисленное поле OID (Object IDentifier). Любой объект БД имеет текстовое наименование, по которому его идентифицирует пользователь в клиентском приложении, поле Name, а также каждый объект должен иметь поле, в котором хранится ссылка на его класс. В результате получаем: Код: plaintext 1. 2. 3. 4. 5. 6.
авторДля наследника с дополнительными атрибутами необходимо создавать дополнительную таблицу с названием, соответствующим названию класса и обязательным наличием поля OID int not null primary key. По этому полю данные класса наследника соединяются с классом родителем один-к-одному. Создадим класс наследник Subject c дополнительными атрибутами Address (адрес субъекта) и OwnerOID (ссылка на вышестоящего субъекта-владельца, например для склада это компания). Любую ссылку на объект нужно именовать в нотификации <Атрибут>OID, дабы отличить ссылки на объект от обычных числовых или других идентификаторов. Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
авторПри таком подходе метод Open класса Subject на сервере приложений перекрывает виртуальный метод класс предка и в начале кода вызывает родительский метод. Таким образом именно сервер приложений обеспечивает совокупный вызов всех методов Open от базового класса до текущего. автор2. Наследование методов реализовано в базе данных Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Или Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Впервые если честно с таким встречаюсь... Все мозги запарил... Кто-нить встречался с таким? Как его отфутболить поумнее? Лажа ведь какая-то Грит, при подходе с классами можно реализовать логику бизнес процесса... млин, в этот бред даже вникать неохота. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 14:56 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Напоминает мне одного человека. Как его зовут? Из какой фирмы пришел? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:01 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ну подход как похдод, видел и хуже :) единственное, что не надо его преподносить как единственно верный и пихать везде, где только можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:04 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Max-xaMНапоминает мне одного человека. Как его зовут? Из какой фирмы пришел? Я тебе по Мылу отвечу, в форуме не буду... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:06 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Shurgenz Max-xaMНапоминает мне одного человека. Как его зовут? Из какой фирмы пришел? Я тебе по Мылу отвечу, в форуме не буду... max-xam3k@mail.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:06 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Ray Dну подход как похдод, видел и хуже :) единственное, что не надо его преподносить как единственно верный и пихать везде, где только можно. вот вот... я только не пойму, как он собирается его продвигать в нашем проекте... а так может быть подход как подход ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:07 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Просто есть программисты-теоретики, а есть программисты-практики. Пусть попробует прикинуть сколько времени ему понадобится, чтобы имеющуюся БД переделать под новый механизм. А также пусть оценит скорость ее работы в случае, когда БД достигнет 20-30 гигов. Каждый раз обращаться к списку объектов-субъектов.... жуть! На прошой работе была не очень большая БД, которую один ботаник захотел переделать под аналогичную структуру. Это у него заняло пол-года, но ничего не сделал. Куча затыков, которые он не смог преодолеть. Результат: крутится та же база, что и была, ботаник научился ее поддерживать. Так что предложи ему сделать свою и посмотри когда он закончит или скажет что-то типа "У вас гранаты не той системы, ничего не получится". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:12 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Гибкость обратно пропорциональна производительности. Поэтому к ООП в базах данных нужно подходить очень вдумчиво. ООП подходит для конструкторов, когда конечный вид и даже архитектура законченного приложения не может быть предугадана заранее и сильно меняются от заказчика к заказчику. А для собственных внутренних систем ООП подходит только в случае, если вы собираетесь создавать несколько систем, базирующихся на одном ядре. ---------------------------------------------------------------- Да полно-те Вам. Не стоит благодарности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:17 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
я ему уже задаю вопросики... насколько я понимаю, при ООП при каждом инсерте инсертить придется на самом деле в 2+ таблиц (типа в таблицу связи с родителями тоже) Удалять и селектить то же самое... уже наводит тоску ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:18 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ООП плохо ложиться на реляционную БД. В теории все выглядит красиво, а на практике просто ужас: низкая производительность, проблемы с массовой обработкой записей и т.д. Вот у вас всего 2 уровень наследования, а уже 2 вставки на сущность Subject. Что будет, если иерархия будет n-уровневой? Вывод: хорошо для общего развития и небольших БД, не оперирующими миллионами записей. Если есть желание заюзать именно ООП, то нужно смотреть в сторону ОО СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:19 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
скажи ему так 1 что это замечательный подход для разработки принципиально новых проектов в которых требуется унификация для разработчика но не важны фактические показатели быстродействию системы и удобства для дизайна на уровне tsql 2 что на работе подчиненному надо выполнять поставленные задачи, а выбирать концепцию - удел руководителей проектов, обладающих соответствующей квалификацией, хотябы всилу того что всю ответсвенность за реализацию несет именно руководитель и в случае неудач виновать будет он. 3 В случае если нельзя но очень хочется, свои научные или эстетические изыски он может реализовать дома, в свободное от работы время (по другому говоря пусть тренируется на.. кошках) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:20 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ShurgenzУдалять и селектить то же самое... уже наводит тоску Ну, не все уж так тоскливо. Процедура вставки объекта будет содержать вызов процедуры вставки родительского объекта и INSERT в таблицу самого объекта. На счет подхода - применим, но с умом. И не обязательно в контексте: авторПри таком подходе метод Open класса Subject на сервере приложений перекрывает виртуальный метод класс предка и в начале кода вызывает родительский метод. Таким образом именно сервер приложений обеспечивает совокупный вызов всех методов Open от базового класса до текущего. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:21 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
DibrovГибкость обратно пропорциональна производительности. Золотые слова:) Еще со времен ассемблера пошло. Я бы еще добавил " и удобство разработки". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:22 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
WiRucООП плохо ложиться на реляционную БД. Ну, скажем так, я бы не стал называть приведенный подход "реализацией ООП в реляционной СУБД". IMHO, это некое развитие модели, создать одну таблицу документов на все возможные типы документов с кучей полей, допускающих NULL, или прикинуть, и создать некую модель (м.б. и напоминающей наследование) из нескольких таблиц с отношением 1-к-1 и полями NOT NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:25 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
pkarklinНу, не все уж так тоскливо. Процедура вставки объекта будет содержать вызов процедуры вставки родительского объекта и INSERT в таблицу самого объекта. Куда уж тоскливей:) Как минимум 1 лишняя вставка. А максимум не ограничен. И табличка Object родительская, на нее идут все вставки. Может такой затык при массированных вставках случиться:) А уж блокировки... А деадлоки, из-за появления "вертикальной" иерархии... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:29 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
pkarklin ShurgenzУдалять и селектить то же самое... уже наводит тоску Ну, не все уж так тоскливо. Процедура вставки объекта будет содержать вызов процедуры вставки родительского объекта и INSERT в таблицу самого объекта. На счет подхода - применим, но с умом. И не обязательно в контексте: авторПри таком подходе метод Open класса Subject на сервере приложений перекрывает виртуальный метод класс предка и в начале кода вызывает родительский метод. Таким образом именно сервер приложений обеспечивает совокупный вызов всех методов Open от базового класса до текущего. Может быть для справочных таблиц, в которых не так уж много записей.. А когда таблицы раздуты и они совсем немаленькие... Ведь для каждого объекта, чтоб выбрать информацию, нужно читать иногда из всех его родителей тоже, да + еще WorkGroup_Users - которая осуществляет многие-ко-многим меж ними... и помножить на степень наследования. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:30 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
pkarklin WiRucООП плохо ложиться на реляционную БД. Ну, скажем так, я бы не стал называть приведенный подход "реализацией ООП в реляционной СУБД". IMHO, это некое развитие модели, создать одну таблицу документов на все возможные типы документов с кучей полей, допускающих NULL, или прикинуть, и создать некую модель (м.б. и напоминающей наследование) из нескольких таблиц с отношением 1-к-1 и полями NOT NULL. По моему в Дейте как раз и описывалась подобная архитектура. Как раз в разделе объектно-ориентированного подхода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:34 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
WiRuc pkarklin WiRucООП плохо ложиться на реляционную БД. Ну, скажем так, я бы не стал называть приведенный подход "реализацией ООП в реляционной СУБД". IMHO, это некое развитие модели, создать одну таблицу документов на все возможные типы документов с кучей полей, допускающих NULL, или прикинуть, и создать некую модель (м.б. и напоминающей наследование) из нескольких таблиц с отношением 1-к-1 и полями NOT NULL. По моему в Дейте как раз и описывалась подобная архитектура. Как раз в разделе объектно-ориентированного подхода. И.... ссылка есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:37 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
Shurgenz WiRuc pkarklin WiRucООП плохо ложиться на реляционную БД. Ну, скажем так, я бы не стал называть приведенный подход "реализацией ООП в реляционной СУБД". IMHO, это некое развитие модели, создать одну таблицу документов на все возможные типы документов с кучей полей, допускающих NULL, или прикинуть, и создать некую модель (м.б. и напоминающей наследование) из нескольких таблиц с отношением 1-к-1 и полями NOT NULL. По моему в Дейте как раз и описывалась подобная архитектура. Как раз в разделе объектно-ориентированного подхода. И.... ссылка есть? У меня книга ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:39 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
WiRucКак минимум 1 лишняя вставка. А максимум не ограничен. И табличка Object родительская, на нее идут все вставки. Может такой затык при массированных вставках случиться:) А уж блокировки... А деадлоки, из-за появления "вертикальной" иерархии... Еще раз, я ни кого не пытаюсь убеждать, что это единмтвенно правильный подход. Я всего лишь говорю о возможности его существования. Когда я впревые увидел такой подход - тоже был немного озадачен, но потом таки убедился, что он имеет право на существование. Затыки при массированной вставке могут быть и без использования такого подхода. Впрочем как и блокировки, так и дедлоки (тьфу, тьфу)... ShurgenzМожет быть для справочных таблиц, в которых не так уж много записей.. А когда таблицы раздуты и они совсем немаленькие... Нате: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:46 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ShurgenzКак его отфутболить поумнее? Лажа ведь какая-тоНу, например, пусть вспомнит историю возникновения ООП, хотябы утрировано: мол сидела программерская контора и ваяла софт на заказ. Пока заказчиков было не много и заказы довольно сильно отличались друг от друга, всё шло гладко. Но вот, повалили заказчики кучей и заказы были как братья близнецы похожи друг на друга, за исключением небольших отличий - кинулись плодить подпрограммы (а ничего ещё кроме процедурного программизма не придумали на то время) и поняли, что так у них под исходники никаких носителей не хватит, да и поддержка такого кода, мяхко говоря - грубо выражаясь... Вот тут и взялись несколько энтузазистов за "облогараживание" процесса разработки... Так, или примерно так, и появилось ООП... Красота... Но, ИМХО, основная цель ООП как была, так и остается - снизить издержки на проектирование софта, но там, где ему не место (РСУБД как раз относится к тем местам, где оно слабо применимо). Действительно, есть ОО СУБД, вот на них это самое какава. ;-) Это как параллелизм: 9 женщин не смогут родить за 1 месяц ребенка, но вот за 9 вполне произвести 9. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:47 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ShurgenzРезать, к чортовой матери, не дожидаясь перитонита С такой схемой он вас похоронит. Наверняка практического опыта в реализации подобной подхода у него нет, и учиться он будет на вас, а это может дорого стоить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:54 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
ChA ShurgenzРезать, к чортовой матери, не дожидаясь перитонита С такой схемой он вас похоронит. Наверняка практического опыта в реализации подобной подхода у него нет, и учиться он будет на вас, а это может дорого стоить .+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:58 |
|
ООП на сервере
|
|||
---|---|---|---|
#18+
pkarklinЕще раз, я ни кого не пытаюсь убеждать, что это единмтвенно правильный подход. Я понимаю. У нас конструктивный диалог pkarklin Затыки при массированной вставке могут быть и без использования такого подхода. Впрочем как и блокировки, так и дедлоки (тьфу, тьфу)... Согласитесь, что в данном подходе затыки значительно усилены за счет того, что Object является бутылочным горлышком. Причем тормозить будет вся система в целом, а не скажем работа с накладными. pkarklin Нате: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
У вас промышленная эксплуатация такой системы? Давайте тогда подробности... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2007, 15:58 |
|
|
start [/forum/topic.php?fid=46&fpage=23&tid=1684644]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 40ms |
total: | 186ms |
0 / 0 |