Хранимые процедуры - Конец света

Перейти к панели управления >> Удалить или изменить программу и дважды щелкнуть Python XXX, чтобы изменить установку. Убедитесь, что компонент PIP установлен и установлен.

enter image description here [/g1]

30
задан Jeff Atwood 17 April 2009 в 23:48
поделиться

20 ответов

возможно, я являюсь слишком олдскульным, или слишком ленивым, или оба, но я должен не согласиться. Снова и снова хранимые процедуры 'спасли положение', потому что, когда незначительное изменение бэкенда или ошибка появляются , мы только должны исправить хранимую процедуру вместо того, чтобы обновить настольное приложение на нескольких дюжинах рабочих столов плюс веб-сервер. Кроме того, пользователи не прерваны. Это экономит много пользовательской стычки и усилий.

, Кроме того, некоторые операции DB просто будут более эффективными на сервере вместо того, чтобы идти назад и вперед по сети, особенно когда одна хранимая процедура называет другого, который называет другого и т.д. (с или без курсоров)

РЕДАКТИРОВАНИЕ: в архитектуре SOA смягчена проблема update-the-client-apps (спасибо maud-бабки), но хранимые процедуры, называя друг друга еще более эффективны, чем несколько сетевых распространений в прямом и обратном направлениях к уровню SOA. И обновление уровня SOA не всегда тривиально также.

42
ответ дан 27 November 2019 в 22:58
поделиться

Вот еще!

ORM, SPS, Представление, Волшебные палочки, или что бы то ни было.

Каждый "инструмент" имеет свое место в Вашем поясе, используйте инструменты, которые Вы имеете мудро.

единственная вещь, которая "изменилась" (действительно улучшенный) состоит в том, что некоторые ORMs имеют хорошие инструменты кэширования, уже испеченные в и MySql и Sql, 2005 + может обработать динамическое или специальное кэширование запроса/плана выполнения.

потенциальная потеря производительности от броска всех видов динамического sql в Вашем сервере дб была несколько смягчена. Его просто легче обойтись без помощи хранимых процедур теперь. Сохраненные Procs не идут никуда.

0
ответ дан 27 November 2019 в 22:58
поделиться

Хранимые процедуры / Представления / Функциями является все еще хороший "Интерфейс" к базе данных при выполнении нескольких корпоративных приложений, совместно использующих ту же базу данных.

App#1 - необходимо добавить новые отношения/поле или изменить nullable столбец на не пустой.

App#2-10 - May или не может использовать этот объект базы данных

первая вещь, которую я хочу сделать, проверить мои зависимости от объекта базы данных, чтобы определить, как его используемый и если я буду повреждать что-нибудь. Ну, угадайте то, что, если бы у Вас есть набор внешних запросов ЧЕРЕЗ ORM / SQL, Вы понятия не имели бы о зависимостях.

Это - единственный недостаток, я нашел прямой доступ наличия к таблицам.

Для единственного приложения с помощью единой базы данных, это действительно не проблема. Хотя все еще необходимо посмотреть на код приложения для зависимостей в дополнение к базе данных.

1
ответ дан 27 November 2019 в 22:58
поделиться

Часть этого управляется доступностью нереляционных хранилищ данных. SPS обычно подразумевает реляционную базу данных; ORM и Linq предлагают способность создать уровни абстракции, которые более богаты, чем предложения SQL и иногда лучшее соответствие для абстракций, которые мы используем в других частях дизайна ("проблема" несоответствия импеданса.)

И это можно также считать функцией архитектуры. SPS, по моему скромному мнению, соответствует вполне прилично классическому табличному приложению и может обеспечить удобный способ спроектировать уровень абстракции на уровне бизнес-объектов.

Они не так удобны, если Ваше хранилище данных является xml или аналитической базой данных.

1
ответ дан 27 November 2019 в 22:58
поделиться

Я мог бы добавить, что некоторая работа была лучше сделана на уровне DB.
, например, Кросс-вкладка приводит к SQL 2005, Рекурсивные запросы.

я соглашаюсь, что часть простого материала, такого как ВЫБОР, ВСТАВЬТЕ, ОБНОВИТЕ, УДАЛИТЕ, может заботиться о ORM, Linq.

