powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как в РСУБД реализуется повторное использование кода?
25 сообщений из 29, страница 1 из 2
Как в РСУБД реализуется повторное использование кода?
    #38102795
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени.
Хотелось бы не дублировать код, отвечающий за автоматическое заполнение даты окончания периода по дате его начала, и за поиск значений атрибутов на нужный момент времени?
Как это сделать в РСУБД без динамического sql?
Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него? Или писать view с редактированием через instead of триггер?
В ООП я бы сделал интерфейс для получения нужных данных, и синглетон для методов заполнения и выборки.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38102806
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикКак в РСУБД реализуется повторное использование кода?Никак. СУБД разрабатывалось для хранения данных, а код в ней привязан сбоку. Поэтому все ручками, используя хорошую систему наименований. Ну и по производительности такой подход лучше.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103070
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, как такой убойный аргумент могли пропустить сторонники трехзвенки. Ни разу его во флеймах (2 vs 3 звена) не видел.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103217
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гхостик,

А чем вам динамический SQL не мил, собственно?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103228
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикВот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени.
Ну, способов хватает. Например, можно описать пользовательский индекс "период дат", в котором и реализовать необходимую механику. Повесил индекс на справочник - и всё, тот стал поддерживать периодические атрибуты. Можно привлечь те или иные механизмы шаблонов/генерации кода, можно динамический SQL.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103296
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Author the new oneА чем вам динамический SQL не мил, собственно?Как минимум - переносом проверки синтаксиса из compile-time в run-time. Далее, придется дополнительно хранить какие-то метаданные, хотя бы названия полей и таблиц. Но вообще, как возможное решение - да, принимается.

softwarerНапример, можно описать пользовательский индекс "период дат", в котором и реализовать необходимую механику. Повесил индекс на справочник - и всё, тот стал поддерживать периодические атрибуты.Что такое "пользовательский индекс"?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103359
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикЧто такое "пользовательский индекс"?
http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_5011.htm
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38103867
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне очень помогают функции (T-SQL). Немного тормознуто, но в 95% случаев - отличное решение.
Также есть ряд ХП, многократно используемых в различных местах кода.
Триггеров нет, ибо зло. :)

ps^ В проекте SQL-кода более 10Мб.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38105178
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я люблю вьюхи
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38105249
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для СУБД актуально не столько повторное использование кода, сколько повторное использование запросов к данным...
Часто (и из многих мест) используемые запросы оформляются вьюхами...
Естественно, пользовательские функции и хранимые процедуры тоже не отменяются...
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38106143
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я чертовски извиняюсь за оффтоп, но, можно уточнить, с каких именно пор запросы перестали быть кодом?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38109489
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикAuthor the new oneА чем вам динамический SQL не мил, собственно?Как минимум - переносом проверки синтаксиса из compile-time в run-time.
Зато получаешь все преимущества по "селективности" индексов (если у кого такое есть) и не привязан к "перестройке" собственно описанию таблиц (в моём случае классов).
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38110040
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[ Гхостик]Вот например, есть у меня два справочника с атрибутами, хранящимися в периодах времени.
Хотелось бы не дублировать код, отвечающий за автоматическое заполнение даты окончания периода по дате его начала, и за поиск значений атрибутов на нужный момент времени?
Как это сделать в РСУБД без динамического sql?


Никак.
Ты очень сильно продвинешся вперед в понимании субд, если поймеш, что это не нужно совсем, и даже вредно.

Ты не первый, кто делает такие ошибки, это достаточно часто бывает.


Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него?

Ну, такой вариант— лучшее, что можно сделать, если вообще делать.

Дело в том, что повторно использовать ты хочешь не код, а принцип работы, архитектуру. Это как в языках программирования паттерны проектирования.
ты же не пишешь библиотеку реализации паттернов на скажем java... Ты просто пишешь новый код на базе известных принципов.

Или писать view с редактированием через instead of триггер?


О Блин! Только не это...
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38110044
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new oneГхостик,

А чем вам динамический SQL не мил, собственно?

А не мил он собственно тем, что он как призрак, который незримо пролетает мимо и что-то делает. Хорошо, если он делает что-то нужное и правильно и быстро, а вот если неправильно, или не быстро, то его же ловить надо...
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38110233
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, мнения два - "копипасти дальше" (сюда входит и кодогенерация) и "используй динамический sql" (пользовательские индексы входят сюда). У обоих подходов есть свои минусы. У первого - при расширении (или исправлении) исходного кода обновление копий надо производить вручную, у второго - меньший контроль по сравнению со статическим кодом.

MasterZiv> Выделить абстрактную сущность "периодический справочник" и "наследоваться" от него?
Ну, такой вариант— лучшее, что можно сделать, если вообще делать.Он весьма ограничен - похожие паттерны поведения проявляются у сущностей, далеко не всегда связанных отношением именно наследования (уточнения классификации).

MasterZivО Блин! Только не это...Почему нет? Фактически, мы добавляем к исходным таблицам простое требование "первичный ключ должен быть одним полем" и пишем к каждой переходник. Единственный минус, который я вижу - это то, что instead of работает по одной записи (как row level trigger) и переводит массовый dml в построчный. Хотя, на практике я так делать не пробовал и вполне верю что могут выплыть подводные камни.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38117638
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно применить наследование и полиморфизм

ООП в реляционных СУБД
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38117742
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick ,

nicklobastovНо есть целая область в программировании так толком и не охваченная ООП. И эта область - базы данных. До сих по основную нишу занимают реляционные СУБД. Все попытки создать полноценную ООСУБД так и не увенчались успехом Разве: Объекты, SQL и Единая Архитектура Данных ?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38117925
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitРазве: Объекты, SQL и Единая Архитектура Данных ?
Там было слово "полноценную" ООСУБД, а не просто ООСУБД.
А так то ООСУБД были созданы более признанные таковыми, чем Каша.
Тут даже одно время был представитель одной из таковых: Versant.

