Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какви са плюсовете и минусите на запазването на SQL в Stored Procs срещу Code

Не съм фен на съхранените процедури

Съхранените процедури са ПО-поддържаеми, защото:* Не е нужно да прекомпилирате вашето C# приложение, когато искате да промените някакъв SQL

Така или иначе ще го прекомпилирате, когато типовете данни се променят, или искате да върнете допълнителна колона, или каквото и да е. Броят пъти, когато можете „прозрачно“ да промените SQL отдолу на приложението си, като цяло е доста малък

  • В крайна сметка ще използвате повторно SQL код.

Езиците за програмиране, включително C#, имат това невероятно нещо, наречено функция. Това означава, че можете да извикате един и същ блок код от множество места! Удивително! След това можете да поставите повторно използваемия SQL код в един от тях или ако искате да получите наистина високи технологии, можете да използвате библиотека, която го прави вместо вас. Вярвам, че се наричат ​​Обектно релационни картографи и са доста често срещани в наши дни.

Повторението на кода е най-лошото нещо, което можете да направите, когато се опитвате да създадете поддържащо приложение!

Съгласен съм, ето защо storedprocs са нещо лошо. Много по-лесно е да преработите и разложите (разбиете на по-малки части) код във функции, отколкото SQL в... блокове от SQL?

Имате 4 уеб сървъра и куп приложения за Windows, които използват един и същ SQL код. Сега разбрахте, че има малък проблем със SQL кода, така че предпочитате да промените процеса на едно място или да натиснете кода на всички уеб сървърите, преинсталирайте всички приложения за настолни компютри (кликване може да помогне) във всички кутии на Windows

Защо вашите приложения за Windows се свързват директно към централна база данни? Това изглежда като ОГРОМНА дупка в сигурността точно там и пречка, тъй като изключва кеширане от страна на сървъра. Не трябва ли да се свързват чрез уеб услуга или подобно на вашите уеб сървъри?

И така, натиснете 1 нов sproc или 4 нови уеб сървъра?

В този случай е е по-лесно е да натиснете един нов sproc, но според моя опит 95% от „избутаните промени“ засягат кода, а не базата данни. Ако изпращате 20 неща към уеб сървърите през този месец и 1 към базата данни, едва ли губите много, ако вместо това изпратите 21 неща към уеб сървърите и нула в базата данни.

По-лесен преглед на кода.

Можете ли да обясните как? Не разбирам това. Особено като се има предвид, че sprocs вероятно не са в контрола на източника и следователно не могат да бъдат достъпни чрез уеб-базирани SCM браузъри и т.н.

Още минуси:

Storedprocs живеят в базата данни, която се появява на външния свят като черна кутия. Прости неща като желанието да ги поставите в контрола на източника се превръщат в кошмар.

Съществува и въпросът за чистото усилие. Може да има смисъл да разбиете всичко на милион нива, ако се опитвате да оправдаете пред вашия главен изпълнителен директор защо просто им струва 7 милиона долара за изграждането на някои форуми, но в противен случай създаването на storedproc за всяко малко нещо е просто допълнителна магарешка работа без полза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да:Създайте тригер за дата на промяна на автоматично актуализиране със SQL Server 2008

  2. Как мога да разбера дали SQLexception е изхвърлен поради нарушение на външния ключ?

  3. хеширане на SQL ред?

  4. Мога ли да се свържа със SQL Server чрез удостоверяване на Windows от уеб приложение Java EE?

  5. С ПРОВЕРКА НА ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ, последвано от ПРОВЕРКА НА ОГРАНИЧЕНИЕ спрямо ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