Так, глупо сказать, что дни хранимых процедур закончены.
, Сколько людей действительно должно волноваться об изменениях платформы DB (SQL к Mysql, Oracle)?

1
ответ дан 27 November 2019 в 22:58
поделиться

SP обычно используется слишком скоро в процессе dev. Они должны использоваться, когда у Вас есть горлышко бутылки sql оператор. Например, Вам, вероятно, не нужны SP для deleteing или пользователи создания для приложения. Для большинства компаний, которые должны быть довольно статичными.

1
ответ дан 27 November 2019 в 22:58
поделиться

Могло скорее случиться так, что Jeff Atwood знает , хранимые процедуры будут вокруг навсегда и просто пытались стимулировать мысль и дебаты? Мне нравится думать, что то, что он действительно хотел бы сделать, должно записать убедительное эссе, наделенное правом "Хранимые процедуры, Продуманные Вредный" :)

1
ответ дан 27 November 2019 в 22:58
поделиться

Этот вопрос также выходит за край в один, отправил ранее сегодня .

1
ответ дан 27 November 2019 в 22:58
поделиться

Просто бросив мой небольшой совет здесь. Перед SQL 2005 (возможно, еще дальше, чем тот), SP был быстрее. Однако SQL Server, 2005 и действительно оптимизирован и они кэшируют Ваши запросы, когда Вы идете. На самом деле нам передали веб-приложение новому SQL-серверу. Приложение, запущенное путем выполнения замедляющийся для всех. Все брало "3/4 секунды" или 1 секунды для выполнения. Затем SQL начал компилировать наиболее используемый запрос, и все пошло от медленного до сверкания быстро.

, Конечно, мы подкачали сервер, в то время как было много людей, работающих на нем (который может объяснить, почему это было медленно сначала). Но доверяйте мне. SP не закончен. У них просто есть другое использование, чем быть связанным с приложением.

1
ответ дан 27 November 2019 в 22:58
поделиться

Некоторая положительная сторона делает с обеих сторон (как это было), но никто не сделал большую часть импликации безопасности. Оборачивание всего взаимодействия DB в сверхзвуковых средствах, можно заблокировать вниз DB так, чтобы любым взаимодействием с данными можно было плотно управлять.

при размышлении об Инкапсуляции можно рассматривать DB как объект и SPS как методы и свойства, которые выставляют функциональность объектов внешнему миру.

В некоторых больших средах разработки, разработчикам уровня UI и Business не разрешают около DB. Они указывают свои требования, и отдельная команда обеспечивает и интерфейс через SPS

существуют некоторые серьезные основания для того, чтобы не использовать SPS, и некоторые серьезные основания для того, чтобы только использовать их - зависит от Вашего приложения и Вашей среды. Но пребывайте в уверенности, что SPS не будет идти никуда в ближайшее время.

2
ответ дан 27 November 2019 в 22:58
поделиться

Это также зависит от того, что делают Ваши хранимые процедуры.

, Например, если это всего

select a from b where x = y

затем, хранимая процедура является, вероятно, излишеством. Но я лично склонен использовать сохраненный procs для возврата нескольких наборов результатов и результатов страницы в базе данных.

В моих случаях I видят преимущество для использования их. Это - дополнительный слой для контакта с, но если Вам организовали Ваш код хорошо и логичный, что я не вижу слишком много стычки лично.

А хороший проект с хранимыми процедурами всегда будет лучше, чем дрянной проект без и наоборот.

1
ответ дан 27 November 2019 в 22:58
поделиться

Судя по тусклому функционированию этого сайта, я собираюсь держать пари, что главное узкое место является базой данных.

я не убежден всегда, что LINQ 2 SQL ORM, который они используют, на один бит быстрее, чем sproc.

2
ответ дан 27 November 2019 в 22:58
поделиться

При объединении SPS с логикой с самой базой данных Вы эффективно преобразовываете DB в во что-то сродни Серверу приложений.

Обратный, когда это было молотком, который был самым удобным, это имело большой смысл. Но теперь с повсеместной доступностью Серверов приложений, имеет больше смысла усиливать их для вещей как централизованные логические и бизнес-правила и полагаться на DB для персистентности только.