Так или иначе, потеснить РМД им пока не удалось, как, впрочем, и ответ от РМДшников ОРСУБД, пока тоже больше юзанется, скорее всего, как РМД.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118054
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo ,

Вам виднее, чем отличается "полноценная" ООСУБД от неполноценной просто ООСУБД, и что делает InterSystems - производитель СУБД Caché - на сайте http://odbms.org/] http://odbms.org/ , наряду с Versant.

Ничто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений.
Пример работы с JDBC, используя классы пакета java.sql , можно найти здесь: 9631531
Заметьте - это просто классы, т.е. они не хранят данные в таблицах в привычном для СУБД понимании.

Или работать из традиционных языков программирования с данными в СУБД Caché объектно, не используя при этом никаких ORM, и тем не менее мочь в SQL использовать объектные расширения через стандартные ODBC/JDBC драйвера.

А разбивка классов по пакетам помогает сопровождать сложную их структуру .
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118062
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений.
Пример работы с JDBC, используя классы пакета java.sql , ... bla-bla

А так, что бы и без Java и без .Net - можно?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118118
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений.

Классы импортировать ничего не мешает, а вот работать с объектами - проблемы сериализации ..видимо ;)
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118155
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitВам виднее, чем отличается "полноценная" ООСУБД от неполноценной просто ООСУБД, ...

Просто Ваш ответ был таков, как будто автор текста отрицал наличие ООСУБД вообще (они существую более 10 лет как минмум).
Вы привели ссылку на Кашу, упомянув в ссыле SQL.
Скорее всего, настоящие ООсубдэшники полноценную ООСУБД противопоставляют любым намекам на РМД.

Да и вообще. Зачем Вы вспоминает про Кашу? У них у ООСУБДшников все таки там Гемстоуны всякие с Версантами: признаны в литературе хотя как ООСУБД. Например, упоминаются у Коннолли. Им ООСУБДшникам не откурутиться.
А про Кашу они скажут в последний момент, что она не ООСУБД, и все время потраченное на нее зря. Кому это надо?

servitНичто не мешает в СУБД Caché импортировать классы из Java или .NET и работать с ними полностью объектно на стороне СУБД, которая в данном случае выступает как сервер приложений.

Вот именно, как сервер приложений. А полноценная ООСУБД, скорее всего, предполагает некуея полноценную ООМД, а не поддержку ООП в качестве сервера приложений.



servit
Пример работы с JDBC, используя классы пакета java.sql , можно найти здесь: 9631531
Заметьте - это просто классы, т.е. они не хранят данные в таблицах в привычном для СУБД понимании.

Или работать из традиционных языков программирования с данными в СУБД Caché объектно, не используя при этом никаких ORM, и тем не менее мочь в SQL использовать объектные расширения через стандартные ODBC/JDBC драйвера.

А разбивка классов по пакетам помогает сопровождать сложную их структуру .

Ну если ООСУБДшники признают, что "мочь в SQL" имеет значение для них, то, наверное, это буит звучать как признание оными роли РМД большей, чем, вроде, они занимали до сих пор.
Тем более, что в ОРСУБД тоже есть объекты и тем более SQL.

Но если полноценные ООСУБД есть, то поскольку они не вытеснили РМД, до сих пор, то можно усомниться в их перспективе.

Тем более, если это Каша, то эре РМД от ООМД ждать угроз, скорее всего, не приходится.
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118425
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaА так, что бы и без Java и без .Net - можно?Конечно.
В СУБД Caché можно создавать свои классы, типы данных, наследуясь или не наследуясь от других классов: своих или уже предопределённых (системных). Эти классы с Java и .Net никак не связаны.
В этом плане СУБД Caché самодостаточна: есть готовые классы для работы с почтой, очередью сообщений, файлами, XML, SOAP и многим другим (ссылку на справочник классов приводил выше).
ОзверинКлассы импортировать ничего не мешает, а вот работать с объектами - проблемы сериализации ..видимо ;)Никаких проблем с сериализацией: СУБД Caché в данном случае выступает обычным клиентом по отношению к Java и .NET.

vadiminfo ,

Создаётся впечатление, что кто-то искусственно пытается разделить разработчиков БД на лагери по типу используемой модели.

Но зачем компромиссы, образно выражаясь: пытаться скрестить ежа с носорогом?

Разве плохо иметь в одной СУБД и ООП, и SQL, и NoSQL и не противопоставлять их друг другу, а использовать мощь каждого из них совместно?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118520
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://docs.intersystems.com/cache20122/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_model#GOBJ_model_fundamentals

Ааа!
Если один язык по сложности равнялся сумме двух - это не решение.Опять эктенты, сериализации, инстанцирование, персистентность....
Когда я просил "без Java и без .Net", я имел в виду не столько факт двух разных языков (синтаксисов, это как раз не проблема), скольок концептуальную сложность. - в т.ч. эти самые эктенты, сериализации, инстанцирование, персистентность и т.д.
Например, могу я метод объекта вызвать, не инстанцируя его в памяти?
...
Рейтинг: 0 / 0
Как в РСУБД реализуется повторное использование кода?
    #38118570
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaНапример, могу я метод объекта вызвать, не инстанцируя его в памяти?Метод объекта (экземпляра класса) - нет, а вот метод класса - можете: Методы класса и экземпляра класса .
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как в РСУБД реализуется повторное использование кода?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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