„Przedwczesna optymalizacja jest źródłem wszelkiego zła (w większości zresztą) w programowaniu komputerowym” - Donald Knuth
Baza danych jest dokładnie taka; warstwa danych Twojej aplikacji. Jego zadaniem jest dostarczenie do aplikacji wymaganych danych i przechowywanie podanych danych. Twoja aplikacja to miejsce na kod, który faktycznie działa z danymi; wyświetlanie, sprawdzanie poprawności itp.
Chociaż sentyment w linii tytułowej jest godny podziwu i dokładny do pewnego punktu (drobiazgowe filtrowanie, rzutowanie, grupowanie itp. Powinno się pozostawić w przeważającej liczbie przypadków DB), definicja „studni” może być zamówienie. Istnieje wiele zadań, które SQL Server może wykonywać przy wysokim poziomie wydajności, ale zadania, które można wykazaćże SQL Server działa poprawnie w izolowany, powtarzalny sposób, jest bardzo mało. SQL Management Studio to świetne IDE dla bazy danych (szczególnie biorąc pod uwagę inne opcje, z którymi pracowałem, jak TOAD), ale ma swoje ograniczenia, po pierwsze, że prawie wszystko, czego używasz do tego (lub dowolnego kodu proceduralnego, który wykonujesz w DB poniżej) jest z definicji „efektem ubocznym” (zmiana stanu leżącego poza domeną przestrzeni pamięci twojego procesu). Ponadto kod proceduralny w SQL Server jest dopiero teraz, z najnowszymi IDE i narzędziami, w stanie zmierzyć sposób, w jaki zarządzany kod może korzystać z metryk pokrycia i analizy ścieżki (dzięki czemu możesz wykazać, że to właśnie w przypadku wystąpienia instrukcji X , Y i Z, a test X ma na celu spełnienie warunku i wykonanie tej połowy, podczas gdy Y i Z wykonają „else” . To z kolei zakłada, że masz test, który może ustawić bazę danych z określonym stanem początkowym, wykonać kod proceduralny bazy danych przez jakąś akcję i zapewnić oczekiwane wyniki.
Wszystko to jest o wiele trudniejsze i wymaga więcej niż rozwiązanie zapewniane przez większość warstw dostępu do danych; zakładamy, że warstwa danych (i, w tym przypadku, DAL) wiedzą, jak wykonać swoją pracę, jeśli otrzymają prawidłowe dane wejściowe, a następnie przetestują, czy kod zapewnia prawidłowe dane wejściowe. Trzymając kod proceduralny, taki jak SP i wyzwalacze poza DB, i zamiast tego robiąc takie rzeczy w kodzie aplikacji, wspomniany kod aplikacji jest znacznie łatwiejszy do wykonania.