Я унаследовал веб-приложение, которое строго использует хранимые процедуры для выполнения своей работы. Мне нравится подход, позволяющий разработчикам frontend разбивать базу данных, но я устал писать вызовы на SP с помощью простых SQL-запросов и хотел иметь что-то здравомыслящее. Хотя я искал достойную ORM (для Perl в этом случае, но это не относится к вопросу) с поддержкой хранимых процедур, я понял, что ORM может быть прямым противоречием с SP.Использование ORM с хранимыми процедурами, противоречие?
Мое мышление состоит в том, что SP, как и имя, уже говорит нам, процедуры, то есть представители процедурного программирования Pascal, фактически, что одно веб-приложение выглядит точно так же, как Pascal на стороне SQL-Server - многие функций, нет реального пространства имен. В отличие от этого, мы пытаемся выполнить большую часть нашего программирования OOP-стиля (или функционального, что является еще одной темой), поэтому на самом деле процедурные SP не очень подходят для чистых иерархий объектов. В то же время реляционная логика может быть легко преобразована в объекты (через ORM), но не процедурная, поэтому, вероятно, большинство ORM не поддерживают SPs очень хорошо (но я не эксперт в этой области). В некотором смысле, SP являются ORMs.
Так эти два вопроса:
- я прав предполагая, что мы лучше использовать простые таблицы при работе ОРМ?
- Существуют ли какие-либо «объектно-ориентированные хранимые процедуры» на рынке, основываясь на реляционной модели? Ясно, что существуют объектно-ориентированные базы данных, но меня интересует «ORM на стороне сервера».
Согласен. Создание ORM с хранимыми процедурами - безумие. –
Вы правы насчет триггеров; это простой способ повысить сложность управления. Но хранимые процедуры могут работать очень хорошо, как слой, который поддерживает базу данных, и обеспечивает ведение журнала и безопасность. – Andomar
@Andomar: Уровень доступа будет поддерживать целостность базы данных и обеспечивать ведение журнала и защиту. Хранимые процедуры не легки или особенно хороши в этих вещах. Они кажутся удобными для администраторов баз данных. В конечном счете, однако, они хрупки и трудно поддерживать. Я поручил клиентам много денег, чтобы их повесить, пока они * терпят неудачу * (неоднократно), чтобы просто найти источник для важной хранимой процедуры. –