|
|
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Вот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени. Хотелось бы не дублировать код, отвечающий за автоматическое заполнение даты окончания периода по дате его начала, и за поиск значений атрибутов на нужный момент времени? Как это сделать в РСУБД без динамического sql? Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него? Или писать view с редактированием через instead of триггер? В ООП я бы сделал интерфейс для получения нужных данных, и синглетон для методов заполнения и выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 07:06 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
ГхостикКак в РСУБД реализуется повторное использование кода?Никак. СУБД разрабатывалось для хранения данных, а код в ней привязан сбоку. Поэтому все ручками, используя хорошую систему наименований. Ну и по производительности такой подход лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 07:47 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Интересно, как такой убойный аргумент могли пропустить сторонники трехзвенки. Ни разу его во флеймах (2 vs 3 звена) не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 11:39 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Гхостик, А чем вам динамический SQL не мил, собственно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 12:47 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
ГхостикВот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени. Ну, способов хватает. Например, можно описать пользовательский индекс "период дат", в котором и реализовать необходимую механику. Повесил индекс на справочник - и всё, тот стал поддерживать периодические атрибуты. Можно привлечь те или иные механизмы шаблонов/генерации кода, можно динамический SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 12:50 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Author the new oneА чем вам динамический SQL не мил, собственно?Как минимум - переносом проверки синтаксиса из compile-time в run-time. Далее, придется дополнительно хранить какие-то метаданные, хотя бы названия полей и таблиц. Но вообще, как возможное решение - да, принимается. softwarerНапример, можно описать пользовательский индекс "период дат", в котором и реализовать необходимую механику. Повесил индекс на справочник - и всё, тот стал поддерживать периодические атрибуты.Что такое "пользовательский индекс"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 13:29 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
ГхостикЧто такое "пользовательский индекс"? http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_5011.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 14:00 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Мне очень помогают функции (T-SQL). Немного тормознуто, но в 95% случаев - отличное решение. Также есть ряд ХП, многократно используемых в различных местах кода. Триггеров нет, ибо зло. :) ps^ В проекте SQL-кода более 10Мб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 17:42 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Я люблю вьюхи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 16:50 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Для СУБД актуально не столько повторное использование кода, сколько повторное использование запросов к данным... Часто (и из многих мест) используемые запросы оформляются вьюхами... Естественно, пользовательские функции и хранимые процедуры тоже не отменяются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 17:25 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Я чертовски извиняюсь за оффтоп, но, можно уточнить, с каких именно пор запросы перестали быть кодом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2013, 12:16 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
ГхостикAuthor the new oneА чем вам динамический SQL не мил, собственно?Как минимум - переносом проверки синтаксиса из compile-time в run-time. Зато получаешь все преимущества по "селективности" индексов (если у кого такое есть) и не привязан к "перестройке" собственно описанию таблиц (в моём случае классов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 15:53 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
[ Гхостик]Вот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени. Хотелось бы не дублировать код, отвечающий за автоматическое заполнение даты окончания периода по дате его начала, и за поиск значений атрибутов на нужный момент времени? Как это сделать в РСУБД без динамического sql? Никак. Ты очень сильно продвинешся вперед в понимании субд, если поймеш, что это не нужно совсем, и даже вредно. Ты не первый, кто делает такие ошибки, это достаточно часто бывает. Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него? Ну, такой вариант— лучшее, что можно сделать, если вообще делать. Дело в том, что повторно использовать ты хочешь не код, а принцип работы, архитектуру. Это как в языках программирования паттерны проектирования. ты же не пишешь библиотеку реализации паттернов на скажем java... Ты просто пишешь новый код на базе известных принципов. Или писать view с редактированием через instead of триггер? О Блин! Только не это... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 22:18 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Author the new oneГхостик, А чем вам динамический SQL не мил, собственно? А не мил он собственно тем, что он как призрак, который незримо пролетает мимо и что-то делает. Хорошо, если он делает что-то нужное и правильно и быстро, а вот если неправильно, или не быстро, то его же ловить надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2013, 22:22 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
В общем, мнения два - "копипасти дальше" (сюда входит и кодогенерация) и "используй динамический sql" (пользовательские индексы входят сюда). У обоих подходов есть свои минусы. У первого - при расширении (или исправлении) исходного кода обновление копий надо производить вручную, у второго - меньший контроль по сравнению со статическим кодом. MasterZiv> Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него? Ну, такой вариант— лучшее, что можно сделать, если вообще делать.Он весьма ограничен - похожие паттерны поведения проявляются у сущностей, далеко не всегда связанных отношением именно наследования (уточнения классификации). MasterZivО Блин! Только не это...Почему нет? Фактически, мы добавляем к исходным таблицам простое требование "первичный ключ должен быть одним полем" и пишем к каждой переходник. Единственный минус, который я вижу - это то, что instead of работает по одной записи (как row level trigger) и переводит массовый dml в построчный. Хотя, на практике я так делать не пробовал и вполне верю что могут выплыть подводные камни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 07:56 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 11:44 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
Old Nick , nicklobastovНо есть целая область в программировании так толком и не охваченная ООП. И эта область - базы данных. До сих по основную нишу занимают реляционные СУБД. Все попытки создать полноценную ООСУБД так и не увенчались успехом Разве: Объекты, SQL и Единая Архитектура Данных ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 12:19 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
servitРазве: Объекты, SQL и Единая Архитектура Данных ? Там было слово "полноценную" ООСУБД, а не просто ООСУБД. А так то ООСУБД были созданы более признанные таковыми, чем Каша. Тут даже одно время был представитель одной из таковых: Versant. Так или иначе, потеснить РМД им пока не удалось, как, впрочем, и ответ от РМДшников ОРСУБД, пока тоже больше юзанется, скорее всего, как РМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 13:24 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
vadiminfo , Вам виднее, чем отличается "полноценная" ООСУБД от неполноценной просто ООСУБД, и что делает InterSystems - производитель СУБД Caché - на сайте http://odbms.org/] http://odbms.org/ , наряду с Versant. Ничто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений. Пример работы с JDBC, используя классы пакета java.sql , можно найти здесь: 9631531 Заметьте - это просто классы, т.е. они не хранят данные в таблицах в привычном для СУБД понимании. Или работать из традиционных языков программирования с данными в СУБД Caché объектно, не используя при этом никаких ORM, и тем не менее мочь в SQL использовать объектные расширения через стандартные ODBC/JDBC драйвера. А разбивка классов по пакетам помогает сопровождать сложную их структуру . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 14:21 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений. Пример работы с JDBC, используя классы пакета java.sql , ... bla-bla А так, что бы и без Java и без .Net - можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 14:27 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений. Классы импортировать ничего не мешает, а вот работать с объектами - проблемы сериализации ..видимо ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 15:03 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
servitВам виднее, чем отличается "полноценная" ООСУБД от неполноценной просто ООСУБД, ... Просто Ваш ответ был таков, как будто автор текста отрицал наличие ООСУБД вообще (они существую более 10 лет как минмум). Вы привели ссылку на Кашу, упомянув в ссыле SQL. Скорее всего, настоящие ООсубдэшники полноценную ООСУБД противопоставляют любым намекам на РМД. Да и вообще. Зачем Вы вспоминает про Кашу? У них у ООСУБДшников все таки там Гемстоуны всякие с Версантами: признаны в литературе хотя как ООСУБД. Например, упоминаются у Коннолли. Им ООСУБДшникам не откурутиться. А про Кашу они скажут в последний момент, что она не ООСУБД, и все время потраченное на нее зря. Кому это надо? servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений. Вот именно, как сервер приложений. А полноценная ООСУБД, скорее всего, предполагает некуея полноценную ООМД, а не поддержку ООП в качестве сервера приложений. servit Пример работы с JDBC, используя классы пакета java.sql , можно найти здесь: 9631531 Заметьте - это просто классы, т.е. они не хранят данные в таблицах в привычном для СУБД понимании. Или работать из традиционных языков программирования с данными в СУБД Caché объектно, не используя при этом никаких ORM, и тем не менее мочь в SQL использовать объектные расширения через стандартные ODBC/JDBC драйвера. А разбивка классов по пакетам помогает сопровождать сложную их структуру . Ну если ООСУБДшники признают, что "мочь в SQL" имеет значение для них, то, наверное, это буит звучать как признание оными роли РМД большей, чем, вроде, они занимали до сих пор. Тем более, что в ОРСУБД тоже есть объекты и тем более SQL. Но если полноценные ООСУБД есть, то поскольку они не вытеснили РМД, до сих пор, то можно усомниться в их перспективе. Тем более, если это Каша, то эре РМД от ООМД ждать угроз, скорее всего, не приходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 15:18 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
IzyaА так, что бы и без Java и без .Net - можно?Конечно. В СУБД Caché можно создавать свои классы, типы данных, наследуясь или не наследуясь от других классов: своих или уже предопределённых (системных). Эти классы с Java и .Net никак не связаны. В этом плане СУБД Caché самодостаточна: есть готовые классы для работы с почтой, очередью сообщений, файлами, XML, SOAP и многим другим (ссылку на справочник классов приводил выше). ОзверинКлассы импортировать ничего не мешает, а вот работать с объектами - проблемы сериализации ..видимо ;)Никаких проблем с сериализацией: СУБД Caché в данном случае выступает обычным клиентом по отношению к Java и .NET. vadiminfo , Создаётся впечатление, что кто-то искусственно пытается разделить разработчиков БД на лагери по типу используемой модели. Но зачем компромиссы, образно выражаясь: пытаться скрестить ежа с носорогом? Разве плохо иметь в одной СУБД и ООП, и SQL, и NoSQL и не противопоставлять их друг другу, а использовать мощь каждого из них совместно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 17:14 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
http://docs.intersystems.com/cache20122/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_model#GOBJ_model_fundamentals Ааа! Если один язык по сложности равнялся сумме двух - это не решение.Опять эктенты, сериализации, инстанцирование, персистентность.... Когда я просил "без Java и без .Net", я имел в виду не столько факт двух разных языков (синтаксисов, это как раз не проблема), скольок концептуальную сложность. - в т.ч. эти самые эктенты, сериализации, инстанцирование, персистентность и т.д. Например, могу я метод объекта вызвать, не инстанцируя его в памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 18:05 |
|
||
|
Как в РСУБД реализуется повторное использование кода?
|
|||
|---|---|---|---|
|
#18+
IzyaНапример, могу я метод объекта вызвать, не инстанцируя его в памяти?Метод объекта (экземпляра класса) - нет, а вот метод класса - можете: Методы класса и экземпляра класса . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 18:32 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38102795&tid=1541398]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 356ms |

| 0 / 0 |