2
ответ дан 27 November 2019 в 22:58
поделиться

Сохраненные procs полезны для материала, который является не CRUD - такой, как специализировано, логика кросс-таблицы, которая лучше всего выполняется в DB. Операции CRUD не должны использовать SPS, если они не автоматически сгенерированный вывод инструмента ORM как TableAdapters.

4
ответ дан 27 November 2019 в 22:58
поделиться

ORM и LINQ к SQL, кажется, современные тенденции для замены StoredProcs.

я лично использовал ORM и нахожу намного легче поддержать и поддерживать.

Некоторые причины указали для использования сохраненного procs где никогда законные причины для начала.

Вы действительно делаете правильное замечание о наличии хранимые процедуры при обслуживании нескольких приложений; они по существу становятся DAL, обычно с некоторой бизнес-логикой там.

3
ответ дан 27 November 2019 в 22:58
поделиться

SPS является, вероятно, способом пойти, если Вы ТОЛЬКО обеспокоены скоростью. Но если Вы заботитесь о масштабируемости или пригодности для обслуживания, SPS не мог бы быть лучшим. Наша архитектура основана на SPS и после 10 лет кода, очень трудно поддержать и очень ошибочный. Хороший картопостроитель ORM мог бы быть лучшим выбором.

9
ответ дан 27 November 2019 в 22:58
поделиться

Maintenability, Вероятно, SPS лучше. Если поддержание hundres SPS трудно, поддержание их в бизнес-компонентах уровня еще более трудно.

Производительность Кэширование запросов могло бы производить близкую производительность для SP. Но они не могут соответствовать производительности SPS через варианты баз данных в вариантах платформы. Сетевая задержка является другой проблемной областью, хотя разрыв уменьшает в наше время.

Отладка , вероятно, довольно легка с SPS, чем отладка бизнес-уровня + соединенный уровень дб.

может быть еще больше точек +ve с помощью SPS

, Но смотря на современную тенденцию запрограммировать, его довольно "мудрое" для движения с архитектурой уровня 'N' по большому количеству бизнес-причин, чем придерживаться "старого" основанного на SP подхода.

Хорошая система должна иметь соединение обоих. Вероятно, после принципа 80-20, 20 являющийся сверхзвуковым

7
ответ дан 27 November 2019 в 22:58
поделиться

Я продолжаю слышать аргумент, что SPS хорош, если у Вас есть несколько приложений, соединяющихся с базой данных или что это делает устранение ошибки легче.

ЭТО - то, ДЛЯ ЧЕГО УРОВЕНЬ СЛУЖБ!

Бизнес-логика входит в уровень служб, прикладная логика входит в приложение/веб-сайт.

намного более трудно отладить и поддержать сотни SPS (особенно, если там генерировал), чем это должно поддержать правильно написанный код, который говорит с DB через инструмент ORM.

10
ответ дан 27 November 2019 в 22:58
поделиться

Я сказал бы, что SPS не удобен в сопровождении, и они не масштабируются. Спросите любого разработчика, который должен был добавить функциональность к SP тяжелая система. Почему имеет половина Вашей логики в другом слое? Нет ничего для замены, просто не используйте их.

Погугленный это большое сообщение.

17
ответ дан 27 November 2019 в 22:58
поделиться

В современных системах параметризированные запросы компилируются и кэшируются в сервере, таким образом, они так же быстры как хранимая процедура. У них есть большинство тех же средств защиты также.

базы данных For, которые вручают отдельное приложение, имеет больше смысла иметь логику запроса там в соответствующем местоположении в коде. Если ничто иное это помогает сделать управление исходным кодом. Если Вы сохраняете хранимые процедуры на сервере отслеживающими их, может быстро стать путаницей. Кроме того, при использовании инструмента ORM, у Вас не может быть многого в способе реального SQL так или иначе.

, Если Ваша база данных вручает несколько различных приложений, то можно все еще хотеть использовать хранимые процедуры для осуществления бизнес-правил между приложением.

23
ответ дан 27 November 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: